你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

托管 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 命令,必须准备好以下各项:

  • 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。 屏幕截图,其中显示了“试用 Azure Cloud Shell”的示例。
转到 https://shell.azure.com,或选择“启动 Cloud Shell”按钮,在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  3. 通过在 Windows 和 Linux 上按 Ctrl+Shift+V,或者在 macOS 上按 Cmd+Shift+V,将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择 Enter 以运行代码或命令。

登录到 Azure

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

az login

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

创建新的角色分配

为所有密钥分配角色

使用 az keyvault role assignment create 命令为适用于 ContosoHSM 中所有密钥(范围 )的用户主体名称 user2@contoso.com 所标识的用户分配托管 HSM 加密用户角色/keys

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 加密用户角色user2@contoso.com

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 加密管理人员”这一特定角色user2@contoso.com

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托管 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 的文件中的角色使用 命令,文件中包含角色定义的 JSON 字符串。 请参看上述示例。

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

注释

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

后续步骤