从保管库访问策略迁移到 Azure 基于角色的访问控制权限模型

Azure 密钥保管库提供了两个授权系统:Azure 基于角色的访问控制 (Azure RBAC),以及访问策略模型。 Azure RBAC 是 Azure 密钥保管库的默认和推荐授权系统。 有关两种授权方法的比较,请参阅 Azure 基于角色的访问控制 (Azure RBAC) 与访问策略

本文提供将密钥保管库从访问策略模型迁移到 Azure RBAC 模型所需的信息。

Azure 角色映射的访问策略

Azure RBAC 基于角色的访问控制有多个 Azure 内置角色,可将其分配给用户、组、服务主体和托管标识。 如果内置角色不能满足组织的特定需求,你可以创建自己的 Azure 自定义角色

用于密钥、证书和机密访问管理的“密钥保管库”内置角色:

  • Key Vault 管理员
  • Key Vault 读取者
  • Key Vault 证书管理人员
  • 密钥保管库证书用户
  • Key Vault 加密管理人员
  • Key Vault 加密用户
  • 密钥保管库加密服务加密用户
  • Key Vault 机密管理人员
  • Key Vault 机密用户

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

可以通过单独选择的权限或预定义的权限模板来分配保管库访问策略。

访问策略预定义的权限模板:

  • 密钥、机密、证书管理
  • 密钥和机密管理
  • 机密和证书管理
  • 密钥管理
  • 机密管理
  • 证书管理
  • SQL Server 连接器
  • Azure Data Lake Storage 或 Azure 存储
  • Azure 备份
  • Exchange Online 客户密钥
  • SharePoint Online 客户密钥
  • Azure 信息 BYOK

Azure 角色映射的访问策略模板

访问策略模板 操作 Azure 角色
密钥、机密、证书管理 密钥:所有操作
证书:所有操作
机密:所有操作
Key Vault 管理员
密钥和机密管理 密钥:所有操作
机密:所有操作
Key Vault 加密管理人员
Key Vault 机密管理人员
机密和证书管理 证书:所有操作
机密:所有操作
Key Vault 证书管理人员
Key Vault 机密管理人员
密钥管理 密钥:所有操作 Key Vault 加密管理人员
机密管理 机密:所有操作 Key Vault 机密管理人员
证书管理 证书:所有操作 Key Vault 证书管理人员
SQL Server 连接器 密钥:获取、列出、包装密钥、解包密钥 密钥保管库加密服务加密用户
Azure Data Lake Storage 或 Azure 存储 密钥:获取、列出、解包密钥 空值
所需的自定义角色
Azure 备份 密钥:获取、列出、备份
机密:获取、列出、备份
空值
所需的自定义角色
Exchange Online 客户密钥 密钥:获取、列出、包装密钥、解包密钥 密钥保管库加密服务加密用户
Exchange Online 客户密钥 密钥:获取、列出、包装密钥、解包密钥 密钥保管库加密服务加密用户
Azure 信息 BYOK 密钥:获取、解密、签名 空值
所需的自定义角色

注意

通过 Azure 门户进行的 Azure 应用服务证书配置不支持 Key Vault RBAC 权限模型。 可以在“密钥保管库证书用户”角色分配中使用 Azure PowerShell、Azure CLI、ARM 模板部署实现应用服务全局标识,例如公有云中的 Azure 应用服务。

分配范围映射

适用于 Key Vault 的 Azure RBAC 允许在以下范围内分配角色:

  • 管理组
  • 订阅
  • 资源组
  • Key Vault 资源
  • 单个密钥、机密和证书

保管库访问策略权限模型限制为仅在 Key Vault 资源级别分配策略。

通常,最好每个应用程序都有一个密钥保管库,并在密钥保管库级别管理访问权限。 在某些情况下,在其他范围内管理访问权限可以简化访问管理。

  • 基础结构、安全管理员和操作员:使用保管库访问策略在管理组、订阅或资源组级别管理密钥保管库组需要维护每个密钥保管库的策略。 Azure RBAC 允许在管理组、订阅或资源组范围创建一个角色分配。 该分配将应用于在同一范围创建的任何新的密钥保管库。 在这种情况下,建议将 Privileged Identity Management 与实时访问结合使用,而不是提供永久访问权限。

  • 应用程序:在某些情况下,应用程序需要与其他应用程序共享机密。 如果使用保管库访问策略,则必须创建单独的密钥保管库,以避免提供对所有机密的访问权限。 Azure RBAC 允许针对单个机密分配角色,而不使用单个密钥保管库。

将保管库访问策略迁移到 Azure RBAC 的步骤

Azure RBAC 和保管库访问策略权限模型之间存在很多差异。 为了避免迁移过程中出现中断,建议执行以下步骤。

  1. 识别并分配角色:根据上面的映射表标识内置角色并根据需要创建自定义角色。 根据范围映射指南,在范围内分配角色。 若要详细了解如何将角色分配到密钥保管库,请参阅通过 Azure 基于角色的访问控制提供对 Key Vault 的访问权限
  2. 验证角色分配:Azure RBAC 中的角色分配可能需要几分钟才能传播。 有关如何检查角色分配的指南,请参阅列出范围内的角色分配
  3. 在密钥保管库上配置监视和警报:请务必启用日志记录并针对拒绝访问异常设置警报。 有关详细信息,请参阅 Azure Key Vault 的监视和警报
  4. 在 Key Vault 上设置 Azure 基于角色的访问控制权限模型:启用 Azure RBAC 权限模型将使所有现有的访问策略失效。 如果出现错误,则可以在所有现有访问策略保持不变的情况下切换回权限模型。

注意

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

注意

启用 Azure RBAC 权限模型后,尝试更新访问策略的所有脚本都将失败。 请务必更新这些脚本以使用 Azure RBAC。

迁移治理

使用 Azure Policy 服务,可以跨保管库管理 RBAC 权限模型迁移。 可以创建自定义策略定义来审核现有密钥保管库,并强制所有新密钥保管库使用 Azure RBAC 权限模型。

为 Key Vault Azure RBAC 权限模型创建和分配策略定义

  1. 导航到策略资源
  2. 在“Azure Policy”页左侧的“创作”下选择“分配”。
  3. 选择页面顶部的“分配策略”。 此按钮会打开“策略分配”页面。
  4. 输入以下信息:
    • 通过选择要对其强制实施策略的订阅和资源组来定义策略的范围。 单击“范围”字段中的三点按钮进行选择。
    • 选择策略定义的名称:“[预览版]:Azure Key Vault 应使用 RBAC 权限模型
    • 转到页面顶部的“参数”选项卡,定义策略的预期效果(审核、拒绝或禁用)。
  5. 填写任何其他字段。 单击页面底部的“上一步”和“下一步”按钮导航选项卡。
  6. 选择“查看 + 创建”
  7. 选择“创建”

分配内置策略后,可能需要 24 小时才能完成扫描。 扫描完成后,可以看到如下所示的符合性结果。

RBAC 策略合规性

有关详细信息,请参阅

Azure RBAC 比较工具的访问策略

重要

此工具由 Azure 社区成员构建和维护,不提供正式的客户支持服务支持。 该工具按原样提供,不提供任何形式的保证。

PowerShell 工具,用于将密钥保管库访问策略与分配的 RBAC 角色进行比较,以帮助将访问策略迁移到 RBAC 权限模型。 该工具专用于在将现有密钥保管库迁移到 RBAC 权限模型时提供健全性检查,以确保具有基础数据操作的已分配角色将会涵盖现有的访问策略。

疑难解答

  • 几分钟后角色分配不起作用 - 在某些情况下,角色分配可能需要更长时间。 在代码中编写重试逻辑来处理这些情况是非常重要的。
  • 删除(软删除)并恢复 Key Vault 时角色分配消失 - 所有 Azure 服务中的软删除功能当前都受到此限制。 在恢复后,需要重新创建所有角色分配。

了解更多