Slide 1

Slide 1 text

AWSのコンテナイメージスキャン⼿法をまとめてみた AWS事業本部コンサルティング部 2022/08/04 たかくに 1

Slide 2

Slide 2 text

2 ⾃⼰紹介

Slide 3

Slide 3 text

3 ⾃⼰紹介 名前︓たかくに 所属︓AWS事業本部コンサルティング部 ⼊社︓2022年1⽉にジョイン 好きなAWSサービス︓Amazon VPC Twitter︓@takakuni_

Slide 4

Slide 4 text

4 シフトレフトって何︖ 世は シフトレフト時代 ・製品開発などで⾏われる特定の⼯程を通常よりも前倒しして実施すること。 ・今回のコンテナイメージスキャンなどの脆弱性テスト つまりどういうこと︖ 「運⽤でカバー」を減らしていく動き 「What CISOs Are Saying: Shifting Left」より引⽤

Slide 5

Slide 5 text

5 なんで流⾏っているの︖ 世は シフトレフト時代 「How Snyk helps satisfy White House cybersecurity recommendations」より引⽤ Instance On-premise Server or 開発者の守備範囲が広がって来た。

Slide 6

Slide 6 text

6 なんで流⾏っているの︖ 世は シフトレフト時代 「How Snyk helps satisfy White House cybersecurity recommendations」より引⽤ Instance On-premise Server or AWS Fargate Amazon ECS Amazon EKS AWS CDK AWS CloudFormation Terraform 開発者の守備範囲が広がって来た。

Slide 7

Slide 7 text

7 なんで流⾏っているの︖ 世は シフトレフト時代 開発者の守備範囲が広がって来た。 「How Snyk helps satisfy White House cybersecurity recommendations」より引⽤ Instance On-premise Server or AWS Fargate Amazon ECS Amazon EKS AWS CDK AWS CloudFormation Terraform 得意︖

Slide 8

Slide 8 text

8 OWASP Top10 「OWASP Top 10 - 2021 へようこそ」より引⽤ A04:2021-安全が確認されない不安な設計 2021年に新設されたカテゴリーで、設計上の⽋陥に関するリスクに焦点を当てています。 ⼀業界として、我々が純粋に「シフトレフト」することを望むのであれば、脅威モデリングや、安全な 設計パターンと原則、また、リファレンス・アーキテクチャをもっと利⽤していくことが必要です。 安全が確認されない不安な設計は完璧な実装によって修正されることはありません。定義上、(つまり設 計⾃体が問題なので)特定の攻撃に対して必要なセキュリティ対策が作られることがありえないからです。

Slide 9

Slide 9 text

9 第⼀歩として、 コンテナセキュリティ

Slide 10

Slide 10 text

10 今⽇話すところ 世は シフトレフト時代 ・コンテナイメージスキャン ※コンテナラインタイムセキュリティは話しません。 「How Snyk helps satisfy White House cybersecurity recommendations」より引⽤ Instance On-premise Server or AWS Fargate Amazon ECS Amazon EKS AWS CDK AWS CloudFormation Terraform

Slide 11

Slide 11 text

11 コンテナイメージスキャン⼿法 世は 今回は次の⼿法を説明 ・ECR イメージスキャン(ベーシックスキャン) ・ECR イメージスキャン(拡張スキャン) ・docker scanコマンド ・Snyk Container

Slide 12

Slide 12 text

12 ECR イメージスキャン(ベーシックスキャン) 世は ・ECRで⾏うスキャン ・Clair プロジェクトの共通脆弱性識別⼦ (CVE) データベースを使⽤ ・⼿動スキャンと⾃動スキャン(Scan on Push)が選べる ・⼿動スキャンは24時間に1回まで ・無料

Slide 13

Slide 13 text

13 ECR イメージスキャン(拡張スキャン) 世は ・Inspectorがサービスロールを使ってスキャン ・ 複数のデータベース(Snyk, GitHub Advisory Databaseなど)を使⽤ ・⾃動スキャンのみサポート ・(デフォルト)初回Push時 、関連する新しい CVE が公開されたとき ・有料

Slide 14

Slide 14 text

14 ベーシックスキャンと拡張スキャンを⽐較 世は 拡張スキャンの場合 ・OSに加えてプログラミング⾔語パッケージもスキャン対象 ・対応OSも若⼲異なる。(SUSEをサポート) ・ AWS Security Hub、Organizationsとの統合 ベーシックスキャンの場合 ・導⼊のしやすさ(Inspectorの有無) ・出⼒結果(InformationalやUndefinedをどうするか)

Slide 15

Slide 15 text

15 docker scan コマンド 世は ・docker-scan-pluginを利⽤したスキャン ・ローカルのDockerイメージに対して⾏う、CLIベースのスキャン ・ Snykのデータベースを使⽤ ・無料(Docker Hubの1ユーザーあたり毎⽉10回まで) 「Docker ローカルイメージに対するぜい弱性スキャン」より引⽤

Slide 16

Slide 16 text

16 Docker Hub 世は ・Docker Hub上で脆弱性スキャン ・イメージスキャンの仕様は、docker scanと同じ ・有料(Pro、Team、Business プランで利⽤可能) 「Docker Hub のぜい弱性スキャン」より引⽤

Slide 17

Slide 17 text

17 まとめてみた ベーシックスキャン 拡張スキャン docker scan Docker Hub 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk スキャン範囲 OSのみ OS, ⾔語パッケージ OS, ⾔語パッケージ OS, ⾔語パッケージ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能

Slide 18

Slide 18 text

18 まとめてみた ベーシックスキャン 拡張スキャン docker scan Docker Hub 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk スキャン範囲 OSのみ OS, ⾔語パッケージ OS, ⾔語パッケージ OS, ⾔語パッケージ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能

Slide 19

Slide 19 text

19 Snykってなんぞや︖

Slide 20

Slide 20 text

20 Snyk 世は 開発者が利⽤するために作られたセキュリティプラットフォーム 次の製品を提供 ・Snyk Container︓コンテナのイメージスキャン ・Snyk Code︓プログラミングコードの脆弱性スキャン ・Snyk Open Source︓オープンソースライブラリの脆弱性スキャン ・Snyk IaC︓Infrastructure as Codeの静的スキャン 「Snyk Press Kit」より引⽤

Slide 21

Slide 21 text

21 Snyk 世は 開発者が利⽤するために作られたセキュリティプラットフォーム 次の製品を提供 ・Snyk Container︓コンテナのイメージスキャン ・Snyk Code︓プログラミングコードの脆弱性スキャン ・Snyk Open Source︓オープンソースライブラリの脆弱性スキャン ・Snyk IaC︓Infrastructure as Codeの静的スキャン 「Snyk Press Kit」より引⽤

Slide 22

Slide 22 text

22 まとめてみた ベーシックスキャン 拡張スキャン docker scan Docker Hub Snyk Container 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk ︖ スキャン範囲 OSのみ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ ︖ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 ︖ 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能 ︖ New

Slide 23

Slide 23 text

23 Snyk Container 世は ・Snyk CLIでローカルスキャン or コンテナレジストリと統合して⾃動スキャン ・ECRと統合する場合はIAMロールを使⽤する ・Snykのデータベースを使⽤ ・OSに加えてプログラミング⾔語パッケージもスキャン対象 ・「⽇次」や「週次」の定期スキャン、新しい CVE が公開された場合 ・無料と有料プランがある(無料プランは100回/⽉までテスト可能)

Slide 24

Slide 24 text

24 まとめてみた ベーシックスキャン 拡張スキャン docker scan Docker Hub Snyk Container 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk Snyk スキャン範囲 OSのみ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 ⼿動/⾃動 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能 無料/有料 ※無料100回/⽉

Slide 25

Slide 25 text

25 疑問その1 ベーシックスキャン 拡張スキャン docker scan Docker Hub Snyk Container 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk Snyk スキャン範囲 OSのみ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 ⼿動/⾃動 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能 無料/有料 ※無料100回/⽉ 🤔 同じデータベース︖

Slide 26

Slide 26 text

26 Yes # docker scan コマンド docker scan public.ecr.aws/docker/library/neo4j > result_docker.txt # Snyk CLIを使⽤したSnyk Container コマンド snyk container public.ecr.aws/docker/library/neo4j --app-vulns > result_snyk.txt # 差分 diff result_docker.txt result_snyk.txt # 出⼒結果(抜粋) 409a410,411 > Learn more: https://docs.snyk.io/products/snyk-container/getting-around-the- snyk-container-ui/base-image-detection > コマンドで出⼒結果を確認

Slide 27

Slide 27 text

27 疑問その2 ベーシックスキャン 拡張スキャン docker scan Docker Hub Snyk Container 脆弱性 データベース Clair Snyk, GitHubなど Snyk Snyk Snyk スキャン範囲 OSのみ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ OS ⾔語パッケージ スキャン頻度 ⼿動/⾃動 ⾃動 ⼿動 ⾃動 ⼿動/⾃動 料⾦ 無料 有料 無料 ※10回/⽉ 有料 ※プランの機能 無料/有料 ※無料100回/⽉ 🤔 同じデータベース︖

Slide 28

Slide 28 text

28 No 拡張スキャンは、Snykのデータベースを⼀部利⽤している 【拡張スキャン︓全体】 緊急︓10、⾼︓9、中︓20、低︓6 【拡張スキャン︓Snykのみ】 緊急︓2、⾼︓2、中︓9、低︓2 【Snyk Container】 緊急︓2、⾼︓98、中︓7、低︓46

Slide 29

Slide 29 text

29 まとめ 世は ・Dockerイメージスキャンにはさまざまな⽅法がある ・docker scanとSnyk Containerは同じ出⼒結果 ・利⽤形態や無料枠に注意 ・ECR拡張スキャンの⼀部にSnykが使われている ・スキャン結果に優劣があるわけではない ・「量より質」は忘れてはならない ・紹介したスキャン⽅法以外にも「Sysdig」や「Trivy」も有名だよ

Slide 30

Slide 30 text

30