[速報] 拡張イメージスキャンが CI/CD パイプラインに組み込めるようになりました!#AWSreInvent
こんにちは! AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。
re:Invent 2023 でラスベガスにきています。最終日のキーノートにて、 拡張イメージスキャンが CI/CD パイプラインに組み込めるようになりました!
今までどんな状態だったか
まず初めに、AWS で提供されているコンテナイメージスキャンをおさらいしてみます。
AWS では、 ECR ベーシックスキャンと、Inspector v2 を利用した拡張スキャンの2種類が提供されています。
オンデマンドスキャン
使っている DB 等、いくつか違いがあるのですが、「CI に組み込めるか?」と言った目線だと、 ベーシックスキャンはオンデマンドスキャンが可能なため、 CI に組み込めて、拡張スキャンは対応していなかったため、組み込めませんでした。
追記
厳密には組み込めたのですが、複数のサービスを組み合わせて実装するため複雑なことをしていました。そのあたりは以下のブログで話していますので、もしよろしければご覧ください。
以下は BuildSpec でベーシックスキャンを CI に組み込む際のスクリプト例です。
version: '0.2' phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - IMAGE_TAG=$CODEBUILD_RESOLVED_SOURCE_VERSION build: commands: - docker build -t $ECR_REPO_URI:latest . - docker tag $ECR_REPO_URI:latest $ECR_REPO_URI:$IMAGE_TAG post_build: commands: # レジストリへのプッシュ - docker push $ECR_REPO_URI:latest - docker push $ECR_REPO_URI:$IMAGE_TAG - IMAGE_ID=$(aws ecr list-images --repository-name $ECR_REPO_NAME --query 'imageIds[?imageTag==`latest`].imageDigest' --output text) # イメージスキャンの実施 - 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 # 結果の取得 - FINDINGS=$(aws ecr describe-image-scan-findings --repository-name $ECR_REPO_NAME --image-id imageDigest=$IMAGE_ID --query 'imageScanFindings.findings' --output text) - echo 'Check for ECR console to see vulnerability status of your image repository' - '[ -z "$FINDINGS" ] || exit 55'
以前 LT をしたことがあるので、その他の違いについては以下をご覧ください。
今回のアップデート
今回のアップデートで、拡張スキャンも CI/CD パイプラインに組み込むことができるようになりました。
動作としては直接コンテナイメージをスキャンするのではなく、 inspector-scan
API と inspector-sbomgen
を利用して、 SBOM からスキャンを行うようです。 AWS SDK と AWS CLI にて実行可能で、 Jenkins と TeamCity に関しては、 CI/CD プラグインが用意されているようです。
We provide ready-to-use CI/CD plugins for Jenkins and JetBrain’s TeamCity, with more to come. There is also a new API (inspector-scan) and command (inspector-sbomgen) available from our AWS SDKs and AWS Command Line Interface (AWS CLI). This new API allows you to integrate Amazon Inspector in the CI/CD tool of your choice.
API が提供されているので、 CodeBuild や GitHub Actions でも実行可能ですね。
追記
早速、 CodeBuild 上で動かしてみました。
参考
まとめ
以上、速報レベルにはなりますが「拡張イメージスキャンが CI/CD パイプラインに組み込めるようになりました!」でした。
次回は CodeBuild に実際に組み込んでみようと思います!この記事がどなたかの参考になれば幸いです。
以上、AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!