将使用显式拒绝规则来阻止创建不包含服务器端加密选项(AES或KMS)的S3存储桶。明确拒绝是防止意外创建的首选结果。
我可以通过控制台找到创建中指定的选项,而不是cli create-bucket
命令。
我了解到,put-bucket-encryption
命令可以作为行政控制的后续命令,并且可以通过Lambda或其他方式实施侦察/纠正控制,但这绕开了主动控制的要求。
预期结果将是应用一个策略,该策略明确拒绝有关没有附加属性SSEAlgorithm
或功能等效项不存在或不匹配的存储桶的创建,修改,读取内容等。
答案 0 :(得分:0)
{
"Sid": "DenyNoEncryption",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::test_bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
这是一种策略的外观,它可以拒绝在没有sse的情况下将对象添加到s3存储桶。
如果您需要停止创建不带sse的s3存储桶。将s3操作更改为"s3:CreateBucket"
,我相信这应该对您有用。然后将您的资源更改为*
{
"Sid": "DenyNoEncryption",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:CreateBucket",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
答案 1 :(得分:0)
我首先对此发表评论,OP认为这是合理的缓解措施:
拒绝使用AWS控制台为所有用户创建存储桶的访问权限。
编写一项特殊服务,该服务将根据首选设置(在需要时分散到不同的调用中)创建存储桶。
另一个副作用是,您可以简化其他要求,例如检查存储桶名称(例如,company_project_module_xxx)和文档(将创建者/创建时间/注释添加到文档存储桶中)。