你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB 中的数据加密

适用对象: NoSQL MongoDB Cassandra Gremlin

“静态加密”这个短语通常指永久性存储设备(例如固态硬盘 (SSD) 和硬盘驱动器 (HDD))上的数据的加密。 Azure Cosmos DB 将其主数据库存储在 SSD 上。 其媒体附件和备份存储在 Azure Blob 存储中,通常由 HDD 进行备份。 随着 Azure Cosmos DB 静态加密功能的发布,所有数据库、媒体附件以及备份都将进行加密。 现在数据在传输中(通过网络)以及在静态时(非易失性存储)都处于加密状态,从而实现端到端加密。

作为平台即服务 (PaaS),Azure Cosmos DB 易于使用。 存储在 Azure Cosmos DB 中的所有用户数据无论是在传输过程中,还是处于静态时都处于加密状态,因此无需采取任何措施。 换句话说,静态加密默认为“开启”。 没有任何控件可以关闭或打开它。 Azure Cosmos DB 在运行帐户的所有区域中使用 AES-256 加密。

在提供此功能的同时,我们继续满足可用性和性能服务级别协议 (SLA)。 存储在 Azure Cosmos DB 帐户中的数据将自动使用 Microsoft 管理的密钥(服务托管密钥)进行无缝加密。 或者,可以选择使用自己的密钥来添加另一层加密,如客户托管的密钥一文中所述。

实现针对 Azure Cosmos DB 的静态加密

静态加密是通过多项安全技术实现的,其中包括安全密钥存储系统、加密网络以及加密 API。 对数据进行解密和处理的系统必须与管理密钥的系统通信。 下图展示了加密数据的存储和密钥的管理是如何隔离的。

Diagram that shows data storage and key management design.

用户请求的基本流程如下:

  • 用户数据库帐户准备就绪以后,通过向管理服务资源提供程序发出请求来检索存储密钥。
  • 用户通过 HTTPS/安全传输创建与 Azure Cosmos DB 的连接。 (SDK 将详细信息抽象化。)
  • 用户通过之前创建的安全连接发送要存储的 JSON 文档。
  • 为 JSON 文档编制索引,除非用户已关闭索引编制功能。
  • 将 JSON 文档和索引数据都写入到安全存储中。
  • 定期从安全存储中读取数据并将其备份到 Azure 加密 Blob 存储中。

常见问题

查找有关加密的常见问题的解答。

如果启用存储服务加密,需另付多少 Azure 存储费用?

没有额外费用。

加密密钥由谁管理?

Azure Cosmos DB 帐户中存储的数据将使用服务托管密钥通过 Microsoft 管理的密钥进行自动无缝加密。 或者,你可以选择使用你管理的密钥(通过使用客户管理的密钥)添加另一层加密。

加密密钥多久轮换一次?

Microsoft 有一套关于加密密钥轮换的内部指导,Azure Cosmos DB 按该指导执行。 具体指导方针不对外公布。 Microsoft 会对外公布安全开发生命周期,其被视为内部指导的一部分,可为开发人员提供有用的最佳实践。

我可以使用自己的加密密钥吗?

是的,新的 Azure Cosmos DB 帐户可以使用此功能。 应在创建帐户时部署它。 有关详细信息,请参阅客户管理的密钥文档。

警告

通过使用客户管理的密钥,以下字段名称会保留在帐户中的 Cassandra API 表上:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

如果未启用客户管理的密钥,则仅保留以 __sys_ 开头的字段名称。

哪些区域已开启了此加密?

所有 Azure Cosmos DB 区域都已针对所有用户数据开启了此加密。

加密是否会影响性能延迟和吞吐量 SLA?

性能 SLA 没有受到影响或发生更改,因为所有现有和新的帐户现在都启用了静态加密。 若要查看最新保证,请参阅 Azure Cosmos DB 的 SLA

本地模拟器是否支持静态加密?

模拟器是独立的开发/测试工具,不使用托管 Azure Cosmos DB 服务使用的密钥管理服务。 建议在存储敏感模拟器测试数据的驱动器上启用 BitLocker。 模拟器支持对默认数据目录进行更改,也支持使用已知位置。

后续步骤