■ はじめに
Amazon ECR は、簡単に 脆弱性診断サービス Amazon Inspector が 使えるので、そのことについて、メモっておく
目次
【1】Amazon Inspector 1)AWS ECR との連携 【2】脆弱性診断の On/Off 1)Terraform の場合 【3】スキャン開始タイミング 1)AWS CLI による開始について 【4】スキャン結果の確認方法 1)エラーになった場合の対処法 【5】使用上の注意 1)結果が出るまで時間が掛かる 2)スキャン回数制限について 3)全結果を見てからエラー対応した方がいい 【6】補足:別の脆弱性診断ツール 1)Qualys(クオリス) 2)Trivy 3)Dockle
【1】Amazon Inspector
* 脆弱性診断を行うAWSサービス
1)AWS ECR との連携
* AWS ECR と統合されており、コンテナイメージを 既知のソフトウェアの脆弱性やネットワークへの意図しない公開がないかスキャンし 自動的に検出してくれる
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/image-scanning.html
【2】脆弱性診断の On/Off
* めちゃめちゃ簡単にできる
AWS Management Console
[1] 対象のECRリポジトリを選択 [2] [Edit]ボタン押下 [3] 「Image scan settings」欄の「Scan on push」を ON(Disabled⇒Enabled)にする [4] [Save]ボタン押下
1)Terraform の場合
https://dk521123.hatenablog.com/entry/2023/05/23/002314
resource "aws_ecr_repository" "demo_ecr_repository" { name = "demo-ecr-repository" # The tag mutability setting for the repository. # MUTABLE or IMMUTABLE image_tag_mutability = "MUTABLE" image_scanning_configuration { scan_on_push = true # ★ここで Scan を ON にする } }
【3】スキャン開始タイミング
* Onにした場合、ECR Push後に脆弱性診断が実施される
1)AWS CLI による開始について
* start-image-scan が用意されている => ただし、制限がありそう (下記「【5】使用上の注意」の「2)スキャン回数制限について」参照)
Amazon ECR ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2024/01/05/000000
【4】スキャン結果の確認方法
AWS Management Console
[1] 対象のECRリポジトリを選択 [2] 「Vulnerabilities」欄の「See findings」リンク押下 => 終わっていれば、結果がでているはず => エラーがなければ、「No scan findings <改行> Scan status: COMPLETE」が表示 => 下記「【5】使用上の注意」の「1)結果が出るまで時間が掛かる」参照
1)エラーになった場合の対処法
[1] 脆弱性結果の一覧で、脆弱性のリンク(e.g. 「CVE-2023-7104」)を押下 => Inspector のページに飛ばされる [2] 以下の項目を確認するといいかも、、、
Items | Explanation | Example |
---|---|---|
Affected Package (影響しているパッケージ) | どこで発生しているかを記載 | /opt/lib/xxx.jar |
Remediation (修復) | 対応案を記載 | apt-get update && apt-get upgrade |
なお、以下でも同様なことが確認できる [3] 「Title」欄のリンク(e.g. 「CVE-2023-7104-libsqlite3-0」)を押下 [4] 「Finding ID」のリンク(e.g. 「arn;aws:inspector2:<AWSRegion>:...」)を押下 [5] JSONの結果の中で「remediation」を確認 => 今回の場合、「"remediation": "apt-get update && apt-get upgrade"」 => 他にも、「"remediation": "Update xxx to X.X.X"」(xxx: ライブラリ名)などがある
【例】対応前:Dockerfile
FROM flink:1.18.0
【例】対応後:Dockerfile
FROM flink:1.18.0 RUN apt update -y && apt upgrade -y
補足:「Remediation」について
* 「"remediation": "Update xxx to X.X.X"」(xxx: ライブラリ名)と 記載されている場合、「Affected Package」を見て、 どのライブラリかを確認した方がいい => 例えば、「/opt/lib/xxx.jar」に記載されていて、 そのライブラリが自分で独自に入れている場合は、 そのライブラリの更新だけで済むかも。 => OSに同梱されているライブラリなら、 apt update/upgradeだけで済むかも
【5】使用上の注意
1)結果が出るまで時間が掛かる
* 「Vulnerabilities」欄の「See findings」リンク押下後に スキャン中の場合、「Scan status: PENDING」など表示されるので 待つ必要がある(パッ見、終わった感じがするので)
2)スキャン回数制限について
* 24時間で1回だけしかスキャン開始されないという制限がある
https://docs.aws.amazon.com/cli/latest/reference/ecr/start-image-scan.html#description
より抜粋 Starts an image vulnerability scan. [訳] イメージの脆弱性スキャンを開始する An image scan can only be started once per 24 hours on an individual image. [訳]イメージスキャンは、独立したイメージで、24時間に1回のみだけである This limit includes if an image was scanned on initial push. [訳] この制限は、もし初期Pushでスキャンされたイメージも含んでいます。
3)全結果を見てからエラー対応した方がいい
* 例えば、 エラー High で「"remediation": "Update xxx to 0.17.0"」とあり エラー Medium で「"remediation": "Update xxx to 0.13.0"」(xxx: ライブラリ名) という場合があった。 => このケースだと、High から見ていくので良かったが、 逆もあり得る(Highの方が低いバージョン)かと思う(?)ので エラーは一通り見た後に、どのバージョンまであげるかを 考えておいた方がいいかなっと思った。
【6】補足:別の脆弱性診断ツール
1)Qualys(クオリス)
* 類似な脆弱性診断サービスとして、Qualys(クオリス)を紹介。
Qualys とは?
* 各種ITシステムの脆弱性を発見・管理するためのクラウドサービス
ドキュメント
* 以下に日本語のドキュメントがある
https://www.qualys.com/documentation/jp/
2)Trivy
* コンテナイメージやGit Repository等の脆弱性をスキャンできるツール
https://www.designet.co.jp/ossinfo/kubernetes/trivy/
https://engineering.nifty.co.jp/blog/14208
https://qiita.com/keomo/items/ff2c76696fe182141389
3)Dockle
* Dockerイメージのベストプラクティス準拠しているか チェックしてくれるツール
https://qiita.com/tomoyamachi/items/bb6ac5788bb734c91282
https://dev.classmethod.jp/articles/devio2023-dockle/
関連記事
Amazon ECR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/22/165711
Amazon ECR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/26/142645
Amazon ECR ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2024/01/05/000000
Amazon ECR ~ boto3 ~
https://dk521123.hatenablog.com/entry/2024/01/31/014010
Amazon ECR ~ Dockerイメージを Pull & Push ~
https://dk521123.hatenablog.com/entry/2023/12/02/024631
Amazon ECR ~ 別アカウントからInspector2を操作するには ~
https://dk521123.hatenablog.com/entry/2024/05/16/212100
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Amazon ECR でのトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/05/24/000000
脆弱性エラー対応時に役立ったDockerコマンド
https://dk521123.hatenablog.com/entry/2024/02/03/020736