阿里云对象存储服务(OSS,Object Storage Service)的加密工作流程可以按照服务器端加密(Server-Side Encryption,SSE)和客户端加密(Client-Side Encryption)两种模式分别描述:
服务器端加密(SSE)工作流程:
SSE-KMS BYOK:
- 用户启用服务器端加密功能,并选择使用KMS托管密钥(Bring Your Own Key, BYOK)的方式。
- 用户在上传对象到OSS时,可以选择通过指定请求头
X-OSS-server-side-encryption
设置为KMS
,同时指明X-OSS-server-side-encryption-key-id
为特定的CMK(客户主密钥)ID。 - OSS服务在接收到上传请求后,使用指定的CMK加密对象数据。
- 加密后的对象被存储在OSS中,对应的CMK ID会被记录在对象的元数据中。
- 当用户下载加密的对象时,OSS服务会检查元数据中的CMK ID,调用KMS服务自动解密数据,然后将解密后的原始数据返回给用户。
SSE-KMS 默认密钥:
- 用户开启SSE-KMS加密但不指定密钥时,OSS会使用默认的KMS托管密钥加密对象。
- 同样在上传和下载过程中,OSS会负责加密和解密操作。
客户端加密(CSE)工作流程:
- 客户端加密:
- 用户使用阿里云提供的客户端加密SDK,在本地对数据进行加密。
- 加密过程发生在客户端应用程序中,通常使用用户自行管理的密钥对数据进行加密。
- 加密后的数据通过安全通道上传至OSS。
- 下载时,用户需要使用相同的密钥在本地解密从OSS下载回来的加密数据。
共享流程要点:
- 对于服务器端加密,OSS会在数据写入存储介质前加密,并在读取时自动解密,减轻了用户的加密管理负担。
- 对于客户端加密,加密和解密的责任在于客户端应用,提供了更高的灵活性但同时也增加了管理复杂性。
- 不论哪种加密方式,都确保了在传输和静止状态下数据的安全性。
在实际操作中,用户可以根据自己的安全需求和合规性要求选择合适的加密方法。