---
title: "密钥管理服务（KMS）"
description: "管理主密钥、版本、状态及加密和签名操作。"
image: "http://127.0.0.1:4321/docs/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: http://127.0.0.1:4321/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 密钥管理服务（KMS）

密钥管理服务（Key Management Service，KMS）让应用在不接触主密钥材料的情况下完成加解密、签名验签、消息认证码和摘要计算。主密钥只能在系统内使用，不能查看或导出。

## 核心名词

| 名词 | 含义 |
| --- | --- |
| 主密钥（Master Key） | 应用执行密码操作时引用的受管密钥。创建时需要确定用途和算法。 |
| 密钥版本（Key Version） | 每次轮转主密钥都会产生新版本；新操作使用当前版本，历史结果按原版本读取。 |
| 最小可读版本 | 低于该版本的历史密文或签名不再允许读取或验证，只能向前调整。 |
| 数据密钥（Data Key） | 为一次业务加密临时生成的密钥，同时返回明文和受保护副本，适合信封加密。 |

## 支持的操作

| 操作 | 典型用途 |
| --- | --- |
| 加密与解密（Encrypt / Decrypt） | 保护小段业务数据或包装应用自己的数据密钥。 |
| 签名与验签（Sign / Verify） | 证明消息来源并检查内容是否被修改。 |
| 消息认证码（HMAC） | 在共享密钥场景中校验消息完整性和真实性。 |
| 摘要（Digest） | 计算不可逆摘要，不需要创建主密钥。 |
| 数据密钥（Data Key） | 为大量数据生成一次性密钥，并保存其受保护副本。 |

## 使用流程

1. **创建主密钥**

   打开“KMS 密码管理 → 主密钥”，填写名称，选择用途和算法。用途和算法创建后不能修改，应根据调用方兼容性提前确定。
2. **授予调用权限**

   通过访问策略只授予应用所需的操作，例如只允许某个应用使用指定主密钥进行加密和解密。
3. **执行测试操作**

   在对应操作台提交非生产测试数据，确认输入编码、算法和结果交付方式满足业务要求。
4. **接入业务应用**

   应用通过主密钥标识调用接口。密文和签名结果应作为不可拆解的完整字符串保存，不要自行修改其中内容。
5. **轮转并验证历史数据**

   轮转主密钥后，新操作使用新版本。抽查轮转前的密文或签名，确认仍能按策略读取或验证。

## 主密钥状态

| 状态 | 业务影响 |
| --- | --- |
| 启用 | 允许策略范围内的密码操作。 |
| 禁用 | 暂停使用，可在排查或临时停用后重新启用。 |
| 退役 | 永久停止新的使用，适合确认不再需要的主密钥；执行前应核对历史数据依赖。 |

> **谨慎推进最小可读版本**
>
> 提高最小可读版本后，较早版本产生的历史结果将无法再读取或验证。调整前应完成数据重加密、签名迁移或保留期核对。

## 数据密钥使用提醒

数据密钥操作会在本次响应中返回临时明文密钥和受保护副本。应用应立即使用明文密钥完成本地数据加密并从内存清除，只长期保存受保护副本和业务密文。

{/* nimbus-rule-disable-next-line nimbus/internal-link */}
在管理端打开“KMS 密码管理”完成密钥配置；业务系统在线使用密钥时参见 <a href="/docs/api/kms/post-keys-by-key-id-encrypt/">加密数据</a>。

Source: http://127.0.0.1:4321/docs/engines/kms/index.mdx
