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.3k
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
36
AWS WAF Anti-DDoS Protection in 5 Minutes!
takakuni
0
610
AWS Backup Air-Gapped Vaults with Multi-Party Approval Explained in 5 Minutes!
takakuni
0
310
5min GuardDuty Extended Threat Detection EKS
takakuni
0
380
OpenAI models overview 202505
takakuni
0
440
[Sample] Validate hyperlink for Amazon Bedrock Data Automation
takakuni
0
300
Classmethod AI Talks #13
takakuni
0
430
About Extended Threat Detection in Amazon GuardDuty
takakuni
0
410
SageMaker Hyperpod 101 #regrowth_sapporo
takakuni
1
430
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
A Tale of Four Properties
chriscoyier
163
24k
KATA
mclloyd
PRO
35
15k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
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