注意事项
Key Vault支持两种类型的资源:保管库和托管 HSM。 本文介绍托管硬件安全模块 (HSM)。 若要了解如何管理保管库,请参阅
本文提供有关使用 Azure CLI 管理托管 HSM 的角色和角色分配的实用说明。 它通过使用托管 HSM 本地 RBAC 内置角色中记录的内置角色,实现托管 HSM 访问控制中描述的基于角色的访问控制模型。
有关托管 HSM 的概述,请参阅什么是托管 HSM?。 如果没有 Azure 订阅,请在开始前创建 试用订阅。
若要允许安全主体(例如用户、服务主体、组或托管标识)执行托管 HSM 数据平面操作,请为其分配允许这些操作的角色。 例如,如果要允许应用程序使用密钥执行签名操作,请为其分配一个角色,该角色包含 Microsoft.KeyVault/managedHSM/keys/sign/action 作为数据操作之一。 在特定范围内分配角色。 托管 HSM 本地 RBAC 支持两种范围,整个 HSM(/ 或 /keys)和每个密钥 (/keys/<key-name>)。
有关所有托管 HSM 内置角色及其允许的操作的列表,请参阅托管 HSM 内置角色。
先决条件
需要Azure订阅。 如果没有帐户,请在开始之前创建 一个免费帐户 。
还需要:
- Azure CLI 2.25.0 或更高版本。 运行
az --version即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI。 - 订阅中的托管 HSM。 请参阅 Quickstart:使用 Azure CLI 预配和激活托管 HSM。
登录到 Azure
若要使用 CLI 登录到Azure,请输入:
az login
有关通过 CLI 进行身份验证选项的详细信息,请参阅 Sign with Azure CLI。
创建新的角色分配
为所有密钥分配角色
使用 az keyvault role assignment create 命令为由用户主体名称 标识的用户分配 <user-principal-name> 角色,该角色应用于 中所有范围为 /keys 的 <hsm-name>。
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys
为特定密钥分配角色
使用 az keyvault role assignment create 命令将 托管 HSM Crypto 用户 角色分配给由用户主体名称 <user-principal-name> 标识的特定密钥的用户 <key-name>。
az keyvault role assignment create --hsm-name <hsm-name> --role "Managed HSM Crypto User" --assignee <user-principal-name> --scope /keys/<key-name>
列出现有的角色分配
使用 az keyvault role assignment list 列出角色分配。
在作用域/(未指定 --scope 时则为默认作用域)中为所有用户(未指定 --assignee 时则为默认用户)执行的所有角色分配
az keyvault role assignment list --hsm-name <hsm-name>
特定用户 <user-principal-name> 在 HSM 层级中所有的角色分配。
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name>
注意事项
当范围为 /(或 /keys)时,list 命令仅列出顶级的所有角色分配,而不会显示各个密钥级别的角色分配。
针对特定用户 <user-principal-name> 和特定密钥 <key-name> 的所有角色分配。
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name>
为特定用户 分配适用于特定密钥 <user-principal-name> 的“托管 HSM 加密管理人员”这一特定角色<key-name>
az keyvault role assignment list --hsm-name <hsm-name> --assignee <user-principal-name> --scope /keys/<key-name> --role "Managed HSM Crypto Officer"
删除角色分配
使用 az keyvault role assignment delete 命令删除分配给用户 的适用于密钥 <user-principal-name> 的“托管 HSM 加密管理人员”角色。<key-name>
az keyvault role assignment delete --hsm-name <hsm-name> --role "Managed HSM Crypto Officer" --assignee <user-principal-name> --scope /keys/<key-name>
列出所有可用的角色定义
使用 az keyvault role definition list 命令列出所有角色定义。
az keyvault role definition list --hsm-name <hsm-name>
创建新的角色定义
托管 HSM 具有几个内置(预定义)角色,适用于大多数常见使用场景。 您可以定义自己的角色,其中包含允许角色执行的特定操作的列表。 然后,您可以将此角色分配给主体,以向其授予对指定操作的权限。
使用 JSON 字符串,通过 az keyvault role definition create 命令应用于名为My Custom Role的角色。
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action"
],
"notDataActions": []
}'
对名为 az keyvault role definition create 的文件中的角色使用 命令,文件中含有角色定义的 JASON 字符串。 请参看上述示例。
az keyvault role definition create --hsm-name <hsm-name> --role-definition @my-custom-role-definition.json
显示角色定义的详细信息
使用 az keyvault role definition show 命令查看使用名称 (GUID) 的特定角色定义的详细信息。
az keyvault role definition show --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
更新自定义角色定义
使用 az keyvault role definition update 命令通过 JSON 字符串更新名为我的自定义角色的角色。
az keyvault role definition create --hsm-name <hsm-name> --role-definition '{
"roleName": "My Custom Role",
"name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"id": "Microsoft.KeyVault/providers/Microsoft.Authorization/roleDefinitions/xxxxxxxx-
xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action",
"Microsoft.KeyVault/managedHsm/keys/write/action",
"Microsoft.KeyVault/managedHsm/keys/backup/action",
"Microsoft.KeyVault/managedHsm/keys/create"
],
"notDataActions": []
}'
删除自定义角色定义
使用 Azure CLI az keyvault role definition delete 命令,通过名称(GUID)删除自定义角色定义。
az keyvault role definition delete --hsm-name <hsm-name> --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
注意事项
无法删除内置角色。 删除自定义角色后,所有使用该自定义角色的角色分配都将失效。
后续步骤
- 请参阅
Azure 基于角色的访问控制(Azure RBAC) 。 - 详细了解 托管 HSM 访问控制模型
- 查看用于托管 HSM 本地 RBAC 的所有内置角色