本文介绍如何基于ossutil工具,体验oss服务器端加密功能。
关于服务器端加密
OSS支持在服务器端对用户上传的数据进行加密编码(Server-Side Encryption):用户上传数据时,OSS对收到的用户数据进行加密编码,然后再将得到的加密数据持久化保存下来;用户下载数据时,OSS自动对保存的加密数据进行解密并把原始数据返回给用户,并在返回的HTTP请求Header中,声明该数据进行了服务器端加密。
OSS服务器端加密目前支持2种:
- 使用由OSS完全托管的服务端加密(简称AES256加密)
- 使用由KMS托管密钥的服务端加密(简称KMS加密)
详情请参考oss官网服务器端加密编码
关于ossutil
ossutil工具旨在为用户提供一个方便的,以命令行方式管理OSS数据的途径。本文将使用ossutil管理文件(上传、下载、查看元数据信息等),进而体验OSS服务器端加密功能。请先安装和配置ossutil,具体参考oss官网ossutil
AES256加密
本文测试用的bucket是test-oss-encryption
,位于北京region.
1.从本地上传1个测试文件到oss,并声明加密类型为AES256
。
ossutil cp /tmp/test.file oss://test-oss-encryption/encryption_aes256_001 --meta=x-oss-server-side-encryption:AES256
说明:--meta
字段用来添加http请求的header字段,这里是添加了x-oss-server-side-encryption
这个header,对应value为AES256
,这样OSS就会对该文件进行AES256
加密了。
2.查看刚上传的文件meta信息。
ossutil stat oss://test-oss-encryption/encryption_aes256_001
输出结果类似如下:
可以看到该文件的属性中已经多了一项说明:X-Oss-Server-Side-Encryption: AES256
,说明该文件在服务器端已经启用了AES256
加密存储
KMS加密
其实使用KMS加密跟AES256加密类似,只需声明加密算法为KMS
即可。
注意:
- 使用KMS加密算法的前提是,用户已经开通了KMS密钥托管服务,关于该服务请参考官网主页密钥管理服务。
- 用户开通KMS服务后,如果向OSS上传文件时使用
KMS
加密方式,OSS会为用户在当前region创建主密钥,且只会创建1次。OSS为用户创建的KMS主密钥不收管理费用。 - 当用户使用KMS方式上传文件或读取经过KMS加密的文件时,KMS会额外收取少许加解密费用,具体请参考KMS计费标准。
下面开始体验KMS
加密功能
1.从本地上传1个测试文件到oss,并申明加密类型为KMS
。
ossutil cp /tmp/test.file oss://test-oss-encryption/encryption_kms_001 --meta=x-oss-server-side-encryption:KMS
只需要将加密算法声明为KMS
即可。
2.查看刚上传的文件meta信息。
ossutil stat oss://test-oss-encryption/encryption_kms_001
输出结果类似下面
可以看到除了X-Oss-Server-Side-Encryption
值为KMS
外,还有1个特殊字段X-Oss-Server-Side-Encryption-Key-Id
。X-Oss-Server-Side-Encryption-Key-Id
对应的值d66363ea-d18a-4270-9c63-669b79ba8b78
,其实就是OSS给用户在KMS上创建的主密钥的ID。
上图就是我的kms控制台截图,可以看到华北2(北京region)中有1个key, 该key前面有1个阿里云图标。这个key就是OSS给用户在华北2区域创建的主密钥,而密钥ID和我们查看oss文件meta信息时看到的一致。
文件读取
无论是AES256
加密还是KMS
加密,读取文件时都不需要特殊参数,OSS会自动解密并将解密后的结果返回给用户。