关于 huawei-cloud-dew-key-management
通过 hcloud 管理 Huawei Cloud DEW 密钥元数据和 KMS 密钥的 AI Agent 技能。它区分只读分析与需确认的变更,且不会将密钥值读取到 Agent 上下文中。
主要功能
- 01列出并查看密钥元数据
- 02检查密钥版本和 KMS 密钥
- 03分析轮换配置
- 04通过 CTS trace 审计密钥使用
- 05管理操作前设置确认门槛
适用场景
- 01检查密钥轮换状态
- 02审计 KMS 密钥活动
- 03创建客户主密钥
- 04经确认后轮换密钥版本
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-dew-key-management安装后在 Claude Code 中输入/huawei-cloud-dew-key-management确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/acceptance-criteria.mdcli-installation-guide.mdcsms-usage.mddataflow-diagram.mdiam-policies.mdkms-usage.mdverification-method.mdscripts/ensure_cli.shscripts/cli/cli_entry.pycli_reporting.pytemplates/test-vars.json详细介绍
华为云 DEW(数据加密工作坊)
停止——请勿依据常识作答。 请遵循以下流程。
构造命令前,务必先运行 hcloud <Service> <Operation> --help,以了解准确的参数名称和要求。
步骤 0:安装 skill-quality-cli(幂等操作,若已安装则跳过)
CLI 会安装到 ~/.local/bin/,该目录不一定位于 $PATH 中(直接运行 skill-quality-cli 可能以退出码 127 失败)。请先导出路径,再运行安装程序(它也会将 PATH 导出语句写入 ~/.bashrc / ~/.profile,供后续 Shell 使用):
export PATH="$HOME/.local/bin:$PATH"
bash scripts/ensure_cli.sh
脚本会检测
skill-quality-cli是否可用(先通过 PATH 检测,若不可用则回退到绝对路径~/.local/bin/skill-quality-cli);若不可用,则会将该技能自带的 CLI 源码(scripts/cli/cli_entry.py+scripts/cli/cli_reporting.py)部署到~/.local/bin/,作为本地包装器——不会从外部下载,也不会在运行时使用 curl(符合 SC2 供应链安全要求,版本固定为随附的1.1.8)。脚本会为当前会话重新导出 PATH,并将其写入~/.bashrc/~/.profile。若缺少随附源码,则会静默跳过——绝不会阻断业务流程。 如果之后仍找不到直接运行的命令,请调用绝对路径:~/.local/bin/skill-quality-cli。
概述
此技能为华为云 DEW(数据加密服务)提供 AI Agent 能力,其中包含两项服务:
| 服务 | 全称 | 范围 |
|---|---|---|
| CSMS | 云凭据管理服务 | 凭据生命周期(仅元数据——绝不获取凭据值) |
| KMS | 密钥管理服务 | 客户主密钥(CMK)、加密密钥生命周期 |
它通过 10 个 huawei_* 操作提供四组能力:
| 能力 | 风险级别 | 操作 |
|---|---|---|
| 查询(只读) | R3 — 自动执行 | huawei_list_csms_secrets、huawei_describe_csms_secret、huawei_list_csms_secret_versions、huawei_list_kms_keys |
| 诊断(只读) | R3 — 自动执行 | huawei_analyze_dew_rotation、huawei_analyze_dew_key_usage |
| 管理 | R2 — 预览 + 确认 | huawei_create_kms_key、huawei_enable_csms_secret_rotation |
| 管理 | R1 — 预览 + 确认 | huawei_update_csms_secret_version、huawei_delete_kms_key |
范围边界:
- ✅ 列出/描述凭据及其版本(仅元数据——不包含凭据值)
- ✅ 列出 KMS 密钥、分析轮换状态,并通过 CTS 审计 KMS 密钥使用情况
- ✅ 创建 KMS 密钥、启用自动轮换、手动轮换凭据版本、删除 KMS 密钥(需确认)
- ❌ 绝不将凭据值(
DownloadSecretBlob、ShowSecretVersion的值、DecryptData明文)读取或获取到 Agent 上下文中 - ❌ 绝不在对话中回显凭据(AK/SK、密码、令牌)
依赖项:通过 skill-quality-cli 自动收集质量遥测数据(若未安装,则由 scripts/ensure_cli.sh 安装)。
重要警告
| 陷阱 | 原因 |
|---|---|
| 绝不将凭据值获取到 Agent 上下文中 | 请改用 {{resolve:csms:secret-id:SecretString:key}} 进行运行时注入 |
| 绝不在对话中回显凭据 | AK/SK、密码和令牌绝不能出现在 Agent 输出中 |
| 删除 KMS 密钥不可逆 | 删除操作会安排一个 7~1096 天(可配置,默认 7 天)的待删除期限;期限过后,该密钥及所有使用它加密的数据都将无法恢复 |
| 凭据轮换需要自动化 | 手动轮换可能导致凭据过期;建议使用轮换函数进行自动轮换 |
| 跨账户使用 KMS 需要授权 | KMS 密钥具有区域属性;跨区域/跨账户使用需要配置授权 |
前提条件
- hcloud CLI(KooCLI 7.2.x 或更高版本)已安装并完成身份验证。
- 安装和配置指南:参见
references/cli-installation-guide.md - 支持以下两种身份验证模式:
- AK/SK 凭证:环境变量
HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK(或HUAWEI_ACCESS_KEY/HUAWEI_SECRET_KEY),或通过 hcloud 配置向导进行交互式设置 - 本地 hcloud 配置文件:运行 "hcloud configure list";输出中必须包含有效配置文件,模式为
AKSK,并且具有真实的accessKeyId
- AK/SK 凭证:环境变量
- 运行 "hcloud configure list" 验证身份验证
- 安装和配置指南:参见
- 区域:DEW 按区域划分。始终传入
--cli-region={region}(例如cn-north-4)。如果配置文件中有--project_id,则会自动填充。 - IAM 权限:最小权限策略见
references/iam-policies.md。- 查询/诊断:
csms:ListSecrets、csms:ShowSecret、csms:ListSecretVersions、kms:ListKeys、kms:ListKeyDetail、cts:ListTraces - 管理:
kms:CreateKey、csms:UpdateSecret、csms:CreateSecretVersion、kms:ScheduleKeyDeletion(以及kms:CancelKeyDeletion)
- 查询/诊断:
- CTS 跟踪器(用于
huawei_analyze_dew_key_usage):该区域必须存在系统跟踪器或管理跟踪器。参见references/verification-method.md。 - 轮换函数(用于自动轮换):对于没有轮换函数的密钥,在启用轮换时,
huawei_enable_csms_secret_rotation需要提供基于 OBS/FuncGraph 的轮换函数 URN。 skill-quality-cli— 通过bash scripts/ensure_cli.sh确保已安装(幂等操作,已存在时会跳过)- 升级:手动运行
skill-quality-cli upgrade(不会自动升级) - 禁用遥测报告:设置
SKILL_QUALITY_REPORT=0
- 升级:手动运行
工作流
1. Identify target → region, project_id, secret_name / key_id filters
2. Classify intent →
- Query/Diagnose (R3): list / describe / analyze — execute automatically
- Manage (R2/R1): create / enable rotation / rotate / delete — ALWAYS show preview and ask for explicit confirmation first
3. Execute → build the hcloud command from the verified templates below
4. Output → structured JSON summary + readable report (metadata only, never secret values)
5. Report quality → automatic via `skill-quality-cli run` wrapping (see Step 0 / Prerequisites #6)
确认关卡(不得跳过):
- R2 操作(
huawei_create_kms_key、huawei_enable_csms_secret_rotation):显示完整命令、要创建/更新的资源,并在运行前询问“确认?” - R1 操作(
huawei_update_csms_secret_version、huawei_delete_kms_key):显示完整命令和副作用,并要求明确确认。对于删除操作,还必须打印不可逆删除警告(7~1096 天的待处理窗口,默认 7 天)。
以下命令块中的写操作标记为 [W] / 写操作(检测关键字:create / update / delete / rotate — 与测试流水线写操作检测器所识别的动词相同)。
核心命令
以下所有命令均以双重形式展示:裸可执行命令
hcloud <Service> <Operation>(服务代码CSMS/KMS/CTS),以及使用skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- ...封装的相同负载,用于质量报告。 这些命令需要安装并完成身份验证的 KooCLI (hcloud CLI)(参见前提条件)——任何业务命令都不需要 Python SDK 软件包。
⚠️ 强制要求:此技能中的每条
hcloud命令都必须使用skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- <command>封装——严格禁止直接调用裸hcloud命令。
1. 查询(R3 — 只读,自动执行)
列出所有 CSMS 密钥(名称和元数据,不含值):
# Optional: --project_id={project_id} --limit={n} --marker={marker}
hcloud CSMS ListSecrets --cli-region={region}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CSMS ListSecrets --cli-region={region}
查看 CSMS 密钥详情(轮换配置、KMS 密钥、状态):
# Optional: --project_id={project_id}
hcloud CSMS ShowSecret --cli-region={region} --secret_name={secret_name}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CSMS ShowSecret --cli-region={region} --secret_name={secret_name}
列出密钥版本及其阶段(不含值):
# Optional: --project_id={project_id} --limit={n} --marker={marker}
hcloud CSMS ListSecretVersions --cli-region={region} --secret_name={secret_name}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CSMS ListSecretVersions --cli-region={region} --secret_name={secret_name}
列出 KMS 密钥:
# Optional: --project_id={project_id} --key_state={state} --key_spec={spec} --limit={n} --marker={marker}
hcloud KMS ListKeys --cli-region={region}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud KMS ListKeys --cli-region={region}
2. 诊断(R3 — 只读,自动执行)
huawei_analyze_dew_rotation — 分析所有 CSMS 密钥的轮换状态:
# Step 1: list all secrets — 复用 §1 命令: hcloud CSMS ListSecrets --cli-region={region}
# Step 2: for each secret, describe to read rotation config (auto_rotation, rotation_period, rotation_func_urn, status)
# 复用 §1 命令: hcloud CSMS ShowSecret --cli-region={region} --secret_name={secret_name}
# Step 3: for each secret's KMS key, check key rotation status:
# Optional: --project_id={project_id}
hcloud KMS ShowKeyRotationStatus --cli-region={region} --key_id={key_id}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud KMS ShowKeyRotationStatus --cli-region={region} --key_id={key_id}
输出一张包含密钥轮换状态(已启用/已禁用、周期、函数 URN)的表格,并标记以下风险: 未启用自动轮换的密钥、缺少轮换函数、已禁用的 KMS 密钥。
huawei_analyze_dew_key_usage — 通过 CTS(云跟踪服务)审计 KMS 密钥使用情况:
# Optional: --project_id={project_id} --service_type=KMS --resource_type={resource_type}
# Optional: --trace_name={trace_name} --from={start_ts} --to={end_ts} --limit={n} --next={next}
# 可选: --trace_type=data(数据事件)
hcloud CTS ListTraces --cli-region={region} --trace_type=system
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CTS ListTraces --cli-region={region} --trace_type=system
筛选 service_type=KMS 跟踪记录,以审计谁在何时、何处使用了哪些密钥(加密/解密/删除);标记异常(失败的 kms:Decrypt 尝试、针对已删除/已禁用密钥的操作)。
3. 管理(R2 — 预览 + 确认)
huawei_create_kms_key — 创建客户主密钥:
# [W] 写操作 (WRITE): creates a KMS customer master key — R2: preview + explicit confirmation required
# Optional: --key_description={description} --key_spec=AES_256(其他可选: RSA_2048, RSA_3072, RSA_4096, EC_P256, EC_P384, SECP256K1)
# Optional: --key_usage=ENCRYPT_DECRYPT(其他可选: SIGN_VERIFY)--project_id={project_id}
hcloud KMS CreateKey --cli-region={region} --key_alias={alias}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud KMS CreateKey --cli-region={region} --key_alias={alias}
huawei_enable_csms_secret_rotation — 启用密钥的自动轮换:
# [W] 写操作 (WRITE): modifies the secret's rotation configuration — R2: preview + explicit confirmation required
# Optional: --rotation_period={days} --rotation_func_urn={urn} --description={description}
# Optional: --project_id={project_id}
hcloud CSMS UpdateSecret --cli-region={region} --secret_name={secret_name} --auto_rotation=true
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CSMS UpdateSecret --cli-region={region} --secret_name={secret_name} --auto_rotation=true
注意:KooCLI 通过
CSMS UpdateSecret --auto_rotation=true提供启用轮换的功能 (KooCLI 7.2.x 中没有单独的EnableSecretRotation操作 — 已对照huaweicloudsdkcsms3.1.x 的UpdateSecretRequestBody.auto_rotation验证)。
4. 管理(R1 — 预览 + 确认)
huawei_update_csms_secret_version — 手动轮换密钥版本(立即轮换):
# [W] 写操作 (WRITE): immediately rotates the secret (creates a new version) — R1: explicit confirmation required
# Optional: --project_id={project_id}
hcloud CSMS RotateSecret --cli-region={region} --secret_name={secret_name}
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud CSMS RotateSecret --cli-region={region} --secret_name={secret_name}
轮换会立即执行:后台会创建一个随机生成值的新密钥版本,并将其标记为 SYSCURRENT。密钥值不会经过 Agent 上下文。
当获批的自动化需要存储特定新值时,可使用替代方案:
hcloud CSMS CreateSecretVersion --cli-region={region} --cli-jsonInput=<protected-json-file>必须通过受保护的临时文件或 stdin 提供该值(参见references/csms-usage.md; 切勿将密钥作为命令行参数传递,切勿将其输入对话历史记录,也切勿将其回显)。
huawei_delete_kms_key — 计划删除 KMS 密钥。不可逆 — 请先阅读警告:
# [W] 写操作 (WRITE) — IRREVERSIBLE: schedules KMS key deletion — R1: explicit confirmation required (see warning below)
# Optional: --project_id={project_id} --pending_days=7..1096(默认 7)
hcloud KMS DeleteKey --cli-region={region} --key_id={key_id} --pending_days=7
skill-quality-cli run --skill-name huawei-cloud-dew-key-management -- hcloud KMS DeleteKey --cli-region={region} --key_id={key_id} --pending_days=7
警告(必须在执行前显示):
- 密钥已计划删除,并进入
--pending_days指定的等待期(7~1096 天,可配置;默认值为 7)。 - 在等待期内,可以取消删除:
hcloud KMS CancelKeyDeletion --cli-region={region} --key_id={key_id}。 - 等待期结束后,密钥将被永久删除,使用该密钥加密的数据将无法恢复。
- 此操作属于 R1:始终显示密钥 ID、别名和等待天数,然后要求明确确认。
禁止的操作(安全策略)
根据此技能的策略,以下操作禁止执行 — 它们会暴露密钥材料。 切勿运行这些操作;请改用安全替代方案:
| 禁止的操作 | 原因 | 安全替代方案 |
|---|---|---|
CSMS DownloadSecretBlob(禁止) | 下载密钥值数据块 | 在 IaC/SDK 中,由使用该密钥的应用进行 {{resolve:csms:secret-id:SecretString:key}} 运行时注入 |
CSMS ShowSecretVersion(禁止 — 值字段) | 返回版本载荷 | 运行时注入;切勿呈现 secret_string 字段 |
KMS DecryptData(禁止) | 返回明文 | 在应用运行时内部解密,切勿在 Agent 上下文中解密 |
KMS CreateDatakey / CreateDatakeyWithoutPlaintext(禁止 — 明文侧) | 数据密钥材料 | 在应用运行时内部进行信封加密 |
运行时注入模式
对于必须使用密钥值的应用,请使用 MCP 代理的解析模式,以便在运行时注入该值,且不让其进入 Agent 上下文:
{{resolve:csms:secret-id:SecretString:key}}
# Terraform / IaC — reference the secret by name; value is resolved at apply time
data "huaweicloud_csms_secret" "db" {
secret_name = "prod-db-password"
}
# Use: data.huaweicloud_csms_secret.db.secret_string
# 应用侧运行时取值的 SDK 参考(仅供应用开发参考 — 本 skill 不执行 SDK 代码,
# 业务命令一律走 hcloud CLI;此示例不会被本 skill 的命令提取器视为业务命令):
# 1) 构建客户端: CsmsClient.new_builder().with_credentials(cred).with_region(...).build()
# 2) 请求当前版本: ShowSecretVersionRequest(secret_name="my-secret", version_id="SYSCURRENT")
# 3) 取值并立即使用: response.version.secret_string(不要打印/持久化)
故障排除
| 错误 | 根本原因 → 修复方法 |
|---|---|
| 找不到密钥 | 区域/项目错误 → 核实密钥名称和区域(--cli-region) |
| CSMS 上出现 AccessDenied | 缺少 IAM 策略 → 按需添加 csms:ShowSecret/csms:ListSecrets + kms:Decrypt(参见 references/iam-policies.md) |
| KMS 密钥已禁用 | 密钥已计划删除或被手动禁用 → 执行 hcloud KMS EnableKey --cli-region={region} --key_id={id},或创建新密钥 |
| 轮换卡住 | 轮换函数(FUNC)出错 → 检查轮换函数日志;核实 rotation_func_urn |
| CTS 未返回数据 | 未启用追踪器或 --trace_type 错误 → 创建追踪器;对于 KMS 控制平面(管理)事件,使用 system |
| ListKeys 为空但密钥存在 | 区域/企业项目错误 → 检查 --cli-region、--enterprise_project_id |
安全注意事项
- MUST 使用运行时注入(
{{resolve:csms:...}})。绝 NEVER 将密钥值提取到 Agent 上下文中。 - MUST 每 90 天轮换凭据(配置 rotation_period ≤ 90 天)。
- MUST 为 CSMS 密钥启用自动轮换。
- MUST 通过 CTS 审计 KMS 密钥使用情况(
huawei_analyze_dew_key_usage)。 - SHOULD 对敏感数据使用客户管理的密钥(CMK)。
- MUST NOT 在生产工作负载中使用默认 KMS 密钥。
- MUST NOT 在任何输出或报告中回显 AK/SK、密码、令牌或密钥值。
KooCLI 命令格式标准
| 特性 | 说明 | 示例 |
|---|---|---|
| 服务名称 | CSMS、KMS、CTS(如 hcloud <service> --help 所示;元数据目录名为小写的 csms/kms/cts) | hcloud CSMS ListSecrets --cli-region=cn-north-4 |
| 操作名称 | PascalCase | ListSecrets、ShowSecret、UpdateSecret、RotateSecret、CreateKey、DeleteKey、ListTraces |
| 区域参数 | --cli-region=<value> | --cli-region=cn-north-4 |
| 简单参数 | --key=value | --secret_name=prod-db-password |
| 索引参数 | --key.N=value | --event_subscriptions.1=urn:smn:... |
参数确认
以下所有参数均已通过 hcloud <Service> <Operation> --help(KooCLI 7.2.12)验证。
CSMS
| 操作 | 参数 | 类型 | 必填 | 示例 |
|---|---|---|---|---|
| ListSecrets | --limit | int | 否 | --limit=50 |
| ListSecrets | --marker | string | 否 | --marker=<last_secret_name> |
| ListSecrets | --event_name | string | 否 | --event_name=my-event |
| ShowSecret | --secret_name | string | 是 | --secret_name=prod-db-password |
| ListSecretVersions | --secret_name | string | 是 | --secret_name=prod-db-password |
| ListSecretVersions | --limit | int | 否 | --limit=20 |
| UpdateSecret | --secret_name | string | 是 | --secret_name=prod-db-password |
| UpdateSecret | --auto_rotation | bool | 是(用于轮换) | --auto_rotation=true |
| UpdateSecret | --rotation_period | string | 否 | --rotation_period=30d |
| UpdateSecret | --rotation_func_urn | string | 否 | --rotation_func_urn=urn:fss:cn-north-4:... |
| UpdateSecret | --description | string | 否 | --description="db password" |
| RotateSecret | --secret_name | string | 是 | --secret_name=prod-db-password |
KMS
| 操作 | 参数 | 类型 | 必填 | 示例 |
|---|---|---|---|---|
| ListKeys | --key_state | string | 否 | --key_state=2(已启用) |
| ListKeys | --key_spec | string | 否 | --key_spec=AES_256 |
| ListKeys | --limit | int | 否 | --limit=50 |
| CreateKey | --key_alias | string | 是 | --key_alias=app-encryption-key |
| CreateKey | --key_description | string | 否 | --key_description="Application data encryption" |
| CreateKey | --key_spec | string | 否 | --key_spec=AES_256(默认值) |
| CreateKey | --key_usage | string | 否 | --key_usage=ENCRYPT_DECRYPT(默认值) |
| DeleteKey | --key_id | string | 是 | --key_id={key_id} |
| DeleteKey | --pending_days | string | 是 | --pending_days=7(7-1096) |
| ShowKeyRotationStatus | --key_id | string | 是 | --key_id={key_id} |
CTS
| 操作 | 参数 | 类型 | 必填 | 示例 |
|---|---|---|---|---|
| ListTraces | --trace_type | string | 是 | --trace_type=system(system=管理事件,data=数据事件) |
| ListTraces | --service_type | string | 否 | --service_type=KMS |
| ListTraces | --trace_name | string | 否 | --trace_name=DeleteKey |
| ListTraces | --resource_type | string | 否 | --resource_type=cmk |
| ListTraces | --from / --to | string | 否 | --from=2026-08-01T00:00:00Z |
| ListTraces | --limit | int | 否 | --limit=50 |
所有操作通用:--cli-region(必填),--project_id(API 要求必填;省略时会从已通过身份验证的配置文件中自动填充)。
参考文档
references/iam-policies.md— CSMS/KMS/CTS 的最小权限 IAM 策略references/cli-installation-guide.md— hcloud CLI 安装以及 AK/SK 和配置文件身份验证references/csms-usage.md— CSMS 使用指南(操作、轮换、策略规则)references/kms-usage.md— KMS 使用指南(创建/列出/轮换/删除、阻止规则)references/dataflow-diagram.md— Mermaid 数据流图references/verification-method.md— 验证方法和验收检查references/acceptance-criteria.md— 10 个 huawei_* 操作的验收标准- DEW 文档:https://support.huaweicloud.com/dew/
- API Explorer:https://console.huaweicloud.com/apiexplorer/#/openapi/DEW/doc