View a markdown version of this page

用于记录的 Amazon S3 存储桶策略 - AWS Control Tower

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用于记录的 Amazon S3 存储桶策略

在 AWS 控制塔中,只有当请求来自您的组织或组织单位 (OU) 时, AWS 服务才能访问您的资源。任何写入权限都必须满足一个 aws:SourceOrgID 条件。

您可以在 Amazon S3 存储桶策略的条件元素中使用 aws:SourceOrgID 条件键,并将其值设置为您的组织 ID。此条件可确保只有组织内的账户才能将日志写入您的 Amazon S3 存储桶。它可以防止您的组织外部账户将日志写入您的 AWS 控制塔亚马逊 S3 存储桶。

有关此条件密钥的更多信息,请参阅 IAM 全局条件上下文密钥。有关可扩展控件的博客文章,请参阅对访问资源的 AWS 服务使用可扩展控件。

此策略不会影响您现有工作负载的功能。

着陆区版本 3.3 及更早版本

在着陆区版本 3.3 及更早版本中,AWS 控制塔在日志存档账户中部署了单个 Amazon S3 存储桶,用于存储这两个存储桶 AWS CloudTrail 和 AWS Config 日志。存储桶策略如下例所示。

S3AuditBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: !Ref S3AuditBucket PolicyDocument: Version: 2012-10-17 Statement: - Sid: AllowSSLRequestsOnly Effect: Deny Principal: '*' Action: s3:* Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/*" Condition: Bool: aws:SecureTransport: false - Sid: AWSBucketPermissionsCheck Effect: Allow Principal: Service: - cloudtrail.amazonaws.com - config.amazonaws.com Action: s3:GetBucketAcl Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - Sid: AWSConfigBucketExistenceCheck Effect: Allow Principal: Service: - cloudtrail.amazonaws.com - config.amazonaws.com Action: s3:ListBucket Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - Sid: AWSBucketDeliveryForConfig Effect: Allow Principal: Service: - config.amazonaws.com Action: s3:PutObject Resource: - Fn::Join: - "" - - !Sub "arn:${AWS::Partition}:s3:::" - !Ref "S3AuditBucket" - !Sub "/${AWSLogsS3KeyPrefix}/AWSLogs/*/*" Condition: StringEquals: aws:SourceOrgID: !Ref OrganizationId - Sid: AWSBucketDeliveryForOrganizationTrail Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:PutObject Resource: !If [IsAccountLevelBucketPermissionRequiredForCloudTrail, [!Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${Namespace}/*", !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${OrganizationId}/*"], !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/*/*"] Condition: StringEquals: aws:SourceOrgID: !Ref OrganizationId

着陆区版本 4.0 及更高版本

在着陆区版本 4.0 及更高版本中, AWS Config AWS CloudTrail 使用单独的专用 Amazon S3 存储桶而不是共享存储桶。用于存储 AWS Config 日志的 Amazon S3 存储桶位于 AWS Config 集成账户(以前的审计账户)中。存放 AWS CloudTrail 日志的 Amazon S3 存储桶位于 AWS CloudTrail 管理员账户(以前的日志存档账户)中。有关更多信息,请参阅 AWS 配置更新。

AWS CloudTrail 存储桶政策 (AWS CloudTrail 管理员账号)

以下示例显示了在 AWS CloudTrail 管理员账户中部署的 AWS CloudTrail 存储桶策略:

S3AuditBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: !Ref S3AuditBucket PolicyDocument: Version: 2012-10-17 Statement: - Sid: AllowSSLRequestsOnly Effect: Deny Principal: '*' Action: s3:* Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/*" Condition: Bool: aws:SecureTransport: false - Sid: AWSBucketPermissionsCheck Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:GetBucketAcl Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - Sid: AWSConfigBucketExistenceCheck Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:ListBucket Resource: - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}" - Sid: AWSBucketDeliveryForOrganizationTrail Effect: Allow Principal: Service: - cloudtrail.amazonaws.com Action: s3:PutObject Resource: !If [IsAccountLevelBucketPermissionRequiredForCloudTrail, [!Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${Namespace}/*", !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${OrganizationId}/*"], !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/*/*"] Condition: StringEquals: aws:SourceOrgID: !Ref OrganizationId

AWS Config 存储桶政策 (AWS Config 集成账户)

以下示例显示了在 AWS Config 集成账户中部署的 AWS Config 存储桶策略:

ConfigS3BucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: !Ref ConfigS3Bucket PolicyDocument: Version: 2012-10-17 Statement: - Sid: AllowSSLRequestsOnly Effect: Deny Principal: '*' Action: s3:* Resource: - !Sub "arn:${AWS::Partition}:s3:::${ConfigS3Bucket}" - !Sub "arn:${AWS::Partition}:s3:::${ConfigS3Bucket}/*" Condition: Bool: aws:SecureTransport: false - Sid: AWSConfigBucketPermissionsCheck Effect: Allow Principal: Service: - config.amazonaws.com Action: s3:GetBucketAcl Resource: - !Sub "arn:${AWS::Partition}:s3:::${ConfigS3Bucket}" - Sid: AWSConfigBucketExistenceCheck Effect: Allow Principal: Service: - config.amazonaws.com Action: s3:ListBucket Resource: - !Sub "arn:${AWS::Partition}:s3:::${ConfigS3Bucket}" - Sid: AWSConfigBucketDelivery Effect: Allow Principal: Service: - config.amazonaws.com Action: s3:PutObject Resource: - !Sub "arn:${AWS::Partition}:s3:::${ConfigS3Bucket}/${ConfigS3KeyPrefix}/AWSLogs/*/*" Condition: StringEquals: aws:SourceOrgID: !Ref OrganizationId