【问题标题】:aws-cdk multi-account bucket policyaws-cdk 多账户存储桶策略
【发布时间】:2021-10-06 15:40:27
【问题描述】:

我有以下:

    const accessLogsBucket: Bucket = new Bucket(this, 'LogsBucket', {
      bucketName: `logs-${account}-${region}`,
      versioned: true,
      encryption: BucketEncryption.S3_MANAGED,
      blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
      accessControl: BucketAccessControl.LOG_DELIVERY_WRITE,
      removalPolicy: RemovalPolicy.RETAIN,
    });

添加一个 S3 存储桶,我想向其中添加一个策略,以便其他 AWS 账户能够写入它。例如我喜欢添加这个策略:

{
"Version": "2008-10-17",
"Id": "PolicyForCombinedBucket",
"Statement": [
    {
        "Sid": "Set permissions for objects",
        "Effect": "Allow",
        "Principal": {
            "AWS": ["{PayerAccountA}","{PayerAccountB}"]
        },
        "Action": [
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
        ],
        "Resource": "arn:aws:s3:::{BucketName}/*"
    }
]
}

所以我尝试了:

    accessLogsBucket.addToResourcePolicy(
      new PolicyStatement({
        effect: Effect.ALLOW,
        actions: [
          "s3:ReplicateObject",
          "s3:ReplicateDelete"
        ],
        principals: [new AnyPrincipal()],
        resources: [
          accessLogsBucket.arnForObjects("*")
        ]
      })
    )

我怎样才能做到这一点?

【问题讨论】:

    标签: aws-cdk


    【解决方案1】:

    嗯,你已经很接近了。但我认为你有一些错误的行为,也许是政策倒退。

    请参阅this link 了解对 S3 存储桶的跨账户访问,您可以在 CDK 中复制这些策略(或类似策略)。此外,由于您确实设置了阻止公共访问权限,因此您的 S3 存储桶需要位于对另一个账户中的 VPC 具有交叉访问权限的 VPC 中(通过访问点和 vpc 共享)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多