CodeBuildアーティファクトの暗号化キーの確認

CodeBuildの出力アーティファクトに使用する暗号化キーが、組織のキー管理要件を満たすか確認してください。

説明

CodeBuildのEncryptionKeyは、出力アーティファクトの暗号化に使うKMSキーを指定します。省略するとAmazon S3用のAWS管理キーが使われるため、省略だけでアーティファクトが平文保存されるとは判断できません。

カスタマー管理キーが必要な環境では、ポリシーとライフサイクルを自分で管理できるキーを指定します。この設定でキャッシュやログの暗号化も一括設定されるわけではありません。

想定される影響

  • デフォルトのキーでは、カスタマー管理キーの使用や権限分離の要件を満たせない場合があります。
  • キーが使用できない場合や権限が不足する場合、アーティファクトの保存や読み取りが失敗する可能性があります。

対処方法

  • カスタマー管理キーが必要な場合は、EncryptionKeyに承認済みキーのARNまたはエイリアスを指定してください。
  • サービスロールとアーティファクトの利用者に必要なKMS・S3権限を付与し、ビルドと読み取りを確認してください。
  • アーティファクトの暗号化無効化設定、キャッシュやログの保存先の暗号化も個別に確認してください。

例

S3出力アーティファクトを使用するプロジェクトの抜粋です。バケットとキーの入力値、CodeBuildRole、ビルド環境、ソース設定は別途用意してください。

変更前

yaml
Resources:
  BuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: my-build
      ServiceRole: !GetAtt CodeBuildRole.Arn
      Artifacts:
        Type: S3
        Location: !Ref ArtifactBucketName

出力アーティファクトのキーを省略し、デフォルトのAWS管理キーを使用します。暗号化がないという意味ではありませんが、カスタマー管理キーの要件を満たさない場合があります。

変更後

yaml
Resources:
  BuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: my-build
      EncryptionKey: !Ref ArtifactKeyArn
      ServiceRole: !GetAtt CodeBuildRole.Arn
      Artifacts:
        Type: S3
        Location: !Ref ArtifactBucketName

アーティファクトに使うキーを明示します。キーの指定とは別に、そのキーを使う権限を設定する必要があります。

参考資料