Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Docker の Tag を 信じないでください チェシャ猫 (@y_taka_23) Cloud Native Meetup Tokyo #4 (2018/09/11) #cloudnativejp
Slide 2
Slide 2 text
nginx:latest #cloudnativejp
Slide 3
Slide 3 text
nginx:1.15.3 #cloudnativejp
Slide 4
Slide 4 text
イメージの Tag と Digest ● Tag は内容の同一性を保証しない ○ 同じ Tag で違うイメージを上書きできる ○ サーバの乗っ取られると中身が詐称される ● Tag の代わりに Digest も使える ○ イメージの Manifest から一意に生成 ○ user/image@digest の形式で指定 ○ docker pull や Dockerfile 内の FROM で使用可 #cloudnativejp
Slide 5
Slide 5 text
nginx:1.15.3 #cloudnativejp
Slide 6
Slide 6 text
nginx@sha256:24a0c4b4a4c0eb97a1aabb8e2 9f18e917d05abfe1b7a7c07857230879ce7d3d3 #cloudnativejp
Slide 7
Slide 7 text
長い #cloudnativejp
Slide 8
Slide 8 text
中身がわからん #cloudnativejp
Slide 9
Slide 9 text
Notary https://github.com/theupdateframework/notary #cloudnativejp
Slide 10
Slide 10 text
#cloudnativejp
Slide 11
Slide 11 text
Notary is 何? ● 検証可能なデータ配信基盤 ○ The Update Framework (TUF) を実装 ○ サーバや鍵の危殆化が考慮されている ● Docker Content Trust ○ Tag と Digest の対応を保証 ○ Docker Client に Notary Client が統合済み ○ 検証されていない Tag が「見えなく」なる #cloudnativejp
Slide 12
Slide 12 text
https://speakerdeck.com/ytaka23/cloud-native-meetup-tokyo-2nd #cloudnativejp
Slide 13
Slide 13 text
Notary のアーキテクチャ Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB
Slide 14
Slide 14 text
Notary 信頼サーバ + メタデータ Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB
Slide 15
Slide 15 text
Notary 署名サーバ + 署名鍵 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB
Slide 16
Slide 16 text
TUF の実装 ● 4 種類のメタデータを保存 ○ root : 他のメタデータ用の信頼済み鍵リスト ○ targets : Docker レポジトリのハッシュ値 ○ snapshot : 上記ふたつのハッシュ値 ○ timestamp : snapshot のハッシュ値 ● 各メタデータを別々の鍵で署名 ○ ユーザ側と Notary サーバ側に分散して保存 #cloudnativejp
Slide 17
Slide 17 text
署名用の鍵 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root targets snapshot timestamp
Slide 18
Slide 18 text
Image の Digest の取得 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB push
Slide 19
Slide 19 text
Image の Digest の取得 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB Digest
Slide 20
Slide 20 text
root と target の生成・署名 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root.json targets.json
Slide 21
Slide 21 text
TUF の実装(再掲) ● 4 種類のメタデータを保存 ○ root : 他のメタデータ用の信頼済み鍵リスト ○ targets : Docker レポジトリのハッシュ値 ○ snapshot : 上記ふたつのハッシュ値 ○ timestamp : snapshot のハッシュ値 ● 各メタデータを別々の鍵で署名 ○ ユーザ側と Notary サーバ側に分散して保存 #cloudnativejp
Slide 22
Slide 22 text
snapshot と timestamp の生成 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
Slide 23
Slide 23 text
snapshot と timestamp の署名 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
Slide 24
Slide 24 text
署名済メタデータの保存 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
Slide 25
Slide 25 text
署名済メタデータの保存 Docker Client #cloudnativejp Notary Server Notary Signer Docker Registry TUF DB Key DB root.json targets.json snapshot.json timestamp.json
Slide 26
Slide 26 text
安全性のための仕掛け ● 依存関係にある複数のメタデータ ○ それぞれ独立に署名することで危険性を減らす ○ target 署名鍵のみ流出してもイメージ詐称不可 ● 信頼サーバ・署名サーバの分離 ○ 信頼サーバ に侵入されても鍵自体は流出しない ○ 署名サーバを HSM 化するとより安全 ● ただし root 署名鍵が流出するとアウト #cloudnativejp
Slide 27
Slide 27 text
まとめ ● Docker イメージの同一性 ○ Tag だけでは同一性が保証できない ○ Digest をもっとうまく使いたい ● Notary による Content Trust ○ Digest と Tag を紐づけイメージの詐称を阻止 ● TUF を利用した安全性の担保 ○ 複数の署名を使用、さらに署名サーバを隔離 #cloudnativejp
Slide 28
Slide 28 text
What a Notable Notary! Presented by チェシャ猫 (@y_taka_23) #cloudnativejp