🐳

AWS ECRのマルチステージビルドにおける脆弱性スキャンの挙動について

2024/11/07に公開

はじめに

AWS ECR(Elastic Container Registry)の脆弱性スキャン機能は、コンテナイメージのセキュリティを確保する上で重要な役割を果たしています。

マルチステージビルドを使用する場合、その挙動について注意すべき点があることがわかりました。

重要な発見

マルチステージビルドにおけるECRの脆弱性スキャンには、以下のような特徴があります:

  1. スキャン対象となるのは、最終的にプッシュされる最後のステージのイメージのみ
  2. 中間ステージ(builderステージなど)はスキャン対象外

具体例で見る挙動

以下のような一般的なマルチステージビルドのDockerfileを例に考えてみましょう:

FROM node:21-alpine AS builder   # スキャン対象外
WORKDIR /app
COPY . .
RUN yarn install && yarn build

FROM node:21-alpine             # このイメージがスキャン対象
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/index.js"]

重要なポイント

  • builderステージで使用されているパッケージやライブラリの脆弱性は、最終イメージに含まれていない限り、スキャンでは検出されません
  • これは、builderステージのイメージがECRにプッシュされないためです

実務上の影響と注意点

この挙動は以下のような影響をもたらす可能性があります:

  1. 見落としのリスク

    • ビルド時に使用される脆弱性のあるパッケージが、最終的な成果物に影響を与える可能性
    • ビルドプロセス自体が攻撃の対象となるリスク
  2. セキュリティ対策

    • ビルドステージでも安全なベースイメージとパッケージを使用することが重要
    • 必要に応じて、ビルドステージのイメージも個別にスキャンを検討

まとめ

AWS ECRの脆弱性スキャンは、マルチステージビルドの最終イメージのみをスキャン対象としています。このため、ビルドプロセス全体のセキュリティを確保するためには、追加的な対策が必要となる場合があります。

開発チームは、この制限を理解した上で、適切なセキュリティ対策を実装することが重要ですね💡

Discussion