您现在访问的是微软AZURE全睃版技术文档网站,若需覝访问由世纪互蝔违蝥的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

使用 Azure 基于角色的访问控制提供对 Key Vault 密钥、证书和机密的访问权限

备注

密钥保管库资源提供程序支持两种资源类型:保管库和托管 HSM。 本文中所述的访问控制仅适用于保管库。 若要详细了解托管 HSM 的访问控制,请参阅托管 HSM 访问控制

Azure 基于角色的访问控制 (Azure RBAC) 是在 Azure 资源管理器基础上构建的授权系统,针对 Azure 资源提供精细的访问权限管理。

Azure RBAC 允许用户管理密钥、机密和证书权限。 它提供了一个可跨所有密钥保管库管理所有权限的位置。

Azure RBAC 模型提供了在不同范围级别设置权限的功能:管理组、订阅、资源组或单个资源。 用于密钥保管库的 Azure RBAC 还提供了对单个密钥、机密和证书设定单独权限的功能

有关详细信息,请参阅 Azure 基于角色的访问控制 (Azure RBAC)

单个密钥、机密和证书的最佳做法

我们的建议是对每个环境(开发环境、预生产环境和生产环境)的每个应用程序使用一个保管库。

单个密钥、机密和证书权限应仅用于特定场景:

  • 需要在层之间分离访问控制的多层应用程序

  • 在多个应用程序之间共享单个机密

有关 Azure Key Vault 管理指南的详细信息,请参阅:

用于 Key Vault 数据平面操作的 Azure 内置角色

备注

Key Vault Contributor 角色适用于管理平面操作,用于管理密钥保管库。 它不允许访问密钥、机密和证书。

内置角色 说明 ID
Key Vault 管理员 对密钥保管库以及其中的所有对象(包括证书、密钥和机密)执行所有数据平面操作。 无法管理密钥保管库资源或管理角色分配。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault 证书管理人员 对密钥保管库的证书执行任何操作(管理权限除外)。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 a4417e6f-fecd-4de8-b567-7b0420556985
Key Vault 加密管理人员 对密钥保管库的密钥执行任何操作(管理权限除外)。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 14b46e9e-c2b7-41b4-b07b-48a6ebf60603
密钥保管库加密服务加密用户 读取密钥的元数据并执行包装/展开操作。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 e147488a-f6f5-4113-8e2d-b22465e65bf6
Key Vault 加密用户 使用密钥执行加密操作。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 12338af0-0e69-4776-bea7-57ae8d297424
Key Vault 读取者 读取密钥保管库及其证书、密钥和机密的元数据。 无法读取机密内容或密钥材料等敏感值。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 21090545-7ca7-4776-b22c-e363652d74d2
Key Vault 机密管理人员 对密钥保管库的机密执行任何操作(管理权限除外)。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault 机密用户 读取机密内容。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 4633458b-17de-408a-b874-0445c86b69e6

有关 Azure 内置角色定义的详细信息,请参阅 Azure 内置角色

对密钥保管库使用 Azure RBAC 机密、密钥和证书权限

用于密钥保管库的新 Azure RBAC 权限模型提供了保管库访问策略权限模型的替代方案。

先决条件

必须拥有 Azure 订阅。 如果尚无 Azure 订阅,请在开始前创建一个免费帐户

若要添加角色分配,必须拥有 Microsoft.Authorization/roleAssignments/writeMicrosoft.Authorization/roleAssignments/delete 权限,例如用户访问管理员所有者

对密钥保管库启用 Azure RBAC 权限

备注

更改权限模型需要具有“Microsoft.Authorization/roleAssignments/write”权限,该权限是所有者用户访问管理员角色的一部分。 不支持经典订阅管理员角色(如“服务管理员”和“共同管理员”)。

  1. 对新密钥保管库启用 Azure RBAC 权限:

    启用 Azure RBAC 权限 - 新建保管库

  2. 对现有密钥保管库启用 Azure RBAC 权限:

    启用 Azure RBAC 权限 - 现有保管库

重要

设置 Azure RBAC 权限模型会使所有访问策略权限失效。 若未分配对等的 Azure 角色,它可能会导致故障。

分配角色

备注

建议在脚本中使用唯一的角色 ID,而不是角色名称。 这样一来,即使角色重命名,脚本仍可以继续使用。 此文档中的角色名称仅用于提高可读性。

运行以下命令创建角色分配:

az role assignment create --role <role_name_or_id> --assignee <assignee> --scope <scope>

有关详细信息,请参阅使用 Azure CLI 分配 Azure 角色

若要使用 Azure 门户分配角色,请参阅使用 Azure 门户分配 Azure 角色。 在 Azure 门户中,Azure 角色分配屏幕可用于访问控制 (IAM) 选项卡上的所有资源。

资源组范围的角色分配

  1. 转到包含你的密钥保管库的资源组。

    角色分配 - 资源组

  2. 选择“访问控制 (IAM)”。

  3. 选择“添加” > “添加角色分配”,打开“添加角色分配”页面 。

  4. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 “密钥保管库读取者”
    将访问权限分配到 当前用户
    成员 按电子邮件地址搜索

    Azure 门户中的“添加角色分配”页。

az role assignment create --role "Key Vault Reader" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}

有关详细信息,请参阅使用 Azure CLI 分配 Azure 角色

上述角色分配提供了在密钥保管库中列出密钥保管库对象的功能。

Key Vault 范围角色分配

  1. 转到“Key Vault”>“访问控制(IAM)”选项卡

  2. 选择“添加” > “添加角色分配”,打开“添加角色分配”页面 。

  3. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 “密钥保管库机密主管”
    将访问权限分配到 当前用户
    成员 按电子邮件地址搜索

    Azure 门户中的“添加角色分配”页。

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e jalichwa@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}

有关详细信息,请参阅使用 Azure CLI 分配 Azure 角色

机密范围角色分配

  1. 打开以前创建的机密。

  2. 单击“访问控制 (IAM)”选项卡

    角色分配 - 机密

  3. 选择“添加” > “添加角色分配”,打开“添加角色分配”页面 。

  4. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 “密钥保管库机密主管”
    将访问权限分配到 当前用户
    成员 按电子邮件地址搜索

    Azure 门户中的“添加角色分配”页。

az role assignment create --role "Key Vault Secrets Officer" --assignee {i.e user@microsoft.com} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}/secrets/RBACSecret

有关详细信息,请参阅使用 Azure CLI 分配 Azure 角色

测试和验证

备注

浏览器使用缓存,删除角色分配后需要刷新页面。
预留几分钟时间供角色分配刷新

  1. 验证在密钥库级别上没有“Key Vault 机管理人员”角色的情况下添加新机密。

转到密钥保管库“访问控制(IAM)”选项卡,删除此资源的“Key Vault 机密管理人员”角色分配。

删除分配 - 密钥保管库

导航到以前创建的机密。 你可以看到所有机密属性。

具有访问权限的机密视图

若创建新机密(“机密”>“+ 生成/导入”),应会看到以下错误:

创建新机密

  1. 验证在机密级别上没有“Key Vault 机密管理人员”角色的情况下编辑机密。
  • 转到先前创建的机密“访问控制(IAM)”选项卡,删除此资源的“Key Vault 机密管理人员”角色分配。

  • 导航到以前创建的机密。 你可以看到机密属性。

无访问权限的机密视图

  1. 验证在密钥库级别没有读取者角色的情况下读取机密。
  • 转到密钥保管库资源组“访问控制(IAM)”选项卡,删除“Key Vault 读取者”角色分配。

  • 若导航到密钥保管库的“机密”选项卡,应会看到以下错误:

“机密”选项卡 - 错误

创建自定义角色

az role definition create 命令

az role definition create --role-definition '{ \
   "Name": "Backup Keys Operator", \
   "Description": "Perform key backup/restore operations", \
    "Actions": [ 
    ], \
    "DataActions": [ \
        "Microsoft.KeyVault/vaults/keys/read ", \
        "Microsoft.KeyVault/vaults/keys/backup/action", \
         "Microsoft.KeyVault/vaults/keys/restore/action" \
    ], \
    "NotDataActions": [ 
   ], \
    "AssignableScopes": ["/subscriptions/{subscriptionId}"] \
}'

有关如何创建自定义角色的详细信息,请参阅:

Azure 自定义角色

已知的限制和性能

  • 多租户方案(例如与 Azure Lighthouse 配合使用)不支持密钥保管库数据平面 RBAC
  • 每个订阅 2000 个 Azure 角色分配
  • 角色分配延迟:在当前预期的性能下,角色分配更改后最多需要 10 分钟(600 秒)才能应用角色

了解更多

  1. 在 [MANAGEMENTGROUP | SUBSCRIPTION | RESOURCEGROUP | RESOURCE] 作用域中,将 [ROLENAME] 角色分配给 [USER | GROUP | SERVICEPRINCIPAL | MANAGEDIDENTITY]。