密钥服务是KMS的核心组件,支持管理用户主密钥、默认密钥,提供密钥的全生命周期管理和安全存储能力,同时支持基于云原生接口的极简数据加密和数字签名。本文帮助您快速了解 KMS密钥。
密钥的核心用途
在KMS创建的密钥可用于自建应用集成和云产品服务端加密。
自建应用集成:通过调用KMS OpenAPI/SDK,在应用程序中实现数据的加解密、数字签名、验签等密码学功能。更多信息参见自建应用集成KMS指南。
云产品服务端加密:将KMS密钥与OSS、EBS、RDS等云产品集成,实现静态数据的透明加密,保护云上的数据资产。更多信息,请参见云产品集成KMS加密概述。
密钥类型
KMS根据管理权责和控制级别,将密钥分为两大类:用户主密钥和默认密钥。
密钥类型 | 应用场景 | 子类型 | 算法 | 管理权限 | 共享性 | 费用 |
用户主密钥 |
|
|
| 用户完全控制:拥有创建、启用/禁用、轮转、删除等全部生命周期管理权限。 | 可共享。 | 收费 |
默认密钥 | 云产品服务端加密 |
| 对称 | 受限管理:仅可修改部分属性,不支持新建。详情请参见下文密钥管理功能对比。 | 仅限当前账号。 | 免费 |
用户主密钥
用户主密钥是云用户自主创建并拥有完全生命周期管理的密钥资源(创建、启用、禁用、轮换、删除等)。主要用于自建应用的密码学集成,或作为云产品服务端加密的自定义密钥,以满足定制化的安全需求。
类型对比
根据保护级别分类,用户主密钥又分为以下三种类型:
用户主密钥类型 | 费用说明 | 保护方式与安全级别 | 适用场景 | 密钥材料来源 |
软件密钥 | 需购买软件密钥管理实例,支持包年包月 | 软件层面保护:存储于KMS专属加密数据库。 | 通用场景:兼顾成本与安全。 |
|
硬件密钥 | 需购买硬件密钥管理实例,包年包月 重要 使用该实例还需要购买2个密码机实例,费用详情,请参见加密服务产品计费。 |
| 强合规场景: 金融、政务、特定的密码设备要求,保护核心敏感数据,满足国密/FIPS等合规要求。 |
|
外部密钥 (XKI) | 需购买外部密钥管理实例 |
| 混合云或多云统一管理:保证密钥控制权保留在自有EKM。 | 仅限自有EKM |
算法支持说明
用户主密钥支持对称密钥和非对称密钥,更多信息请参见密钥管理类型和密钥规格。
默认密钥
默认密钥是由阿里云产品自动创建和管理的密钥,这类密钥的管理权限非常有限,但可以享受免费、便捷的集成加密服务。
默认密钥仅可用于实现云产品服务端加密,不支持独立的密码运算(如调用API进行加解密)。
从KMS 1.0迁移的密钥显示为只读状态,不支持任何操作。
类型对比
默认密钥类型 | 密钥来源 | 操作说明 | 唯一性 |
默认主密钥 | KMS 3.0 系统默认创建。 |
| 每个阿里云账号在每个地域下仅有1个默认主密钥。 |
服务密钥 | 由云产品(如OSS、RDS)代表用户创建和使用的密钥。 |
| 每个阿里云账号下的每种云产品,在每个地域下仅支持创建1个服务密钥。 |
算法支持说明
默认密钥仅支持对称密钥,更多信息请参见密钥管理类型和密钥规格。
功能对比与选型指南
集成与应用对比
不同类型密钥在产品集成、应用开发中的调用能力有所差异。下表帮助您快速了解各类密钥在云产品集成和自定义应用开发中的功能实现情况。更多内容请参考云产品集成KMS加密概述、自建应用集成KMS指南、阿里云SDK。
密钥类型 | 密钥子类型 | 用户自建应用密码运算 | 云产品服务端加密 | |
数据加解密 | 签名验签 | |||
默认密钥 | 默认主密钥 | |||
服务密钥 | ||||
用户主密钥 | 软件密钥 | |||
硬件密钥 | ||||
外部密钥 | ||||
密钥管理功能对比
不同密钥提供的生命周期管理能力有所不同,以下表格可帮助您直观了解各密钥类型支持的主要管理功能,帮助进行合规性和管理优化。如需了解具体实现方法,请参考下方的相关技术文档:
密钥类型 | 密钥子类型 | 密钥轮转 | 计划删除密钥 | 密钥删除保护 | 导入外部密钥材料(BYOK) | 备份管理 |
默认密钥 | 默认主密钥 | 说明 需购买密钥增值服务。 | ||||
服务密钥 | ||||||
用户主密钥 | 软件密钥 | 说明 仅对称密钥支持,非对称密钥不支持。 | ||||
硬件密钥 | 说明 仅数据存储于密码机且为对称密钥时支持。 | |||||
外部密钥 | ||||||
默认密钥和用户主密钥均支持管理密钥标识(别名、标签)。
安全和性能对比
对于性能敏感型或有严格合规要求的业务,性能规格和审计能力是关键考量点。下表详细列出了各类密钥的性能指标和审计支持情况。更多性能数据,请参考性能数据、使用操作审计查询密钥管理服务的操作事件。
密钥类型 | 密钥子类型 | 计算性能参考(以对称加解密为例) | 安全审计 |
默认密钥 | 默认主密钥 | 1000次/秒,不支持升配 | 均支持安全审计。 |
服务密钥 | |||
用户主密钥 | 软件密钥 |
| |
硬件密钥 |
| ||
外部密钥 | 1000次/秒,不支持升配 |
常见问题
BYOK和外部密钥(XKI)有什么不同?
两者都涉及在KMS外部管理的密钥,但实现机制不同。BYOK是导入密钥材料本身,而XKI是集成外部的密钥服务。
BYOK(自带密钥):将外部生成的密钥材料导入到KMS中。导入后,密钥的存储和密码学运算在阿里云KMS内部完成。
XKI(外部密钥):提供一个外部密钥服务的访问接口。密钥材料和密码学运算始终在外部密钥管理器(EKM)中进行,密钥明文不离开外部环境。KMS仅作为请求的代理。
什么是BYOK?
密钥材料由外部生成并导入系统的密钥,KMS称其为自带密钥(BYOK),BYOK是一项功能,而非独立的密钥类型。不同类型的密钥对BYOK的支持情况如下:
密钥类型 | 密钥子类型 | 是否支持BYOK | 说明与操作 |
用户主密钥 | 软件密钥 | 是 | |
硬件密钥 | |||
外部密钥 | 否 | 不支持外部导入。 | |
默认密钥 | 默认主密钥 | 是 | 仅在首次启用密钥时支持选择外部导入密钥材料。 |
服务密钥 | 否 | 不支持外部导入。 |
阿里云和亚马逊(AWS)密钥类型对应关系?
阿里云 | 亚马逊(AWS) |
用户主密钥 | Customer managed keys |
服务密钥 | AWS managed keys |
附录:密钥的组成部分
一个完整的密钥由密钥标识符、元数据和密钥材料三部分组成。
密钥标识:用于在控制台、API或策略中唯一识别和引用一个密钥。KMS支持三种标识符:
ID:作为密钥的主要标识符的唯一字符串。
阿里云资源名称 (ARN) :包含地域ID、阿里云账号ID、密钥ID的综合资源名称,格式为
acs:kms:<REGION_ID>:<ALIBABA_CLOUD_ACCOUNT_ID>:key/<KEY_ID>。密钥别名:用户定义的名称,可以指向特定的密钥。格式为
alias/<ALIAS_NAME>。
元数据:描述密钥属性的信息,例如密钥ID、创建日期、密钥状态(如启用、禁用)、密钥用途(加密/解密或签名/验签)等。
密钥材料:执行加密、解密、签名等密码学运算的二进制数据。KMS支持两种材料来源:
阿里云KMS:密钥材料将由KMS生成。
外部(导入密钥材料):在本地生成密钥材料后,再导入KMS。