本文介绍了当前支持服务端集成加密的云服务。云服务通过使用服务托管密钥或者用户自选密钥(包括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

提供透明数据加密TDE功能,加密方式和RDS类似。

设置透明数据加密TDE
云数据库PolarDB

提供透明数据加密TDE功能,加密方式和RDS类似。

云数据库 OceanBase

提供透明数据加密TDE功能,加密方式和RDS类似。

TDE 透明加密
云数据库 Redis

提供透明数据加密TDE功能,加密方式和RDS类似。

开启透明数据加密TDE

日志数据加密

服务名称 描述 相关文档
操作审计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代码加密服务,几乎不影响代码托管性能。
代码仓库加密