Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker の Tag を信じないでください #cloudnativejp / Cloud ...

y_taka_23
September 11, 2018

Docker の Tag を信じないでください #cloudnativejp / Cloud Native Meetup Tokyo 4th

Cloud Native Meetup Tokyo #4 で使用したスライドです。CNCF プロジェクトのひとつ、Notary についてその役割とアーキテクチャを解説しています。Notary は何らかのデータを安全に配信するためのフレームワークで、同じく CNCF プロジェクトの The Update Framework (TUF) に基づいています。特に Docker の Tag と Digest を結びつけることで Docker image が改竄されていないことを保証でき、Docker Hub でも利用可能です。

イベント概要:https://cloudnative.connpass.com/event/97281/

y_taka_23

September 11, 2018
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

  1. イメージの Tag と Digest • Tag は内容の同一性を保証しない ◦ 同じ Tag

    で違うイメージを上書きできる ◦ サーバの乗っ取られると中身が詐称される • Tag の代わりに Digest も使える ◦ イメージの Manifest から一意に生成 ◦ user/image@digest の形式で指定 ◦ docker pull や Dockerfile 内の FROM で使用可 #cloudnativejp
  2. Notary is 何? • 検証可能なデータ配信基盤 ◦ The Update Framework (TUF)

    を実装 ◦ サーバや鍵の危殆化が考慮されている • Docker Content Trust ◦ Tag と Digest の対応を保証 ◦ Docker Client に Notary Client が統合済み ◦ 検証されていない Tag が「見えなく」なる #cloudnativejp
  3. TUF の実装 • 4 種類のメタデータを保存 ◦ root : 他のメタデータ用の信頼済み鍵リスト ◦

    targets : Docker レポジトリのハッシュ値 ◦ snapshot : 上記ふたつのハッシュ値 ◦ timestamp : snapshot のハッシュ値 • 各メタデータを別々の鍵で署名 ◦ ユーザ側と Notary サーバ側に分散して保存 #cloudnativejp
  4. root と target の生成・署名 Docker Client #cloudnativejp Notary Server Notary

    Signer Docker Registry TUF DB Key DB root.json targets.json
  5. TUF の実装(再掲) • 4 種類のメタデータを保存 ◦ root : 他のメタデータ用の信頼済み鍵リスト ◦

    targets : Docker レポジトリのハッシュ値 ◦ snapshot : 上記ふたつのハッシュ値 ◦ timestamp : snapshot のハッシュ値 • 各メタデータを別々の鍵で署名 ◦ ユーザ側と Notary サーバ側に分散して保存 #cloudnativejp
  6. snapshot と timestamp の生成 Docker Client #cloudnativejp Notary Server Notary

    Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
  7. snapshot と timestamp の署名 Docker Client #cloudnativejp Notary Server Notary

    Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
  8. 安全性のための仕掛け • 依存関係にある複数のメタデータ ◦ それぞれ独立に署名することで危険性を減らす ◦ target 署名鍵のみ流出してもイメージ詐称不可 • 信頼サーバ・署名サーバの分離

    ◦ 信頼サーバ に侵入されても鍵自体は流出しない ◦ 署名サーバを HSM 化するとより安全 • ただし root 署名鍵が流出するとアウト #cloudnativejp
  9. まとめ • Docker イメージの同一性 ◦ Tag だけでは同一性が保証できない ◦ Digest をもっとうまく使いたい

    • Notary による Content Trust ◦ Digest と Tag を紐づけイメージの詐称を阻止 • TUF を利用した安全性の担保 ◦ 複数の署名を使用、さらに署名サーバを隔離 #cloudnativejp