备注
密钥保管库资源提供程序支持两种资源类型:保管库和托管 HSM。 本文中所述的访问控制仅适用于保管库。 若要详细了解托管 HSM 的访问控制,请参阅托管 HSM 访问控制。
Azure 基于角色的访问控制 (Azure RBAC) 是在 Azure 资源管理器基础上构建的授权系统,针对 Azure 资源提供集中访问权限管理。
Azure RBAC 允许用户管理密钥、机密和证书权限,并提供一个位置来管理所有密钥保管库的所有权限。
借助 Azure RBAC 模型,用户可以在不同的范围级别上设置权限:管理组、订阅、资源组或单个资源。 通过适用于密钥保管库的 Azure RBAC,用户还可以对各个密钥、机密和证书拥有单独的权限。
有关详细信息,请参阅 Azure 基于角色的访问控制 (Azure RBAC)。
我们的建议是,对每个环境(开发环境、预生产环境和生产环境)的每个应用程序使用一个保管库,并在密钥保管库范围内分配角色。
应避免在单个密钥、机密和证书上分配角色。 必须在多个应用程序之间共享单个密钥属于例外情况;例如,一个应用程序需要从另一个应用程序访问数据的情况。
有关 Azure Key Vault 管理指南的详细信息,请参阅:
备注
Key Vault Contributor
角色仅适用于控制平面操作,用于管理密钥保管库。 它不允许访问密钥、机密和证书。
内置角色 | 说明 | 身份证件 |
---|---|---|
Key Vault 管理员 | 对密钥保管库以及其中的所有对象(包括证书、密钥和机密)执行所有数据平面操作。 无法管理密钥保管库资源或管理角色分配。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | 00482a5a-887f-4fb3-b363-3b7fe8e74483 |
Key Vault 读取者 | 读取密钥保管库及其证书、密钥和机密的元数据。 无法读取机密内容或密钥材料等敏感值。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | 21090545-7ca7-4776-b22c-e363652d74d2 |
密钥保管库清除操作员 | 允许永久删除软删除的保管库。 | a68e7c17-0ab2-4c09-9a58-125dae29748c |
Key Vault 证书管理人员 | 对密钥保管库的证书执行任何操作,但管理权限除外。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | a4417e6f-fecd-4de8-b567-7b0420556985 |
密钥保管库证书用户 | 读取整个证书内容,包括机密和密钥部分。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | db79e9a7-68ee-4b58-9aeb-b90e7c24fcba |
Key Vault 加密管理人员 | 对密钥保管库的密钥执行任何操作(管理权限除外)。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | 14b46e9e-c2b7-41b4-b07b-48a6ebf60603 |
密钥保管库加密服务加密用户 | 读取密钥的元数据并执行包装/展开操作。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | e147488a-f6f5-4113-8e2d-b22465e65bf6 |
Key Vault 加密用户 | 使用密钥执行加密操作。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | 12338af0-0e69-4776-bea7-57ae8d297424 |
密钥保管库加密服务发布用户 | Azure 机密计算和等效环境的发布密钥。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | |
Key Vault 机密管理人员 | 对密钥保管库的机密执行任何操作(管理权限除外)。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | b86a8fe4-44ce-4948-aee5-eccb2c155cd7 |
Key Vault 机密用户 | 读取机密内容,包括带有私钥的证书的机密部分。 仅适用于使用“Azure 基于角色的访问控制”权限模型的密钥保管库。 | 4633458b-17de-408a-b874-0445c86b69e6 |
有关 Azure 内置角色定义的详细信息,请参阅 Azure 内置角色。
内置角色 | 说明 | 身份证件 |
---|---|---|
密钥保管库数据访问管理员 | 通过添加或删除 Key Vault 管理员、Key Vault 证书主管、Key Vault 加密管理人员、Key Vault 加密服务加密用户、Key Vault 加密用户、Key Vault 加密用户、Key Vault 读取者、Key Vault 机密主管或 Key Vault 机密用户角色来管理对 Azure Key Vault 的访问。 包括用于约束角色分配的 ABAC 条件。 | 8b54135c-b56d-4d72-a534-26097cfdc8d8 |
用于密钥保管库的新 Azure RBAC 权限模型提供了保管库访问策略权限模型的替代方案。
必须拥有 Azure 订阅。 如果没有 Azure 订阅,可以在开始之前创建一个试用版订阅。
若要管理角色分配,必须具有 Microsoft.Authorization/roleAssignments/write
和 Microsoft.Authorization/roleAssignments/delete
权限,例如 Key Vault 数据访问管理员(具有仅分配/删除特定 Key Vault 角色的受限权限)、用户访问管理员或所有者。
备注
更改权限模型需要不受限制的“Microsoft.Authorization/roleAssignments/write”权限,这是所有者和用户访问管理员角色的一部分。 经典订阅管理员角色(如“服务管理员”和“共同管理员”)或受限的“Key Vault 数据访问管理员”不能用于更改权限模型。
对新密钥保管库启用 Azure RBAC 权限:
对现有密钥保管库启用 Azure RBAC 权限:
重要
设置 Azure RBAC 权限模型会使所有访问策略权限失效。 若未分配对等的 Azure 角色,它可能会导致故障。
备注
建议在脚本中使用唯一的角色 ID,而不是角色名称。 这样一来,即使角色重命名,脚本仍可以继续使用。 在本文档中,角色名称用于提高可读性。
若要使用 Azure CLI 创建角色分配,请使用 az role assignment 命令:
az role assignment create --role {role-name-or-id} --assignee {assignee-upn}> --scope {scope}
有关详细信息,请参阅使用 Azure CLI 分配 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 角色。
上述角色分配提供了在密钥保管库中列出密钥保管库对象的功能。
az role assignment create --role "Key Vault Secrets Officer" --assignee {assignee-upn} --scope /subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}
有关详细信息,请参阅使用 Azure CLI 分配 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 角色。
备注
浏览器使用缓存,删除角色分配后需要刷新页面。 预留几分钟时间供角色分配刷新
验证在密钥库级别上没有“Key Vault 机管理人员”角色的情况下添加新机密。
转到密钥保管库“访问控制(IAM)”选项卡,删除此资源的“Key Vault 机密管理人员”角色分配。
导航到以前创建的机密。 你可以看到所有机密属性。
若创建新机密(“机密”>“+ 生成/导入”),应会看到此错误:
验证在机密级别上没有“Key Vault 机密管理人员”角色的情况下编辑机密。
转到先前创建的机密“访问控制(IAM)”选项卡,删除此资源的“Key Vault 机密管理人员”角色分配。
导航到以前创建的机密。 你可以看到机密属性。
验证在密钥库级别没有读取者角色的情况下读取机密。
转到密钥保管库资源组“访问控制(IAM)”选项卡,删除“Key Vault 读取者”角色分配。
若导航到密钥保管库的“机密”选项卡,应会看到此错误:
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}"] \
}'
有关如何创建自定义角色的详细信息,请参阅:
否。 RBAC 权限模型允许将 Key Vault 中单个对象的访问权限分配给用户或应用程序,但任何管理操作(如网络访问控制、监视和对象管理)都需要保险库级别权限,这将向应用程序团队的操作员公开安全信息。