Roy*_* Ca 5 aws-cloudformation aws-cdk
我正在使用 CDK,但我认为纯 CloudFormation 也会发生相同的问题(并且希望可以解决)
我正在创建一个带有 KMS 密钥的 S3 存储桶,如下所示:
key = aws_kms.Key(self, id="MasterKey"...)
bucket = aws_s3.Bucket(..., encryption_key=key, ...)
Run Code Online (Sandbox Code Playgroud)
然后,我尝试通过对不使用存储桶策略的任何内容添加拒绝来收紧策略,如下所示,正如此aws 博客所建议的那样(这不是针对 KMS,而是针对 S3 存储桶,但是想法是一样的)就像这样:
key_policy = iam.PolicyStatement(
actions=["kms:Encrypt"],
effect=iam.Effect.DENY,
resources=['*'], # In a key policy, "*" means "this CMK"
principals=[iam.ServicePrincipal(service="*")],
conditions={
"StringNotLike": {
"aws:userId": f"{bucket_role_id}:*",
},
}
)
key.add_to_resource_policy(key_policy)
Run Code Online (Sandbox Code Playgroud)
当我尝试部署时,出现循环依赖错误,这是有道理的,因为 S3 创建需要 KMS,而 KMS 创建使用使用 S3 角色 ID 的策略。
有没有办法解决这个问题(事后不诉诸使用 boto3 或类似的东西)?这是 CDK 的问题还是 CloudFormation 的问题?我想如果我们可以在部署期间更新资源,但在部署资源之后,那么这就可以工作。
感谢您的帮助。
| 归档时间: |
|
| 查看次数: |
1321 次 |
| 最近记录: |