Amazon s3 AWS S3桶加密-桶属性设置与桶策略设置
我已经创建了一个AWS S3 bucket,并且在属性中启用了“默认加密”。那么我还需要创建一个类似于下面的桶策略吗 注:我只是想让s3以一种通用的方式进行加密,没有非常特殊的要求Amazon s3 AWS S3桶加密-桶属性设置与桶策略设置,amazon-s3,Amazon S3,我已经创建了一个AWS S3 bucket,并且在属性中启用了“默认加密”。那么我还需要创建一个类似于下面的桶策略吗 注:我只是想让s3以一种通用的方式进行加密,没有非常特殊的要求 "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject",
"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"
}
}
}
]
为了测试这一点,我创建了一个bucket并激活了默认加密 然后,当我试图通过管理控制台上传文件时,它说: 如果此bucket设置为默认加密,S3将根据bucket设置加密对象 我上传的文件确实被加密了 然后,我通过AWS CLI上传了一个文件:
aws s3 cp foo s3://my-bucket/
上载的文件已加密
但是,请注意,该设置称为默认加密。这意味着,除非另有规定,否则对象将被加密。但是,它不强制加密,因此,如果用户特别选择了不同类型的加密(例如MKS而不是AES256),则允许用户进行加密。(我看不到他们可以明确要求“不加密”的方法。)
这就是你的政策(上面)的用武之地。它们可以强制执行特定形式的加密。如果不满足这些要求,则拒绝PutObject
然后,我从中获取加密策略(似乎与您使用的策略相匹配),并将它们放入桶策略中
然后我尝试从管理控制台上传,但失败了只有当我特别选择“AmazonS3主密钥”作为加密选项时,它才起作用。因此,“默认加密”选项与策略不兼容
我还尝试使用“AWS KMS主密钥”作为加密选项上载,但再次失败,因为这与策略不匹配(专门检查AES256,而不是KMS加密)
底线:使用默认加密将导致以某种方式对对象进行加密。这些策略可以强制执行特定类型的加密。为了测试这一点,我创建了一个bucket并激活了默认加密 然后,当我试图通过管理控制台上传文件时,它说: 如果此bucket设置为默认加密,S3将根据bucket设置加密对象 我上传的文件确实被加密了 然后,我通过AWS CLI上传了一个文件:
aws s3 cp foo s3://my-bucket/
上载的文件已加密
但是,请注意,该设置称为默认加密。这意味着,除非另有规定,否则对象将被加密。但是,它不强制加密,因此,如果用户特别选择了不同类型的加密(例如MKS而不是AES256),则允许用户进行加密。(我看不到他们可以明确要求“不加密”的方法。)
这就是你的政策(上面)的用武之地。它们可以强制执行特定形式的加密。如果不满足这些要求,则拒绝PutObject
然后,我从中获取加密策略(似乎与您使用的策略相匹配),并将它们放入桶策略中
然后我尝试从管理控制台上传,但失败了只有当我特别选择“AmazonS3主密钥”作为加密选项时,它才起作用。因此,“默认加密”选项与策略不兼容
我还尝试使用“AWS KMS主密钥”作为加密选项上载,但再次失败,因为这与策略不匹配(专门检查AES256,而不是KMS加密)
底线:使用默认加密将导致以某种方式对对象进行加密。这些策略可以强制执行特定类型的加密。另一个注意事项:S3条件密钥
S3:x-amz-server-side-encryption
早在bucket的“默认加密”选项引入之前就已可用。以前,这是确保存储对象被加密的唯一方法——要求在上传对象时指定它。感谢John Rotenstein的测试和解释。我的观察结果是:如果我只设置了“默认加密”,那么使用AWS CLI我可以:AWS s3 cp hello.txt s3://bucketname(或从bucket name下载到本地),而不设置--sse AES256,而如果我设置bucket policy,那么我需要使用:AWS s3 cp hello.txt s3://bucketname--sse AES256。所以我很困惑,文件真的只使用默认加密加密吗?如果文件已经加密,那么为什么我需要一个bucket策略呢?约翰·罗滕斯坦:我不明白你的结论是什么。通过启用默认加密并设置为S3主密钥,S3将使用S3主密钥方式(我猜是AES256)为您加密文件。如果在bucket策略中设置AES256,S3仍将使用AES256为您加密。对我来说唯一的区别是,当我键入AWS CLI时,我需要设置--sse AES256(如果设置了bucket策略)。若bucket并没有bucket策略,那个么我不需要指出--sse AES256Thanks Michael-sqlbot。从您所说的,看起来bucket策略和默认加密设置是一种重复。也许我只需要启用默认加密。另一个注意事项:S3条件密钥S3:x-amz-server-side-encryption
早在bucket的“默认加密”选项引入之前就已经可用了。以前,这是确保存储对象被加密的唯一方法——要求在上传对象时指定它。感谢John Rotenstein的测试和解释。我的观察结果是:如果我只设置了“默认加密”,那么使用AWS CLI我可以:AWS s3 cp hello.txt s3://bucketname(或从bucket name下载到local),而无需设置--sse A