陈鹏飞Figo Chen
2019-02-22
1777浏览量
阿里云OSS支持通过API、SDK、工具以及控制台等方式设置Bucket的默认加密方式。当Bucket设置服务端加密后,具有相应权限的用户上传文件到该Bucket时,自动对这些对象进行加密。
Bucket默认加密方式适合于当前和新创建的Bucket。当使用服务端加密时,OSS在将数据保存到阿里云数据中心磁盘之前对其进行加密,并且在下载对象时自动进行解密。
使用OSS托管密钥加密,不会产生额外的费用。但是,使用KMS密钥进行加密时,会产生KMS使用以及相关API调用的费用。OSS服务端加密方式支持设置OSS托管密钥(SSE-OSS)、KMS托管密钥(SSE-KMS)以及KMS的BYOK密钥。
目前该功能已经在美东Region进行公测。如需进行测试,请联系阿里云技术支持或者工单咨询。
当用户创建Bucket时,可以设置Bucket默认加密方式。针对已经存在的Bucket,用户可以在“基础设置”中修改Bucket的默认加密方式。
具体设置步骤如下:
1.登录OSS控制台,选择需要设置的Bucket。切换至“基础设置”页面;
2.选择“服务端加密”,如下所示:
3.目前服务端加密方式有如下3种:
KMS:KMS有2种加密方式:
说明:针对OSS的每个操作均需要取得授权。如下是主要步骤的RAM 授权;
1.STEP1:设置Bucket默认加密方式:
需要具有"Put Bucket Encryption"以及"Get Bucket Encryption"权限;
2.STEP2:选择服务端加密合适的密钥:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey"
],
"Resource": [
"acs:kms:*:1416614965936597:*"
]
}
]
}
说明:如上策略允许用户查看当前reigon下所有合适的CMK ID ,但是仅支持选择1个KMS 密钥;
3.STEP3:子账号上传文件至指定的Bucket:
当配置Bucket 服务端默认加密方式后。用户上传文件到该Bucket的对象,将采用Bucket的默认服务端加密方式进行加密,除非用户在上传文件时特别设置了该对象的加密方式。
Bucket的服务端加密方式设置为AES256或者默认OSS托管的KMS密钥(alias/acs/oss),任何具有上传权限的对象都可以将对象上传至该Bucket,并且采用该Bucket的默认加密方式。若服务端的加密方式为KMS,并且使用了指定的CMK ID。那么用户上传对象至该Bucket时,需要具有对应CMK ID的加密权限。否则该对象因为没有权限调用KMS加密权限,而导致上传失败。如下是给子账号设置具有对应CMKID加密权限的RAM policy示例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:*:1416614965936597:*" //当前示例表示允许调用该账号下所有的KMS密钥,如果仅限制使用某个KMS,此处可输入对应的CMK ID
]
}
]
}
4.STEP4:子账号从Bucket中下载加密的对象:
当设置了Bucket默认服务端加密方式后,上传到该Bucket的对象默认都会进行服务端加密。可以授权子账号从该Bucket下载对象。若Bucket的服务端加密方式是AES256以及OSS默认托管的KMS密钥(该密钥别名是alias/acs/oss),此时具有下载权限的用户都可以从该Bucket下载对象。OSS会自动对加密的对象进行解密,并且将明文对象返回给用户。
若该Bucket设置了使用指定KMS的密钥进行加密,那么下载该Bucket内对象的用户除了需要具备get object权限外,还需要具有指定KMS密钥对应的解密权限。若该子账号仅具有get object权限,而没有对应KMS的解密权限(decrypt权限),那么用户下载文件时也会提示下载失败。阿里云OSS不会将加密后的密文对象直接返回给用户。如下是给子账号设置具有KMS解密权限的RAM policy:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"acs:kms:*:1416614965936597:*"//该示例表示子账号具有当前所有KMS的解密权限。若要针对某个KMS密钥进行解密,此处可输入对应的CMK ID
]
}
]
}
说明:下载使用了指定KMS密钥加密的对象是需要额外配置相关KMS权限。所以,当您的AK被泄露后,您可以通过禁用KMS或者修改kms相关policy,已拒绝所有用户对该Bucket的请求。
如下,您也可以使用API方式设置Bucket 服务端默认加密方式:
当前还不支持SDK以及工具方式设置Bucket 默认加密方式,预计2019年上半年支持该特性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。