密钥管理服务KMS(Key Management Service)面向阿里云产品提供默认加密能力,加密时您可以使用云产品默认创建的服务密钥,也可以使用在KMS中自行创建的密钥。本文介绍云产品集成KMS加密的优势以及加密机制等。
阿里云产品集成KMS加密的优势
增加数据的安全和隐私保护
阿里云KMS面向大部分阿里云产品(以下简称云产品)提供数据加密能力,您可以在创建云产品时设置加密方案,也可以在创建后设置。KMS对云产品使用过程中的云内数据(例如数据库引擎产生的文件等)进行全链路加密,从而为您提供云上数据更安全的加密方案,增加数据整体的安全性和隐私性。
降低自研数据加密带来的研发成本
在自研数据加密时通常需要解决如下问题,云产品服务端集成KMS加密为您解决了这些复杂的工程和安全问题,降低了研发成本。
设计合理的密钥层次结构和数据划分方式,以平衡加密性能和安全性。
需要考虑密钥轮转、数据重加密。
需要掌握密码学技术,选择合适的加密算法,保证加密体系的健壮性、安全性以及防篡改能力等。
支持云产品加密的密钥类型
KMS提供的默认密钥、软件密钥、硬件密钥,均支持被阿里云产品集成用于服务端加密,具体请参见下表。更多信息,请参见密钥服务概述。
密钥创建者 | 密钥类型 | 密钥材料来源 | 计费说明 | 说明 |
云产品创建 | 默认密钥(服务密钥) | 由KMS生成。 | 免费。 | 每个阿里云账号下的每种云产品,在每个地域下仅支持创建一个服务密钥。 |
用户自行创建 | 默认密钥(主密钥) | 支持如下方式:
| 免费。 | 创建密钥后您需要为云产品授权,允许其使用该密钥。具体操作,请参见使用RAM实现对资源的访问控制。 |
软件密钥 | 由KMS生成。 | 付费。 | ||
硬件密钥 | 支持如下方式:
| 付费。 |
使用密钥进行云产品服务端加密的流程
本文以购买云产品时配置密钥进行服务端加密为例,您也可以购买云产品后再配置。具体操作,请参见各云产品官网文档。
云产品创建
即服务密钥,您可以在密钥管理服务控制台查看已经创建的服务密钥。
购买云产品时,选择使用KMS默认密钥加密服务端数据。截图以购买ECS为例。
说明为了便于您识别,服务密钥被自动关联了特殊的别名,格式为
alias/acs/<云产品代码>
。例如,云服务器ECS为您创建的服务密钥,密钥别名为alias/acs/ecs
。在密钥管理服务控制台查看云产品创建的服务密钥。
说明密钥用法为服务密钥的密钥,即为云产品创建的密钥。
服务密钥的生命周期由云产品代您管理,您不能在KMS控制台对它进行启用、禁用等管理操作,但可以在操作审计控制台查看服务密钥的操作和使用记录。
用户自行创建
默认密钥(主密钥)
在密钥管理服务控制台启用主密钥,具体操作,请参见默认密钥。
例如,截图中主密钥的密钥别名为
alias/byok
。购买云产品时,选择使用默认密钥(主密钥)加密服务端数据。
截图以购买ECS为例。
软件密钥
购买软件密钥管理实例。具体操作,请参见购买和启用KMS实例。
在密钥管理服务控制台创建密钥。具体操作,请参见软件密钥。
购买云产品时,选择使用您创建的软件密钥加密服务端数据。
硬件密钥
购买硬件密钥管理实例。具体操作,请参见购买和启用KMS实例。
在密钥管理服务控制台创建密钥。具体操作,请参见硬件密钥。
购买云产品时,选择使用您创建的硬件密钥加密服务端数据。
云产品集成KMS加密的方式
不同云产品基于业务形态和客户需求,其加密的具体设计略有不同。通常云产品采用信封加密的机制实现对数据的加密,即通过KMS密钥对数据密钥进行加密保护,通过数据密钥对业务数据进行加密保护,请参见如下示意图。
在KMS中创建一个密钥。
调用KMS的GenerateDataKey接口请求数据密钥。
KMS返回数据密钥,包含数据密钥明文和数据密钥密文。其中数据密钥密文,是由指定的密钥加密数据密钥明文生成的。
云产品使用数据密钥明文加密数据明文,并将数据密钥密文(由KMS使用密钥加密)与数据密文(由云产品使用数据密钥加密)一同写入持久化存储介质中。
信封加密中的“信封”是指在概念上数据密钥密文和数据密文被打包在一个信封(Envelope)中。
KMS将数据密钥通过安全传输通道从KMS传递到云产品。数据密钥明文仅在云产品的内存中使用,不会以明文形式存储在持久化存储介质上。
访问控制
通过访问控制RAM(Resource Access Management),KMS会验证云产品是否具备使用特定密钥的权限。您可通过云产品的RAM授权引导或在访问控制RAM服务中配置权限策略,允许或者拒绝特定的云产品使用特定的密钥。更多信息,请参见使用RAM实现对资源的访问控制。
审计
通过操作审计(ActionTrail),您可以对云产品使用密钥的情况进行审计。更多信息,请参见使用操作审计查询密钥管理服务的操作事件。