除非选中 AES256 加密,否则拒绝 S3 中的 CreateBucket
Deny CreateBucket in S3 unless AES256 Encryption Checked
一天中的大部分时间我都在努力。作为管理员,我试图要求用户在创建 S3 存储桶时检查 "Automatically encrypt objects when they are stored in S3" 按钮 (AES256)。我已经尝试了所有能想到的。到目前为止,我只得到了 2 个独立的结果。
作为测试用户,我要么被允许创建存储桶(有或没有检查加密),要么我被拒绝(有或没有检查加密)。
最后的努力导致将以下策略应用于测试用户,在这种情况下,无论我是否选中加密框,我都无法创建存储桶
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": [
"s3:CreateBucket"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-content-sha256": "AES256"
},
"Null": {
"s3:x-amz-content-sha256": true
}
}
]
}
我已将上述策略与 S3AllowFullAccess 以及其他允许访问的自定义策略相结合,但我就是无法让它发挥作用。
感谢任何帮助
CreateBucket()
命令不接受存储桶加密设置。
例如,从 AWS CLI 创建存储桶时,选项为:
aws s3api create-bucket
[--acl <value>]
--bucket <value>
[--create-bucket-configuration <value>]
[--grant-full-control <value>]
[--grant-read <value>]
[--grant-read-acp <value>]
[--grant-write <value>]
[--grant-write-acp <value>]
[--object-lock-enabled-for-bucket | --no-object-lock-enabled-for-bucket]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
无法指定存储桶加密。
而是使用 put-bucket-encryption
命令指定存储桶加密:
aws s3api put-bucket-encryption
--bucket <value>
[--content-md5 <value>]
--server-side-encryption-configuration <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
这意味着 不可能 在 CreateBucket()
上创建强制使用 server-side 加密值的策略。需要在创建存储桶后设置它。
您可以创建在 CreateBucket()
上激活并触发 AWS Lambda 函数的 Amazon CloudWatch Events 规则。然后,您可以编写函数代码以在存储桶上调用 PutBucketEncryption()
。
更新: 您可以使用要求对对象本身进行加密的策略,而不是在存储桶级别设置加密。
这是来自 AWS Organizations 的 Example Service Control Policies,它要求每个人只上传加密的对象:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": true
}
}
}
]
}
一天中的大部分时间我都在努力。作为管理员,我试图要求用户在创建 S3 存储桶时检查 "Automatically encrypt objects when they are stored in S3" 按钮 (AES256)。我已经尝试了所有能想到的。到目前为止,我只得到了 2 个独立的结果。
作为测试用户,我要么被允许创建存储桶(有或没有检查加密),要么我被拒绝(有或没有检查加密)。
最后的努力导致将以下策略应用于测试用户,在这种情况下,无论我是否选中加密框,我都无法创建存储桶
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": [
"s3:CreateBucket"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-content-sha256": "AES256"
},
"Null": {
"s3:x-amz-content-sha256": true
}
}
]
}
我已将上述策略与 S3AllowFullAccess 以及其他允许访问的自定义策略相结合,但我就是无法让它发挥作用。
感谢任何帮助
CreateBucket()
命令不接受存储桶加密设置。
例如,从 AWS CLI 创建存储桶时,选项为:
aws s3api create-bucket
[--acl <value>]
--bucket <value>
[--create-bucket-configuration <value>]
[--grant-full-control <value>]
[--grant-read <value>]
[--grant-read-acp <value>]
[--grant-write <value>]
[--grant-write-acp <value>]
[--object-lock-enabled-for-bucket | --no-object-lock-enabled-for-bucket]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
无法指定存储桶加密。
而是使用 put-bucket-encryption
命令指定存储桶加密:
aws s3api put-bucket-encryption
--bucket <value>
[--content-md5 <value>]
--server-side-encryption-configuration <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
这意味着 不可能 在 CreateBucket()
上创建强制使用 server-side 加密值的策略。需要在创建存储桶后设置它。
您可以创建在 CreateBucket()
上激活并触发 AWS Lambda 函数的 Amazon CloudWatch Events 规则。然后,您可以编写函数代码以在存储桶上调用 PutBucketEncryption()
。
更新: 您可以使用要求对对象本身进行加密的策略,而不是在存储桶级别设置加密。
这是来自 AWS Organizations 的 Example Service Control Policies,它要求每个人只上传加密的对象:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Action": "s3:PutObject",
"Resource": "*",
"Condition": {
"Null": {
"s3:x-amz-server-side-encryption": true
}
}
}
]
}