你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
托管 HSM 角色管理
注意
Key Vault 支持两种类型的资源:保管库和托管 HSM。 本文介绍托管 HSM。 若要了解如何管理保管库,请参阅使用 Azure CLI 管理密钥保管库。
有关托管 HSM 的概述,请参阅什么是托管 HSM?。 如果你还没有 Azure 订阅,可以在开始前创建一个免费帐户。
本文介绍如何管理托管 HSM 数据平面的角色。 若要了解托管 HSM 访问控制模型,请参阅托管 HSM 访问控制。
若要允许安全主体(例如用户、服务主体、组或托管标识)执行托管 HSM 数据平面操作,需要为它们分配允许执行这些操作的角色。 例如,如果要允许应用程序使用密钥执行签名操作,则必须为其分配一个角色,该角色包含“Microsoft.KeyVault/managedHSM/keys/sign/action”作为数据操作之一。 可以在特定范围内分配角色。 托管 HSM 本地 RBAC 支持两种范围,HSM 范围(/
或 /keys
)和按密钥 (/keys/<keyname>
)。
有关所有托管 HSM 内置角色及其允许的操作的列表,请参阅托管 HSM 内置角色。
先决条件
若要使用本文中的 Azure CLI 命令,必须准备好以下各项:
- Microsoft Azure 订阅。 如果没有,可以注册免费试用版。
- Azure CLI 版本 2.25.0 或更高版本。 运行
az --version
即可查找版本。 如需进行安装或升级,请参阅安装 Azure CLI。 - 订阅中的托管 HSM。 请参阅快速入门:使用 Azure CLI 预配和激活托管 HSM,预配和激活托管 HSM。
Azure Cloud Shell
Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。
若要启动 Azure Cloud Shell,请执行以下操作:
选项 | 示例/链接 |
---|---|
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 | |
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 | |
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 |
若要使用 Azure Cloud Shell,请执行以下操作:
启动 Cloud Shell。
选择代码块(或命令块)上的“复制”按钮以复制代码或命令。
在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。
选择“Enter”运行代码或命令。
登录 Azure
若要使用 CLI 登录到 Azure,可以键入:
az login
若要详细了解通过 CLI 使用的登录选项,请参阅使用 Azure CLI 登录
创建新的角色分配
为所有密钥分配角色
使用 az keyvault role assignment create
命令为适用于 ContosoHSM 中所有密钥(范围 /keys
)的用户主体名称 user2@contoso.com 所标识的用户分配“托管 HSM 加密用户”角色。
az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto User" --assignee user2@contoso.com --scope /keys
为特定密钥分配角色
使用 az keyvault role assignment create
命令为由名为 myrsakey 的特定密钥的用户主体名称 user2@contoso.com 标识的用户分配“托管 HSM 加密用户”角色。
az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto User" --assignee user2@contoso.com --scope /keys/myrsakey
列出现有的角色分配
使用 az keyvault role assignment list
列出角色分配。
在作用域/(未指定 --scope 时则为默认作用域)中为所有用户(未指定 --assignee 时则为默认用户)执行的所有角色分配
az keyvault role assignment list --hsm-name ContosoMHSM
特定用户 user1@contoso.com 在 HSM 级别的所有角色分配。
az keyvault role assignment list --hsm-name ContosoMHSM --assignee user@contoso.com
注意
当范围为 /(或 /keys)时,list 命令仅列出顶级的所有角色分配,而不会显示各个密钥级别的角色分配。
针对特定密钥 myrsakey 的特定用户 user2@contoso.com 的所有角色分配。
az keyvault role assignment list --hsm-name ContosoMHSM --assignee user2@contoso.com --scope /keys/myrsakey
为特定用户 user2@contoso.com 分配适用于特定密钥 myrsakey 的“托管 HSM 加密管理人员”这一特定角色
az keyvault role assignment list --hsm-name ContosoMHSM --assignee user2@contoso.com --scope /keys/myrsakey --role "Managed HSM Crypto Officer"
删除角色分配
使用 az keyvault role assignment delete
命令删除分配给用户 user2@contoso.com 的适用于密钥 myrsakey2 的“托管 HSM 加密管理人员”角色。
az keyvault role assignment delete --hsm-name ContosoMHSM --role "Managed HSM Crypto Officer" --assignee user2@contoso.com --scope /keys/myrsakey2
列出所有可用的角色定义
使用 az keyvault role definition list
命令列出所有角色定义。
az keyvault role definition list --hsm-name ContosoMHSM
创建新的角色定义
托管 HSM 具有几个内置(预定义)角色,适用于大多数常见使用方案。 您可以定义自己的角色,其中包含允许角色执行的特定操作的列表。 然后,您可以将此角色分配给主体,以向其授予对指定操作的权限。
对使用 JSON 字符串的名为我的自定义角色的角色使用 az keyvault role definition create
命令。
az keyvault role definition create --hsm-name ContosoMHSM --role-definition '{
"roleName": "My Custom Role",
"description": "The description of the custom rule.",
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.KeyVault/managedHsm/keys/read/action"
],
"notDataActions": []
}'
对名为 my-custom-role-definition.jso 的文件中的角色使用 az keyvault role definition create
命令,文件中含有角色定义的 JASON 字符串。 请参看上述示例。
az keyvault role definition create --hsm-name ContosoMHSM --role-definition @my-custom-role-definition.json
显示角色定义的详细信息
使用 az keyvault role definition show
命令查看使用名称 (GUID) 的特定角色定义的详细信息。
az keyvault role definition show --hsm-name ContosoMHSM --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
更新自定义角色定义
使用 az keyvault role definition update
命令来更新使用 JSON 字符串的名为我的自定义角色的角色。
az keyvault role definition create --hsm-name ContosoMHSM --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": []
}'
删除自定义角色定义
使用 az keyvault role definition delete
命令查看使用名称 (GUID) 的特定角色定义的详细信息。
az keyvault role definition delete --hsm-name ContosoMHSM --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
注意
无法删除内置角色。 删除自定义角色后,所有使用该自定义角色的角色分配都将失效。
后续步骤
- 请参阅 Azure 基于角色的访问控制 (Azure RBAC) 的概述。
- 请参阅有关托管 HSM 角色管理的教程
- 详细了解托管 HSM 访问控制模型
- 查看托管 HSM 本地 RBAC 的所有内置角色