当您的业务因为安全需求或法规合规要求等原因,需要对存储在云盘上的数据进行加密保护时,您可以使用阿里云ECS云盘加密功能。无需单独构建和维护密钥管理基础设施,即可保护数据的隐私性和自主性。

本文中的云盘指代云盘和共享块存储。下文中统一简称为云盘,除非特别指出。

什么是云盘加密

使用云盘加密功能,系统会将从ECS实例传输到云盘的数据自动加密,并在读取数据时自动解密。加密解密在ECS实例所在的宿主机上进行,对从ECS实例传输到云盘的数据进行加密。在加密解密的过程中,云盘的性能几乎没有衰减。关于性能测试方式,请参见块存储性能

在创建了一块加密云盘并将其挂载到ECS实例后,系统将对以下数据进行加密:
  • 云盘中的静态数据
  • 云盘和实例间传输的数据(不支持加密系统盘数据)
  • 从加密云盘创建的所有快照(即,加密快照)

云盘加密支持所有在售云盘,包括普通云盘、高效云盘、SSD云盘和ESSD云盘。

云盘加密支持所有在售的实例规格。所有地域都支持云盘的加密。

云盘加密的依赖

云盘加密功能依赖于同一地域的密钥管理服务(Key Management Service,KMS),但是您无需到密钥管理服务控制台做额外的操作,除非您有单独的KMS操作需求。详情请参见密钥管理服务(KMS)

首次使用云盘加密功能(在ECS实例售卖页或者独立云盘售卖页)时,需要根据页面提示授权开通密钥管理服务(KMS),否则将无法购买带有加密云盘的实例或者加密的独立云盘。

如果通过API或者CLI使用云盘加密功能,例如RunInstancesCreateInstanceCreateDisk,您需要先在阿里云网站上开通密钥管理服务。

当您在一个地域第一次使用加密盘时,ECS系统会为您在密钥管理服务(KMS)中的使用地域自动创建一个专为ECS使用的用户主密钥(Customer Master Key,CMK),这个用户主密钥免费,您可以在密钥管理服务控制台上查询到该用户主密钥,但不能删除。

云盘加密的密钥管理

云盘加密功能通过行业标准的AES-256算法,利用数据密钥加密您的卷。每个阿里云账号在每个地域都具有唯一识别的用户主密钥(CMK),该密钥与数据分开,存储在一个受严格的物理和逻辑安全控制保护的系统上。

每个地域的新创建云盘都使用这一地域下唯一的256位密钥(来自于CMK)加密。云盘的所有快照以及从这些快照创建的云盘也关联该密钥。这些密钥受阿里云KMS提供的密钥管理基础设施的保护,实施强逻辑和物理安全控制以防止未经授权的访问。阿里云的密钥管理基础设施符合(NIST)800-57中的建议,并使用了符合(FIPS)140-2标准的密码算法。

云盘的加密密钥仅在您的ECS实例所在的宿主机的内存中使用,永远不会以明文形式存储在任何永久介质(如云盘)上。

使用限制

  • 只能加密云盘,不能加密本地盘。
  • 只能加密数据盘,不能加密系统盘。
  • 已经存在的非加密盘,不能直接转换成加密盘。
  • 已经加密的云盘,也不能转换为非加密云盘。
  • 已经存在的非加密盘产生的快照,不能直接转换成加密快照。
  • 加密快照不能转换为非加密快照。
  • 不能共享带有加密快照的镜像。
  • 不能跨地域复制带有加密快照的镜像。
  • 不能导出带有加密快照的镜像。
  • 每个地域每个用户无法自己选择用户主密钥(CMK),由系统为您生成。
  • 每个地域ECS系统创建的用户主密钥(CMK),用户不能删除,但不收费用。
  • 不支持在云盘加密后更换该云盘用于加解密的关联的用户主密钥。

费用

ECS不对云盘加密功能收取额外的费用。

ECS为您在每个地域创建的用户主密钥(CMK)属于服务密钥,不收取额外费用,也不占用您在每个地域的主密钥数量限制。

说明 您对云盘的任何读写操作(例如mount/umount、分区、格式化等)都不会产生费用。但是,凡是涉及云盘本身的管理操作(见下面列表),无论是通过ECS管理控制台还是通过API,均会以API的形式使用到密钥管理服务(KMS),将会记入到您在该地域的KMS服务API调用次数。请注意,目前KMS每个用户每月有20000次的免费额度,但一旦高频率大量操作超过免费额度,则会产生费用。详情请参见密钥管理服务计费方式
对加密云盘的管理操作包括:

请保证您的账户余额充足,否则会出现操作失败,进而可能产生额外的费用。

创建加密云盘

目前,云盘加密功能只支持数据盘。您可以通过不同渠道创建加密云盘:

  • 通过购买实例页面或购买云盘页面:

    • 勾选加密选项,创建加密的空盘。
    • 选择加密快照来创建云盘。
  • 通过API或CLI:

    • 指定参数DataDisk.n.EncryptedRunInstancesCreateInstance)或者EncryptedCreateDisk)为 true
    • 在CreateInstance或CreateDisk中,指定加密快照的SnapshotId

转换数据加密状态

已经存在的非加密盘,不能直接转换成加密盘。已经存在的加密盘,不能直接转换成非加密盘。

已经存在的非加密盘产生的快照,不能直接转换成加密快照。已经存在的加密盘产生的快照,不能直接转换成非加密快照。

所以,如果您需要对现有数据非加密状态转换为加密状态,阿里云推荐用Linux下的rsync命令或者Windows下的robocopy命令将数据从非加密盘上复制到(新创建的)加密盘上。

如果您需要对现有数据加密状态转换为非加密状态,则用Linux下的rsync命令或者 Windows下的robocopy命令将数据从加密盘上复制到(新创建的)非加密盘上。