Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
re:Invent 2023 コンテナイメージスキャンどうなった!?
Search
takakuni
December 14, 2023
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
re:Invent 2023 コンテナイメージスキャンどうなった!?
takakuni
December 14, 2023
More Decks by takakuni
See All by takakuni
ECS Express Mode
takakuni
0
38
AWS WAF Anti-DDoS Protection in 5 Minutes!
takakuni
0
660
AWS Backup Air-Gapped Vaults with Multi-Party Approval Explained in 5 Minutes!
takakuni
0
340
5min GuardDuty Extended Threat Detection EKS
takakuni
0
400
OpenAI models overview 202505
takakuni
0
470
[Sample] Validate hyperlink for Amazon Bedrock Data Automation
takakuni
0
330
Classmethod AI Talks #13
takakuni
0
460
About Extended Threat Detection in Amazon GuardDuty
takakuni
0
440
SageMaker Hyperpod 101 #regrowth_sapporo
takakuni
1
460
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Curious Case for Waylosing
cassininazir
1
450
We Are The Robots
honzajavorek
0
290
The agentic SEO stack - context over prompts
schlessera
0
860
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
420
How to build a perfect <img>
jonoalderson
1
5.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Done Done
chrislema
186
16k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Transcript
re:Invent 2023 コンテナイメージスキャンどうなった!? AWS 事業本部コンサルティング部 たかくに 2023.12.14 1
2 NIST SP 800-190
3 NIST SP 800-190 ‧イメージのリスク ‧レジストリのリスク ‧オーケストレータのリスク ‧コンテナのリスク ‧ ホスト
OS のリスク
4 NIST SP 800-190 ‧イメージのリスク ‧レジストリのリスク ‧オーケストレータのリスク ‧コンテナのリスク ‧ ホスト
OS のリスク
5 NIST SP 800-190 イメージのリスク ‧イメージの脆弱性 ‧イメージの設定の不備 ‧埋め込まれたマルウェア ‧埋め込まれた平⽂の秘密情報 ‧信頼できないイメージの使⽤
6 イメージのリスク ‧イメージの脆弱性 → イメージスキャン ‧イメージの設定の不備 → イメージの作り⽅ ‧埋め込まれたマルウェア →
マルウェアスキャン ‧埋め込まれた平⽂の秘密情報 → Systems Manager ‧信頼できないイメージの使⽤ → イメージの署名 NIST SP 800-190
7 イメージのリスク ‧イメージの脆弱性 → イメージスキャン ‧イメージの設定の不備 → イメージの作り⽅ ‧埋め込まれたマルウェア →
マルウェアスキャン ‧埋め込まれた平⽂の秘密情報 → Systems Manager ‧信頼できないイメージの使⽤ → イメージの署名 NIST SP 800-190
8 re: Invent 2023 以前の状況
9 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector
v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料 初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回
10 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector
v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料 初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回
11 ベーシックスキャンの CI / CD パターン
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
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
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/
15 今回のアップデートで...
16 (再掲)コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector
v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める 頑張れば組み込める☆ 料金 無料 初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回
17 コンテナイメージスキャン ECR ベーシックスキャン Inspector v2 拡張スキャン エンジン Clair Inspector
v2 スキャン範囲 OS のみ OS, 言語パッケージ スキャン頻度 手動 / 自動 初回プッシュ時 / 継続的 CI / CD 組み込める よりシンプルに組み込める☆ 料金 無料 初回スキャン:$ 0.11 / 1イメージ 再スキャン:$ 0.01 / 1回
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/
19 Inspector v2 の CI / CD パターン
20 Inspector CI/CD Support アップデート内容 ‧inspector-scan API ‧inspector-sbomgen ‧Inspector v2
の有効化不要 ‧Jenkins, TeamCity とマネージドに統合
21 inspector-scan API
‧AWS CLI, SDK で利⽤可能 ‧ScanSbom アクション ‧SBOM ファイルから脆弱性を検出 ※ SBOM(Software
Bill of Materials) ソフトウェア部品表:ソフトウェアに含まれるコン ポーネントや依存関係を⼀覧化したリスト 22 inspector-scan API
23 inspector-sbomgen
Amazon Inspector SBOM Generator ‧SBOM 作成ツール ‧CycloneDX 1.5 形式での出⼒に対応 ‧対応リソース
‧コンテナイメージ ‧localhost ‧バイナリ(Go か Rust でコンパイルされたもの) 24 inspector-sbomgen
推奨スペック ‧4x core CPU ‧8 GB RAM その他 ‧Linux(AMD, ARM)コンテナのみ対応
‧プライベートレジストリ対応 ‧docker login または環境変数 25 Amazon Inspector SBOM Generator
26 あれ?Inspector v2 って SBOM Export できるよね?
Inspector v2 SBOM Export ‧Inspector v2 で管理しているリソースの SBOM ⽣成 ‧Organizations
や リソース単位でエクスポート可能 ‧Athena, QuickSight で分析可能 27 あれ?Inspector v2 って SBOM Export できるよね?
Inspector v2 SBOM Export ‧Inspector v2 で管理しているリソースの SBOM ⽣成 ‧Organizations
や リソース単位でエクスポート可能 ‧Athena, QuickSight で分析可能 ‧出⼒形式 ‧CycloneDX 1.4(1.5 が必要) ‧SPDX 2.3 28 あれ?Inspector v2 って SBOM Export できるよね?
29 Inspector v2 の有効化不要
IAM のスキーマが Inspector v2 と別管理 ‧Inspector v2 ‧inspector2:CreateSbomExport など ‧Inspector
Scan ‧inspector-scan:ScanSbom 30 Inspector v2 の有効化不要
31 Jenkins, TeamCity とマネージドに統合
32 Jenkins, TeamCity とマネージドに統合 https://aws.amazon.com/jp/blogs/aws/three-new-capabilities-for-amazon-inspector-broaden-the-realm-of-vulnerability-scanning-for-workloads/
33 やってみた
34 Inspector v2 の CI / CD パターン
35 ‧AWS CLI バージョン上げ ‧ビルドしたイメージタグ情報の受け渡し ‧トリアージどうするのか Codebuild(スキャン)で意識すること
利⽤可能なバージョン 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 バージョン上げ
アクションレベル変数の利⽤(ビルドステージ) 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
アクションレベル変数の利⽤(ビルドステージ) 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
39 トリアージどうするのか
40 トリアージどうするのか
41 トリアージどうするのか
42 トリアージどうするのか aws inspector-scan scan-sbom --sbom file:///tmp/sbom.json --output-format INSPECTOR --query
'sbom.vulnerabilities[?severity==`critical` || severity==`high`]' critical または high のみフィルターする例
44