[英]Can AWS Config write to an S3 bucket with object locking enabled?
我设置了 AWS Config [1] 以将配置项传送到 S3 存储桶。 当 S3 存储桶未启用 Object 锁定 [2] 时,一切正常。 但是,当该存储桶确实启用了 Object 锁定时,AWS Config 无法创建其交付通道并出现错误并显示以下消息
错误:创建交付通道失败:InsufficientDeliveryPolicyException:s3 存储桶的交付策略不足:oss-devex-tf-module-aws-config-managed-bucket,无法写入存储桶,前提是 s3 键前缀为“config-test”。
我搜索过这个异常,它通常与权限有关。 在进行故障排除时,我为 AWS Config 分配了一个角色,该角色对 S3 存储桶具有完全权限(即,存储桶和对象上的s3:*
,这比文档 [3] 中描述的要多),我没有设置 KMS存储桶上的客户主密钥,为了测试它,我什至在 rest 禁用了加密。
由于审计和合规性要求,我想使用 Object 锁定,但我在 AWS Config 文档中找不到对它的任何引用。
编辑:我写了一个 terraform 模块 [4] 来设置 AWS Config。 该模块中有几个运行良好的示例,但前提是未在 S3 存储桶上启用 object 锁定。
[1] - https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html
[2] - https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
[3] - https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-policy.html
[4] - https://gitlab.com/open-source-devex/terraform-modules/aws/config-managed-rules
答案似乎是否定的。
我只是与这个问题斗争了一段时间,直到我从 AWS 找到以下文档:
AWS Config 不支持到启用了 object 锁的 Amazon S3 存储桶的交付通道。
资料来源: 管理交付渠道
为了重现您的情况,我执行了以下操作:
然后我看到 Config 在存储桶中创建了一个ConfigWritabilityCheckFile
对象。
一段时间后,出现了具有此路径的对象:
AWSLogs/123456789012/Config/ap-southeast-2/2019/9/17/ConfigSnapshot/123456789012_Config_ap-southeast-2_ConfigSnapshot_20190917T224217Z_ea973cd9-25ff-4cbe-97ca-84ef150a1981.json.gz
因此,启用对象锁定似乎不会影响 AWS Config 使用存储桶的能力。
您应该检查 AWS Config 正在使用的 IAM 角色,以确认它对所需的存储桶具有适当的权限。
我使用的 IAM 角色(我在现有设置中闲逛,并刚刚添加了新的存储桶名称)包含:
AWSConfigRole
托管策略config-role_AWSConfigDeliveryPermissions_ap-southeast-2
可能是在某个时候自动创建的,其中包含:{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject*"
],
"Resource": [
"arn:aws:s3:::stack-lock/AWSLogs/123456789012/*"
],
"Condition": {
"StringLike": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.