AWS S3在上传和下载的时候,默认会使用TLS的方式进行加密和解密。这个具体是在哪里配置的呢?
最简单的方式是在S3里面,当我们创建一个新的Bucket的时候,我们可以在console上选择默认加密,如下面所示
默认可以选择SSE-S3或者SSE-KMS服务加密。后者安全性更高 不过会有一些额外费用。
如果在创建的时候没有进行选择,我们还可以通过设置Bucket Policy来进行加密。在AWS里面,所有的服务都是API,因此所有的设定都可以转换成头文件里面对应的参数。比如说,我们可以通过禁止头文件里面没有加密参数的请求进行上传操作。
具体操作如下
在对应的bucket里面, 进入Permission - Bucket Policy - 最下面选择 Policy Generator
基本设置
Type of Policy:S3 Bucket Policy
Effect:Deny
Principal:
AWS Service: Amazon S3
Actions: PutObject
ARN: arn:aws:s3:::XXXXXX
Condition:stringnotequals
key:s3-x-amz-server-side-encryption
value:aws:kms
生成器会自动生成下列配置文档 拷贝到对应的editor里面。 咦 居然报错!
解决方法很简单,需要在bucket后面添加一个通配符。这个应该是aws的一个bug
点击保存就行了。
现在来测试一下。
首先上传一个文件,选择不加密
结果失败
重新上传一次,这次选择 AWS KMS master-key
上传成功!