配置 AWS Cloudfront 以登录到另一个 AWS 账户中的 S3 存储桶

配置 AWS Cloudfront 以登录到另一个 AWS 账户中的 S3 存储桶

在此处输入图片描述我有一些 AWS Cloudfront 分布在不同的 AWS 账户中。

我想将这些分布的访问日志存储在单个 AWS 账户中的单个 S3 存储桶中。

这是可能的,但没有记录(我能找到的)。

目前尚不清楚日志存储桶需要对 ACL 进行哪些更新,或者需要哪些(如果有)存储桶策略。

我似乎需要的是更新存储桶上的 ACL,以将 FULL_CONTROL 授予 Cloudfront 用于写入日志的其他 AWS 帐户中任何帐户的规范 ID。

如果其他人已配置此并且可以提供帮助,我将不胜感激。

答案1

(已更新以供将来参考)

假设您的 CloudFront 分配位于账户 123456789012 中,并且日志记录配置到your-logging-bucket另一个账户中的存储桶中。

  1. 创建一个S3 存储桶策略这授予 CloudFront 账户 123456789012 执行s3:GetBucketAcls3:PutBucketAcl的权限your-logging-bucket

    这是必需的桶策略

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:root"     << the CloudFront account
          },
          "Action": [
            "s3:GetBucketAcl",
            "s3:PutBucketAcl"
          ],
          "Resource": "arn:aws:s3:::your-logging-bucket"
        }
      ]
    }
    
  2. 接着就,随即S3 存储桶策略在账户 1223456789012 中创建一个新的 CloudFront 分配,并在创建向导启用日志记录your-logging-bucket。借助上述存储桶策略,它将为您创建适当的 ACL。

    c4c1ede66af...8632f77d2d0您可以通过查看 S3 -> your-logging-bucket -> Permissions -> ACL来检查官方 CloudFront 帐户是否 已被授予访问权限

    在此处输入图片描述

  3. 在 123... 帐户中配置所有其他 CF 发行版以登录your-logging-bucket- 它现在也适用于所有预先存在的 CF 发行版。

希望有帮助:)

答案2

先前的答案不起作用,因为你们没有为 AWS 日志传送服务的规范 ID 设置访问控制。

CDK 中 TypeScript 的代码片段可创建正确配置的 Org 范围日志存储桶:

    const cloudFrontLogAggregatorBucket = new Bucket(this, 'CloudFrontLogs', {
      bucketName: props.cloudFrontLogAggregatorBucketName,
      accessControl: BucketAccessControl.LOG_DELIVERY_WRITE,
      encryption: BucketEncryption.S3_MANAGED,
    })
    const cloudFrontAclPolicy = new PolicyStatement({
      principals: [new StarPrincipal()],
      actions: ['s3:GetBucketAcl', 's3:PutBucketAcl'],
      resources: [cloudFrontLogAggregatorBucket.bucketArn],
      conditions: {
        'ForAnyValue:StringLike': { 'aws:PrincipalOrgPaths': 'o-4hvri4xxxx/r-zzzr/*' },
      },
    })
    cloudFrontLogAggregatorBucket.addToResourcePolicy(cloudFrontAclPolicy)

希望它能对某人有所帮助。

相关内容