S3 バケットの既定の暗号化ポリシーの確認

S3 の既定の暗号化が、組織のアルゴリズムと鍵管理の要件を満たすか確認してください。

説明

Amazon S3 は新しいオブジェクトのアップロードに、少なくとも S3 マネージドキーによるサーバー側暗号化(SSE-S3)を適用します。テンプレートに BucketEncryption がなくても、新しいオブジェクトが暗号化されないわけではありません。KMS キーの使用など追加の要件がある場合は、それに合う既定の暗号化を明示してください。

想定される影響

既定の設定が組織の要件と異なると、必要なキーポリシーや監査上の管理要件を満たせない可能性があります。バケットの設定を変えるだけでは、既存オブジェクトの暗号化方式は自動で変わりません。

対処方法

必要なアルゴリズムと鍵を決め、BucketEncryption.ServerSideEncryptionConfiguration に設定してください。KMS を使う場合は、アップロードや読み取りを行う主体の鍵の権限も確認します。特定の暗号化方式を必須にする場合はバケットポリシーも設定し、既存オブジェクトは別途確認・変更してください。

例

変更前でも、新しいオブジェクトには SSE-S3 が適用されます。変更後はカスタマーマネージド KMS キーが必要な場合の例です。KmsKeyArn に、同じリージョンで利用できる対称暗号化 KMS キーの ARN を指定します。既定の暗号化設定だけでは、アップロードリクエストによる別の暗号化方式の指定は禁止されません。

変更前

yaml
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub 'bucket-${AWS::Region}-${AWS::AccountId}'

変更後

yaml
Parameters:
  KmsKeyArn:
    Type: String
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub 'bucket-${AWS::Region}-${AWS::AccountId}'
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: aws:kms
              KMSMasterKeyID: !Ref KmsKeyArn

参考資料