Slide 1

Slide 1 text

re:Invent 2023 コンテナイメージスキャンどうなった!? AWS 事業本部コンサルティング部 たかくに 2023.12.14 1

Slide 2

Slide 2 text

2 NIST SP 800-190

Slide 3

Slide 3 text

3 NIST SP 800-190 ‧イメージのリスク ‧レジストリのリスク ‧オーケストレータのリスク ‧コンテナのリスク ‧ ホスト OS のリスク

Slide 4

Slide 4 text

4 NIST SP 800-190 ‧イメージのリスク ‧レジストリのリスク ‧オーケストレータのリスク ‧コンテナのリスク ‧ ホスト OS のリスク

Slide 5

Slide 5 text

5 NIST SP 800-190 イメージのリスク ‧イメージの脆弱性 ‧イメージの設定の不備 ‧埋め込まれたマルウェア ‧埋め込まれた平⽂の秘密情報 ‧信頼できないイメージの使⽤

Slide 6

Slide 6 text

6 イメージのリスク ‧イメージの脆弱性 → イメージスキャン ‧イメージの設定の不備 → イメージの作り⽅ ‧埋め込まれたマルウェア → マルウェアスキャン ‧埋め込まれた平⽂の秘密情報 → Systems Manager ‧信頼できないイメージの使⽤ → イメージの署名 NIST SP 800-190

Slide 7

Slide 7 text

7 イメージのリスク ‧イメージの脆弱性 → イメージスキャン ‧イメージの設定の不備 → イメージの作り⽅ ‧埋め込まれたマルウェア → マルウェアスキャン ‧埋め込まれた平⽂の秘密情報 → Systems Manager ‧信頼できないイメージの使⽤ → イメージの署名 NIST SP 800-190

Slide 8

Slide 8 text

8 re: Invent 2023 以前の状況

Slide 9

Slide 9 text

9 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料   初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回

Slide 10

Slide 10 text

10 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料   初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回

Slide 11

Slide 11 text

11 ベーシックスキャンの CI / CD パターン

Slide 12

Slide 12 text

12 ベーシックスキャンの CI / CD パターン version: '0.2' phases: # 抜粋 build: commands: # 抜粋 # イメージスキャンの実施 - aws ecr start-image-scan --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID # ecr wait で結果を待つ - aws ecr wait image-scan-complete --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID # 結果の取得 - aws ecr describe-image-scan-findings --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID --query 'imageScanFindings.findings' --output text

Slide 13

Slide 13 text

13 ベーシックスキャンの CI / CD パターン version: '0.2' phases: # 抜粋 build: commands: # 抜粋 # イメージスキャンの実施 - aws ecr start-image-scan --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID # ecr wait で結果を待つ - aws ecr wait image-scan-complete --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID # 結果の取得 - aws ecr describe-image-scan-findings --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID --query 'imageScanFindings.findings' --output text

Slide 14

Slide 14 text

14 Inspector v2 の CI / CD パターン https://aws.amazon.com/jp/blogs/security/use-amazon-inspector-to-manage-your-build-and-deploy-pipelines-for-containerized-applications/

Slide 15

Slide 15 text

15 今回のアップデートで...

Slide 16

Slide 16 text

16 (再掲)コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料   初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回

Slide 17

Slide 17 text

17 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める よりシンプルに組み込める☆ 料金 無料   初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回

Slide 18

Slide 18 text

18 (再掲)Inspector v2 の CI / CD パターン https://aws.amazon.com/jp/blogs/security/use-amazon-inspector-to-manage-your-build-and-deploy-pipelines-for-containerized-applications/

Slide 19

Slide 19 text

19 Inspector v2 の CI / CD パターン

Slide 20

Slide 20 text

20 Inspector CI/CD Support アップデート内容 ‧inspector-scan API ‧inspector-sbomgen ‧Inspector v2 の有効化不要 ‧Jenkins, TeamCity とマネージドに統合

Slide 21

Slide 21 text

21 inspector-scan API

Slide 22

Slide 22 text

‧AWS CLI, SDK で利⽤可能 ‧ScanSbom アクション  ‧SBOM ファイルから脆弱性を検出 ※ SBOM(Software Bill of Materials) ソフトウェア部品表:ソフトウェアに含まれるコン ポーネントや依存関係を⼀覧化したリスト 22 inspector-scan API

Slide 23

Slide 23 text

23 inspector-sbomgen

Slide 24

Slide 24 text

Amazon Inspector SBOM Generator ‧SBOM 作成ツール ‧CycloneDX 1.5 形式での出⼒に対応 ‧対応リソース  ‧コンテナイメージ  ‧localhost  ‧バイナリ(Go か Rust でコンパイルされたもの) 24 inspector-sbomgen

Slide 25

Slide 25 text

推奨スペック ‧4x core CPU ‧8 GB RAM その他 ‧Linux(AMD, ARM)コンテナのみ対応 ‧プライベートレジストリ対応  ‧docker login または環境変数 25 Amazon Inspector SBOM Generator

Slide 26

Slide 26 text

26 あれ?Inspector v2 って SBOM Export できるよね?

Slide 27

Slide 27 text

Inspector v2 SBOM Export ‧Inspector v2 で管理しているリソースの SBOM ⽣成 ‧Organizations や リソース単位でエクスポート可能 ‧Athena, QuickSight で分析可能 27 あれ?Inspector v2 って SBOM Export できるよね?

Slide 28

Slide 28 text

Inspector v2 SBOM Export ‧Inspector v2 で管理しているリソースの SBOM ⽣成 ‧Organizations や リソース単位でエクスポート可能 ‧Athena, QuickSight で分析可能 ‧出⼒形式  ‧CycloneDX 1.4(1.5 が必要)  ‧SPDX 2.3 28 あれ?Inspector v2 って SBOM Export できるよね?

Slide 29

Slide 29 text

29 Inspector v2 の有効化不要

Slide 30

Slide 30 text

IAM のスキーマが Inspector v2 と別管理 ‧Inspector v2 ‧inspector2:CreateSbomExport など ‧Inspector Scan  ‧inspector-scan:ScanSbom 30 Inspector v2 の有効化不要

Slide 31

Slide 31 text

31 Jenkins, TeamCity とマネージドに統合

Slide 32

Slide 32 text

32 Jenkins, TeamCity とマネージドに統合 https://aws.amazon.com/jp/blogs/aws/three-new-capabilities-for-amazon-inspector-broaden-the-realm-of-vulnerability-scanning-for-workloads/

Slide 33

Slide 33 text

33 やってみた

Slide 34

Slide 34 text

34 Inspector v2 の CI / CD パターン

Slide 35

Slide 35 text

35 ‧AWS CLI バージョン上げ ‧ビルドしたイメージタグ情報の受け渡し ‧トリアージどうするのか Codebuild(スキャン)で意識すること

Slide 36

Slide 36 text

利⽤可能なバージョン  AWS CLI v2:2.13.38 〜  AWS CLI v1:1.30.5 〜 マネージドイメージ(5.0-23.07.28)  AWS CLI v2:2.13.35 〜 36 AWS CLI バージョン上げ

Slide 37

Slide 37 text

アクションレベル変数の利⽤(ビルドステージ) 37 ビルドしたイメージタグ情報の受け渡し version: 0.2 env: # 省略 exported-variables: - IMAGE_URL phases: pre_build: commands: - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-10) - IMAGE_TAG=${COMMIT_HASH:=latest} # 省略 post_build: commands: # 省略 - IMAGE_URL=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

Slide 38

Slide 38 text

アクションレベル変数の利⽤(ビルドステージ) 38 ビルドしたイメージタグ情報の受け渡し version: 0.2 env: # 省略 exported-variables: - IMAGE_URL phases: pre_build: commands: - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-10) - IMAGE_TAG=${COMMIT_HASH:=latest} # 省略 post_build: commands: # 省略 - IMAGE_URL=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

Slide 39

Slide 39 text

39 トリアージどうするのか

Slide 40

Slide 40 text

40 トリアージどうするのか

Slide 41

Slide 41 text

41 トリアージどうするのか

Slide 42

Slide 42 text

42 トリアージどうするのか aws inspector-scan scan-sbom --sbom file:///tmp/sbom.json --output-format INSPECTOR --query 'sbom.vulnerabilities[?severity==`critical` || severity==`high`]' critical または high のみフィルターする例

Slide 43

Slide 43 text

44