一、适用场景
·私密数据存储场景:对于私密数据的存储,服务端加密可以对存储的数据进行加密,保证用户的隐私,用户访问时会自动解密。
·私密数据传输场景:对于私密数据的传输,COS 提供使用 HTTPS 部署 SSL 证书实现加密的功能,在传输链路层上建立加密层,确保数据在传输过程中不会被窃取及篡改。
二、加密方式
COS 支持多种服务端加密方式:SSE-COS、SSE-KMS、SSE-C。用户可以自行选择合适的加密方式对存放到 COS 中的数据进行加密。
三、SSE-COS 加密
SSE-COS 加密即 COS 托管密钥的服务端加密。由腾讯云 COS 托管主密钥和管理数据。用户通过 COS 直接对数据进行管理和加密。SSE-COS 采用了多因素强加密,确保使用唯一的密钥加密每个对象,并且会通过定期轮换的主密钥来对密钥本身进行加密。
SSE-COS 模式支持 AES256和 SM4两种加密算法,默认使用 AES256算法,上传对象时可以通过服务端加密头部 x-cos-server-side-encryption 指定加密算法。
注意:对于使用预签名 URL 上传的对象,则无法使用 SSE-COS 加密。只能使用 COS 控制台或 HTTP 请求头部指定服务端加密。
四、SSE-KMS 加密
SSE-KMS 加密即使用 KMS 托管密钥的服务端加密。KMS 是腾讯云推出的一款安全管理类服务,使用经过第三方认证的硬件安全模块 HSM(Hardware Security Module)来生成和保护密钥。它能够帮助用户轻松创建和管理密钥,满足用户多应用多业务的密钥管理需求以及满足监管和合规要求。
SSE-KMS 模式支持 AES256和 SM4两种加密算法,默认使用 AES256算法,上传对象时可以通过服务端加密头部 x-cos-server-side-encryption-cos-kms-algorithm 指定加密算法。
首次使用 SSE-KMS 加密,需要 开通 KMS 服务,开通后,系统会自动为你创建一个默认主密钥(CMK)。你也可以通过 KMS 控制台 自主创建密钥,定义密钥策略及使用方法,KMS 支持用户自主选择密钥材料来源为 KMS 或外部,更多信息请参见 创建密钥 和 外部密钥导入。
五、注意事项
若你未使用过 COS 控制台进行 SSE-KMS 加密,而只使用 API 的方式进行 SSE-KMS 加密时,你需先创建 CAM 角色,具体创建步骤如下:
1. 登录访问管理控制台,进入 角色 列表页面。
2. 单击新建角色,选择角色载体为腾讯云产品服务。
3. 选择支持角色的服务为对象存储,单击下一步。
4. 配置角色策略,搜索并勾选 QcloudKMSAccessForCOSRole,单击下一步。
5. 标记角色的标签键和标签值,单击下一步。
6. 输入指定角色名称:COS_QCSRole。
注意:说明:
注意:访问管理 CAM 角色列表中,存量的角色名称“COS_QcsRole”仍可继续使用,生效状态不受影响。
7. 单击完成即可创建完毕。
六、SSE-C 加密
SSE-C 加密即用户自定义密钥的服务端加密。加密密钥由用户自己提供,用户在上传对象时,COS 将使用用户提供的加密密钥对用户的数据进行加密。SSE-C 模式支持 AES256和 SM4两种加密算法,默认使用 AES256算法,上传对象时可以通过服务端加密头部 x-cos-server-side-encryption-customer-algorithm 指定加密算法。
注意:COS 不存储用户提供的加密密钥,而是存储加密密钥添加了随机数据的 HMAC 值,该值用于验证用户访问对象的请求。COS 无法使用随机数据的 HMAC 值来推导出加密密钥的值或解密加密对象的内容。因此,如果用户丢失了加密密钥,则无法再次获取到该对象。
七、使用对象存储控制台
1. 登录 对象存储控制台。
2. 在左侧导航栏中,单击存储桶列表,进入存储桶列表页面。
3. 找到对象所在的存储桶,单击其存储桶名称,进入存储桶管理页面。
4. 在左侧导航栏中,选择文件列表,进入文件列表页面。
5. 找到你要设置加密的对象,在其右侧操作栏中,单击详情。
6. 在“服务端加密”栏中,选择对应的加密方式,并单击保存即可。
7. 目前支持以下两种加密方式:
·SSE-COS:由 COS 托管密钥的服务端加密方式,更多关于 SSE-COS 的信息,请参见 服务端加密概述:SSE-COS。
·SSE-KMS:由腾讯云密钥管理系统 KMS 托管密钥的服务端加密方式,可选择使用默认密钥或自建密钥。关于密钥信息,请参见 创建 KMS 密钥, 关于 SSE-KMS 的更多信息,请参见 服务端加密概述:SSE-KMS。
注意:说明:
八、使用 REST API/SDK
对于 SSE-COS、SSE-KMS 加密,支持以下 API 接口:
·PUT Object
·Initiate Multipart Upload
·PUT Object – Copy
·POST Object
注意:说明:
注意:如果使用非 POST 请求上传对象,可通过提供 x-cos-server-side-encryption-* 头部来应用服务端加密;使用 POST 请求,则需在表单字段中提供 x-cos-server-side-encryption-* 字段,详情请参见 POST Object。
对于 SSE-C 加密,支持以下 API 接口:
·GET Object
·HEAD Object
·PUT Object
·Initiate Multipart Upload
·Upload Part
·POST Object
·PUT Object – Copy
注意:说明:
你可以调用 SDK 的管理服务端加密方法,详情请参见下列各语言 SDK 文档:
Android、C、C++、.NET(C#)、Go、iOS、Java、JavaScript、Node.js、PHP、Python、小程序。