如何加密数据
最后更新于
最后更新于
如果您运行的是 Windows Server 2019 或更高版本,我们建议使用 OpenSSH,这是一款使用 SSH 协议进行远程登录的开源连接工具。
;
;
;
;
默认S3里的文件会通过SSE-S3进行加密,也可以使用AWS Key Management Service (AWS KMS) keys (SSE-KMS)替代SSE-S3进行加密。
以下是三种可选的加密方式:
默认的情况下,亚马逊S3对新上传的对象自动启用使用亚马逊S3管理的密钥(SSE-S3)的服务器端加密。不需要额外的权限,跟没有做加密时使用是一样的。
你可以使用AWS Key Management Service (AWS KMS) keys (SSE-KMS)替代SSE-S3进行加密。此时获取S3的对象必须要有KMS的解密权限,否则会拒绝访问。
如果你没有指定的customer managed key客户管理密钥,Amazon S3会自动创建一个,之后会默认使用这么密钥完成加密。你也可以在SSE-KMS中使用创建一个客户管理的钥匙。这样,你能有更多的灵活性和控制。例如,你可以创建、轮换和禁用客户管理钥匙。你也可以定义访问控制和审计这个客户管理密钥。
在这种加密方案中,你在上传对象时提供加密密钥,AWS承诺立即忘记它。因此,当你检索对象时,你需要发送相同的密钥。
这改变了上传对象的命令。除了桶和密钥外,你还需要定义算法、密钥和密钥的MD5。假设你使用gL6RsUG2fPElqDyMghs1yCrRJMJFLgR9MN
密钥进行加密的请求实例:
配置完成以后,你再获取对象的时候需要加密密钥。如果你不这样做,S3服务会报告一个错误:
An error occurred (InvalidRequest) when calling the GetObject operation: The object was stored using a form of Server Side Encryption. The correct parameters must be provided to retrieve the object.
正确的获取方式如下:
如果制定了规范,用于存储敏感数据的Amazon S3桶中的所有对象进行服务器端加密,可以使用桶策略。例如,如果请求没有x-amz-server-side-encryption头,也就是要求用SSE-KMS进行服务器端加密。下面的桶策略Bucket policy将拒绝每个人的上传对象(s3:PutObject)的权限,
当你上传一个对象时,你可以通过使用x-amz-server-side-encryption-aws-kms-key-id
头来指定KMS密钥。这样如果上传文件的时候没有使用SSE-KMS的方式加密,Amazon S3将拒绝该请求。其中 "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*",替换成你需要管理的S3存储桶。
你还可以通过使用加密密钥的Amazon Resource Name (ARN) 比如 arn:aws:kms:region:acct-id:key/key-id
来指定用于加密的密钥必须是哪一个。其中 "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*",替换成你需要管理的S3存储桶。加密密钥的ARN也注意需要进行替换。
This workshop aims to prepare you for working with KMS and CloudHSM with hands-on capabilities. Go through each section within your own AWS accounts, and use the newly deployed EC2 instance as a disposable environment.
AWS KMS keys (KMS keys)是AWS托管的加密密钥,你可以用加密密钥完成对数据的加密和解密操作。
对称KMS密钥的密钥材料和非对称KMS密钥的私钥永远不会离开AWS KMS,因此你不能提取、导出、查看或管理KMS keys的私钥。如果需要完全自定义管理密钥,则可以考虑CloudHSM这个产品。你可以将你自己的密钥材料导入KMS key,或使用自定义密钥存储来创建KMS密钥,这些密钥使用你的AWS CloudHSM集群中的密钥材料,或你在AWS之外拥有和管理的外部密钥管理器中的密钥材料。
API接口采用 签名实现传输数据保密性验证;
其余需要保证传输过程中保密性的数据都可以使用做数据加密。
注意使用的限制条件,
实现客户端到ECS的传输加密:
S3存储桶;
你可以配置S3 Bucket Keys for SSE-KMS来加密你的S3存储桶,使用桶级别的密钥可以节省成本最高达99%。参见 .
要上传用AWS KMS密钥加密的对象到Amazon S3,你需要密钥的kms:GenerateDataKey
的权限。要下载一个用AWS KMS密钥加密的对象,你需要kms:Decrypt
权限。有关多部分上传所需的AWS KMS权限的信息,请参阅。
更多的存储桶管理策略样例参见:
;
;
[blog]
[workshop]
AWS KMS还支持多区域密钥 ,让你在一个AWS区域加密数据,在另一个AWS区域解密。
关于如何使用AWS KMS keys可以参考此文档:.