我创建了一个AWS S3存储桶,并在属性中启用了“默认加密”。那我还需要创建类似于下面的存储桶策略吗?
请注意,我只是想以一种通用的方式对s3进行加密,没有特别的要求。
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::s3_bucket_name/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::s3_bucket_name/*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": "true"
}
}
}
]
答案 0 :(得分:2)
为了对此进行测试,我创建了一个存储桶并激活了默认加密。
然后我尝试通过管理控制台上传文件时,它说:
如果将此存储桶设置为默认加密,则S3将按照存储桶设置对对象进行加密。
我上传的文件 did 已加密。
然后我通过AWS CLI上传文件:
aws s3 cp foo s3://my-bucket/
已对上传的文件 进行加密。
但是,请注意,该设置称为默认加密。这意味着,除非另有说明,否则对象将被加密。但是,它不强制加密,因此,如果用户专门选择了不同类型的加密(例如MKS而不是AES256),则可以这样做。 (我看不到他们可以具体要求“不加密”的方式。)
这是您的策略(上)的来源。它们可以强制执行特定的加密形式。如果不满足这些要求,则PutObject
被拒绝。
然后,我从How to Prevent Uploads of Unencrypted Objects to Amazon S3 | AWS Security Blog中提取了加密策略(看起来与您使用的加密策略匹配),并将其放在 Bucket Policy (桶策略)中。
然后我尝试从管理控制台上载,但失败了!!只有当我特别选择“ Amazon S3主密钥”作为加密选项时,此方法才有效。因此,“默认加密”选项与策略不兼容。
我还尝试使用“ AWS KMS主密钥”作为加密选项进行上传,并再次失败,因为这与策略不符(该策略专门检查AES256,而不是KMS加密)。 / p>
底线:使用默认加密将导致对象以某种方式进行加密。这些策略可以强制执行特定类型的加密。