托管 HSM 角色管理

注意

Key Vault 支持两种类型的资源:保管库和托管 HSM。 本文介绍托管 HSM。 若要了解如何管理保管库,请参阅 使用 Azure CLI 管理 Key Vault

本文提供了有关使用 Azure CLI 管理托管 HSM 的角色和角色分配的实用说明。 它通过使用托管 HSM 的本地 RBAC 内置角色中记录的内置角色,实现了托管 HSM 访问控制中描述的基于角色的访问控制模型。

有关托管 HSM 的概述,请参阅什么是托管 HSM?。 如果没有 Azure 订阅,请在开始前创建一个试用版订阅

若要允许安全主体(例如用户、服务主体、组或托管标识)执行托管 HSM 数据平面操作,需要为它们分配允许执行这些操作的角色。 例如,如果要允许应用程序使用密钥执行签名操作,则必须为其分配一个角色,该角色包含“Microsoft.KeyVault/managedHSM/keys/sign/action”作为数据操作之一。 可以在特定范围内分配角色。 托管 HSM 本地 RBAC 支持两种范围,HSM 范围(//keys)和按密钥 (/keys/<keyname>)。

有关所有托管 HSM 内置角色及其允许的操作的列表,请参阅托管 HSM 内置角色

先决条件

若要使用本文中的 Azure CLI 命令,必须准备好以下各项:

登录 Azure

若要使用 CLI 登录到 Azure,可以键入:

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

有关通过 CLI 登录选项的详细信息,请参阅 使用 Azure CLI 登录

创建新的角色分配

为所有密钥分配角色

使用 az keyvault role assignment create 命令为适用于 ContosoHSM 中所有密钥(范围 )的用户主体名称 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 的特定密钥的用户主体名称 标识的用户分配“托管 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

为特定用户 分配适用于特定密钥 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 命令删除分配给用户 的适用于密钥 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": []
}'

对名为 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": []
        }'

删除自定义角色定义

使用 Azure CLI az keyvault role definition delete 命令删除使用名称(GUID)的自定义角色定义。

az keyvault role definition delete --hsm-name ContosoMHSM --name xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

注意

无法删除内置角色。 删除自定义角色后,所有使用该自定义角色的角色分配都将失效。

后续步骤