【最佳实践】使用BYOK密钥加密OSS中对象

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 1. 服务端加密介绍 使用服务器端加密方式保护静态数据,即OSS将用户数据写入数据中心内的磁盘时,会在对象级别加密数据,并且在访问这些数据时自动解密。用户只需要验证请求是否拥有访问权限。当前OSS支持如下两种服务端加密方式(注意:您不能对同一对象同时应用两种不同类型的服务器端加密方式): 使用由OSS完全托管的服务端加密功能:数据加密密钥的生成和管理,由OSS负责,并采用高强度、多因素的安全措施进行保护。

1. 服务端加密介绍

使用服务器端加密方式保护静态数据,即OSS将用户数据写入数据中心内的磁盘时,会在对象级别加密数据,并且在访问这些数据时自动解密。用户只需要验证请求是否拥有访问权限。当前OSS支持如下两种服务端加密方式(注意:您不能对同一对象同时应用两种不同类型的服务器端加密方式):

  • 使用由OSS完全托管的服务端加密功能:数据加密密钥的生成和管理,由OSS负责,并采用高强度、多因素的安全措施进行保护。数据加密的算法采用使用行业标准的强加密算法AES-256(即256位高级加密标准)。
  • 使用由KMS托管密钥的服务端加密功能:除了采用AES-256加密算法外,KMS负责保管用户主密钥CMK(对数据密钥进行加密的密钥),以及生成数据加密的密钥,通过信封加密机制,进一步防止未经授权的数据访问。其中,会涉及少量额外的KMS密钥API调用费用(参考:KMS计费标准)。暂时只支持中国大陆、香港、日本、新加坡区域,其余区域会尽快开放。

PS:如下重点介绍SSE-KMS加密方式:

2. 使用由KMS托管密钥的服务器端加密

KMS(Key Management Service)是阿里云提供的一款安全、易用的密钥管理系统。当用户上传object时,在请求中携带x-oss-server-side-encryption的HTTP Header,并指定其值为KMS。OSS支持使用默认的CMK加密对象,同时也支持使用用户指定的CMK 进行加密。
image

如上是SSE-KMS服务端加密的逻辑示意图。关于Customer Master Key的生成方式有多种,如下一一介绍:

  • 使用OSS默认托管的KMS密钥:当用户上传object时,在请求中携带X-OSS-server-side-encrpytion并指定其值为KMS。OSS将使用默认托管的CMK加密每个对象,并且在下载时自定解密;
  • 使用用户指定的CMK :当用户上传object时,在请求中指定X-oss-server-side-encrpytion-key-id为具体的CMK ID。OSS将使用指定的CMK(密钥材料来源于阿里云KMS)来加密每个对象。并且加密object的CMK ID记录到对象的元数据中,因此具有解密权限的用户下载对象时自动进行解密。
  • 使用用户BYOK材料进行加密:目前阿里云KMS服务支持导入用户自己的BYOK密钥材料。如下图所示,用户创建1个不带密钥材料的CMK,并按照提示导入外部密钥材料。当用户上传object时,在请求中指定X-oss-server-side-encrpytion-key-id为使用外部密钥材料的CMK ID。

【补充说明】

  • 用户需要实现开通KMS服务;
  • 使用“服务端加密-KMS托管主密钥”加解密对象时,会产生一定的KMS请求调用费用;
  • 用于加密数据的数据密钥也会被加密,并且作为Object的元数据信息一并存储;
  • KMS托管密钥的服务器端加密方式仅加密对象数据,不会加密任何对象的元数据;

1.目前以下操作,支持在请求中携带这些x-oss-server-side-encryption Header头:

  • Put Object: 简单上传
  • Copy Object: 复制Object
  • Initiate Multipart Upload:

2.通过服务器端加密存储的object时,以下API请求中OSS会返回x-oss-server-side-encryption头:

  • Put Object
  • Copy Object
  • Initiate Multipart Upload
  • Upload Part
  • Complete Multipart Upload
  • Get Object
  • Head Object

3.配置示例:

3.1配置前提

  • 演示region:香港站
  • 演示bucket :test-hongkong-2025
  • 演示工具:ossutil

3.2演示说明

  1. 【step1】:上传1个明文对象至OSS
    我们当前使用香港region进行演示说明。因此,我们将1个对象上传至香港region的bucket(bucket名:test-hongkong-2025)
D:\5-AK账号\ossutil64>ossutil64.exe stat  oss://test-hongkong-2025/01.txt
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 62
Content-Md5                 : k2GA4LeqHvVpQvBfnleNOg==
Content-Type                : text/plain
Etag                        : 936180E0B7AA1EF56942F05F9E578D3A
Last-Modified               : 2018-10-24 20:41:54 +0800 CST
Owner                       : 1416614965936597
X-Oss-Hash-Crc64ecma        : 9888192182077127097
X-Oss-Object-Type           : Normal
X-Oss-Storage-Class         : Standard
1.257000(s) elapsed

如上所示,我们上传了1个明文文件;

2.【step2】:在香港region创建KMS密钥
由于KMS加密服务不支持跨region操作。因此,我们在香港region创建1个CMK,并且导入外部密钥材料。如下所示:
image

3.【step3】:使用指定的CMK ID加密上传对象
为了简化演示过程,我们通过python将【step1】中上传的明文文件01.txt的加密属性修改为使用指定的CMK ID进行加密;

#PYTHON 脚本如下

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>
')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hongkong.aliyuncs.com', 'test-hongkong-2025')

bucket.update_object_meta('01.txt',{'x-oss-server-side-encryption':'KMS','x-oss-server-side-encryption-key-id': '33701a45-6723-4a04-a367-68c060382652'})

4.【step4】:查看使用指定CMK ID 加密对象的元数据信息
如下,我们使用ossutil工具查看:

D:\5-AK账号\ossutil64>ossutil64.exe stat  oss://test-hongkong-2025/01.txt
ACL                         : default
Accept-Ranges               : bytes
Content-Length              : 62
Content-Md5                 : k2GA4LeqHvVpQvBfnleNOg==
Content-Type                : text/plain
Etag                        : 936180E0B7AA1EF56942F05F9E578D3A
Last-Modified               : 2018-10-24 20:46:39 +0800 CST
Owner                       : 1416614965936597
X-Oss-Hash-Crc64ecma        : 9888192182077127097
X-Oss-Object-Type           : Normal
X-Oss-Server-Side-Encryption: KMS
X-Oss-Server-Side-Encryption-Key-Id: 33701a45-6723-4a04-a367-68c060382652
X-Oss-Storage-Class         : Standard
1.411000(s) elapsed
相关文章
|
2月前
|
存储 安全 API
oss客户端加密密钥管理
阿里云OSS数据加密涉及SSE-C和SSE-KMS两种方案。SSE-C中,客户端自动生成并管理DEK,负责加密和解密数据,需确保密钥的安全存储和访问控制。SSE-KMS则利用KMS生成和管理密钥,客户端通过API请求加密/解密密钥,实现更安全的密钥管理。无论哪种方式,都需要遵循密钥生命周期管理、访问控制、安全存储和定期轮换等最佳实践。选择SSE-C需要客户端有安全的密钥存储,而SSE-KMS则需关注与KMS的API交互和访问策略。
29 3
|
2月前
|
存储 安全 开发工具
oss加密存储
阿里云OSS为数据安全提供多种加密机制,包括服务器端的SSE-S3(AES-256透明加密)、SSE-C(用户管理密钥)和CSE-KMS(结合KMS进行密钥管理)。此外,OSS支持客户端加密SDK和HTTPS传输加密,确保数据在传输和存储时的安全。通过ACL、Bucket策略和访问密钥身份验证,实现权限控制与身份验证,全方位保障用户数据的安全性和隐私。用户可按需选择适合的加密方式。
48 2
|
2月前
|
存储 安全 数据安全/隐私保护
oss客户端加密
阿里云OSS客户端加密提供了一种安全机制,用户在上传数据前可在本地进行加密。流程包括:使用本地配置的主密钥(对称或非对称)加密一次性数据密钥,再用数据密钥加密对象,加密后的数据密钥与对象一同上传。下载时,通过主密钥解密数据密钥,然后解密对象。此方式确保数据全程加密,增强安全性,但需用户妥善管理密钥以保证数据可访问性。
47 5
|
2月前
|
存储 安全 数据安全/隐私保护
oss服务器端加密
阿里云OSS提供服务器端加密,使用AES-256自动加密数据,保证上传至OSS的数据安全。下载时自动解密,透明处理。加密增强静态数据安全性,满足合规需求。支持OSS或KMS管理密钥,实现细粒度权限控制。确保云端对象数据全生命周期安全。
41 7
|
2月前
|
安全 API 开发工具
oss加密的配置方法
阿里云OSS提供多种加密选项:SSE-OSS(默认或对象级AES-256加密)、SSE-KMS(使用KMS托管CMK)、临时密钥加密和客户端加密(CSE)。可通过控制台或API设置Bucket策略,使用HTTP头部指定加密方式。KMS和临时密钥可能涉及更复杂的密钥管理和权限配置。
177 5
|
24天前
|
存储 数据可视化 安全
对象存储OSS产品常见问题之有几十亿个txt文件,单个4kb,使用oss如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
52 11
|
24天前
|
存储 弹性计算 文件存储
对象存储OSS产品常见问题之OSS Bucket 创建好后更改存储类型如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
45 0
|
24天前
|
存储 移动开发 前端开发
对象存储oss使用问题之OSS SDK .net 使用下载例程报错如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
29 0
|
24天前
|
安全 Java 网络安全
对象存储oss使用问题之使用oss上服务器后显示服务异常如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
28 0
|
1月前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。

相关产品

  • 对象存储