目次

10.S3

S3関連の対応を以下に示す。

予防的対策

S3BucketSampleTemplate
AWSTemplateFormatVersion: 2010-09-09
Parameters:
 PrmExampleAccessLogBucket:
     Type: String
Resources:
  ResExampleBucket:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: !Sub "res-example-bucket"
      VersioningConfiguration:
        Status: Enabled
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      PublicAccessBlockConfiguration:
        IgnorePublicAcls: true
        BlockPublicPolicy: true
        BlockPublicAcls: true
        RestrictPublicBuckets: true
      AccessControl: LogDeliveryWrite
      LoggingConfiguration:
        DestinationBucketName: !Ref PrmExampleAccessLogBucket
        LogFilePrefix: !Sub "ExamplePrefix/"
  ResExampleBucketPolicy:
    Type: 'AWS::S3::BucketPolicy'
    Properties:
      Bucket: !Ref ResExampleBucket
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: AllowSSLRequestsOnly
            Action: 's3:*'
            Effect: Deny
            Resource:
              - !Sub 'arn:aws:s3:::${ResExampleBucket}'
              - !Sub 'arn:aws:s3:::${ResExampleBucket}/*'
            Condition: 
              Bool: 
                'aws:SecureTransport': false
            Principal: '*'

標準対応項目

[CIS 2.3] CloudTrail ログが記録する S3 バケットがパブリックにアクセスできないことを確認します
[PCI.S3.1] S3 バケットはパブリック書き込みアクセスを禁止する必要があります
[PCI.S3.2] S3 バケットではパブリック読み取りアクセスを禁止する必要があります
[PCI.S3.6] S3 ブロックパブリックアクセス設定を有効にする必要があります
[S3.1] S3 ブロックパブリックアクセス設定を有効にする必要があります
[S3.2] S3 バケットではパブリック読み取りアクセスを禁止する必要があります
[S3.3] S3 バケットはパブリック書き込みアクセスを禁止する必要があります
[S3.8] S3 ブロックパブリックアクセス設定は、バケットレベルで有効にする必要があります

      PublicAccessBlockConfiguration:
        IgnorePublicAcls: true
        BlockPublicPolicy: true
        BlockPublicAcls: true
        RestrictPublicBuckets: true

[PCI.S3.4] S3 バケットでは、サーバー側の暗号化を有効にする必要があります
[S3.4] S3 バケットでは、サーバー側の暗号化を有効にする必要があります

      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256

[PCI.S3.5] S3 バケットは、Secure Socket Layer を使用するリクエストを要求する必要があります
[S3.5] S3 バケットは、Secure Socket Layer を使用するためのリクエストが必要です

      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: AllowSSLRequestsOnly
            Action: 's3:*'
            Effect: Deny
            Resource:
              - !Sub 'arn:aws:s3:::${ResExampleBucket}'
              - !Sub 'arn:aws:s3:::${ResExampleBucket}/*'
            Condition: 
              Bool: 
                'aws:SecureTransport': false
            Principal: '*'

[CIS 2.6] CloudTrail S3 バケットアクセスログ記録が CloudTrail S3 バケットで有効になっていることを確認します
[S3.9] S3 バケットサーバーアクセスログを有効にする必要があります

      AccessControl: LogDeliveryWrite
      LoggingConfiguration:
        DestinationBucketName: !Ref ResExampleAccessLogBucket
        LogFilePrefix: !Sub "ExamplePrefix/"

個別検討項目

[PCI.S3.3] S3 バケットでクロスリージョンレプリケーションを有効にする必要があります
[S3.6] 他のユーザーに付与された Amazon S3 のアクセス許可AWSバケットポリシーのアカウントは制限する必要があります

発見的対策

Aws/SecurityHub/90.発見的対策