本文介绍了当前支持服务端集成加密的云服务。云服务通过使用服务托管密钥或者用户自选密钥(包括BYOK-自带密钥)对不同场景和类型的数据进行服务端加密保护。

工作负载数据加密

服务名称 描述 相关文档
云服务器ECS

ECS云盘加密功能默认使用服务密钥为用户数据进行加密,也支持使用用户自选密钥为用户的数据进行加密。云盘的加密机制中,每一块云盘(Disk)会有相对应的用户主密钥(CMK)和数据密钥(DK),并通过信封加密机制对用户数据进行加密。

使用ECS云盘加密功能,系统会将从ECS实例传输到云盘的数据自动进行加密,并在读取数据时自动解密。加密解密操作在ECS实例所在的宿主机上进行。在加密解密的过程中,云盘的性能几乎没有衰减。

在创建加密云盘并将其挂载到ECS实例后,系统将对以下数据进行加密:
  • 云盘中的静态数据
  • 云盘和实例间传输的数据(实例操作系统内数据不加密)
  • 从加密云盘创建的所有快照(即加密快照)
加密概述
容器服务Kubernetes版ACK

容器服务中的以下两类工作负载数据支持基于KMS的服务端加密:

  • Kubernetes Secrets

    在Kubernetes集群中,我们通常使用Secrets密钥模型存储和管理业务应用涉及的敏感信息。例如:应用密码、TLS证书、Docker镜像下载凭据等敏感信息。Kubernetes会将所有的这些Secrets密钥对象数据存储在集群对应的ETCD中。

  • 存储卷

    存储卷可以是云盘、OSS、或者NAS卷。针对各类存储卷,可以采用特定存储类型的服务端KMS加密方式。例如:您可以创建一个加密云盘,随后挂载为Kubernetes存储卷。

使用阿里云KMS进行Secret的落盘加密
Web应用托管服务Web+

Web+使用KMS对应用托管服务中使用的敏感配置数据进行加密保护,这包含了类似RDS数据库的访问凭证等机密信息。

应用配置管理ACM
ACM通过和KMS集成,对应用配置进行加密,确保敏感配置(数据源、Token、用户名、密码等)的安全性,降低用户配置的泄露风险。ACM服务端和KMS的集成有以下两种方式:
  • 在KMS服务端直接加密

    ACM服务通过KMS的数据加密API,将配置传送到KMS端,指定CMK完成对配置的加密。

  • 在ACM服务端信封加密

    通过KMS的API,使用指定CMK来保护生成的数据密钥(DK),使用数据密钥(DK)在ACM服务端完成对配置的加密。

创建和使用加密配置

持久化存储数据加密

服务名称 描述 相关文档
对象存储OSS
OSS支持在服务器端对上传的数据进行加密(Server-Side Encryption):
  • 上传数据时,OSS对收到的用户数据进行加密,然后将得到的加密数据持久化保存。
  • 下载数据时,OSS自动对保存的加密数据进行解密并把原始数据返回给用户。在返回的HTTP请求Header中,声明该数据进行了服务器端加密。

OSS在支持集成KMS之前就支持了SSE-OSS,即:使用OSS私有密钥体系进行服务端加密。这种方式并不使用归属用户的密钥,因此用户无法通过操作审计服务审计密钥使用情况。

OSS支持集成KMS进行服务端加密,称之为SSE-KMS。OSS支持使用服务密钥和用户自选密钥两种方式进行服务端加密。OSS既支持在桶级别配置默认加密CMK,也支持在上传每个对象时使用特定的CMK。

文件存储NAS

NAS的加密功能默认使用服务密钥为用户的数据进行加密。NAS的加密机制中,每一卷(Volume)会有相对应的用户主密钥(CMK)和数据密钥(DK),并通过信封加密机制对用户数据进行加密。

服务器端加密
表格存储Tablestore

表格存储的加密功能默认使用服务密钥为用户的数据进行加密,同时也支持使用用户自选密钥为用户的数据进行加密。表格存储的加密机制中,每一个表格(Table)会有相对应的用户主密钥(CMK)和数据密钥(DK),并通过信封加密机制对用户数据进行加密。

云存储网关CSG
云存储网关CSG支持两种方式进行加密:
  • 网关侧加密:文件会在网关侧缓存盘进行加密后上传至OSS。
  • 基于OSS对数据进行加密。

数据库加密

服务名称 描述 相关文档
关系型数据库RDS RDS数据加密提供以下两种方式:
  • 云盘加密

    针对RDS云盘版实例,阿里云免费提供云盘加密功能,基于块存储对整个数据盘进行加密。云盘加密使用的密钥由KMS服务加密保护,RDS只在启动实例和迁移实例时,动态读取一次密钥。

  • 透明数据加密TDE

    RDS提供MySQL和SQL Server的透明数据加密TDE(Transparent Data Encryption)功能。TDE加密使用的密钥由KMS服务加密保护,RDS只在启动实例和迁移实例时动态读取一次密钥。当RDS实例开启TDE功能后,用户可以指定参与加密的数据库或者表。这些数据库或者表中的数据在写入到任何设备(磁盘、SSD、PCIe卡)或者服务(对象存储OSS)前都会进行加密,因此实例对应的数据文件和备份都是以密文形式存在的。

云数据库MongoDB

MongoDB加密和RDS类似。

设置透明数据加密TDE
云数据库PolarDB PolarDB加密和RDS类似。

日志数据加密

服务名称 描述 相关文档
操作审计Actiontrail

创建单账号跟踪或者多账号跟踪时,如果选择投递到OSS,可以在操作审计控制台加密直接加密操作事件。

日志服务 SLS

日志服务支持通过KMS对数据进行加密存储,提供数据静态保护能力。

数据加密

大数据与人工智能

服务名称 描述 相关文档
大数据计算MaxCompute

MaxCompute支持使用服务密钥或者自选KMS密钥进行数据加密。

数据加密
机器学习PAI 机器学习PAI产品架构中,计算引擎、容器服务、数据存储等各个数据流转环节,相应的云服务均可以配置服务端加密,保护数据的安全与隐私。

更多场景

服务名称 描述 相关文档
内容分发网络CDN 当使用OSS Bucket作为源站时,可以使用基于OSS的服务端加密保护分发内容。请参考CDN文档,配置CDN访问加密Bucket。 OSS私有Bucket回源
媒体处理MTS

MTS支持私有加密和HLS标准加密两种方式,均可以集成KMS对视频内容进行保护。

加密

视频点播VOD

VOD支持阿里云视频加密和HLS标准加密两种方式,均可以集成KMS对视频内容进行保护。

云效代码管理Codeup 云效代码管理Codeup使用KMS服务密钥对用户提交的源码进行加密,确保云端代码数据不泄露。在代码加密过程中,每个代码库都有对应的数据密钥(DK),并通过信封加密机制对代码数据进行加密,在获得用户密钥授权的前提下:
  • 当用户使用Git客户端或页面提交Git数据时,Codeup对收到的代码数据执行加密,并持久化存储加密后的数据。
  • 当用户使用Git客户端或页面访问Git数据时,Codeup根据授权对保存的加密数据进行解密,并把原始数据返回给用户。
说明 启用Codeup代码加密服务,几乎不影响代码托管性能。
代码仓库加密