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

Azure RBAC 中符合条件和有时间限制的角色分配

如果你有 Microsoft Entra ID P2 或 Microsoft Entra ID Governance 许可证,Microsoft Entra Privileged Identity Management (PIM) 会集成到角色分配步骤中。 例如,可以在有限的时间段内向用户分配角色。 还可以设置用户的角色分配资格,并让他们必须在通过请求批准等方式激活后才能使用该角色。 符合条件的角色分配在有限时间段内提供对角色的实时访问权限。

本文介绍 Azure 基于角色的访问控制 (Azure RBAC) 与 Microsoft Entra Privileged Identity Management (PIM) 的集成,以创建符合条件和有时间限制的角色分配。

PIM 功能

如果具有 PIM,可以使用 Azure 门户中的“访问控制(IAM)”页创建符合条件和有时间限制的角色分配。 你可以为用户创建符合条件的角色分配,但无法为应用程序、服务主体或托管标识创建符合条件的角色分配,因为它们无法执行激活步骤。 可以在管理组、订阅和资源组范围内创建符合条件的角色分配,但不能在资源范围内创建。

下面是使用“访问控制(IAM)”页添加角色分配时“分配类型”选项卡的示例。 此功能正在分阶段部署,因此它可能在租户中尚不可用,或者你的界面可能看起来有所不同。

显示“分配类型”选项的“添加角色分配”的屏幕截图。

可用的分配类型选项可能会因 PIM 策略而异。 例如,PIM 策略定义是否可以创建永久分配、限时分配的最大持续时间、角色激活要求(审批、多重身份验证或条件访问身份验证上下文)和其他设置。 有关详细信息,请参阅在 Privileged Identity Management 中配置 Azure 资源角色设置

具有符合条件和/或有时间限制的分配的用户必须具有有效的许可证。 如果不想使用 PIM 功能,请选择“活动”分配类型和“永久”分配持续时间选项。 这些设置创建一个角色分配,其中主体在角色中始终具有权限。

为了更好地了解 PIM,应查看以下术语。

术语或概念 角色分配类别 说明
符合条件 类型 要求用户在使用角色之前执行一项或多项操作的角色分配。 如果用户符合某个角色的条件,则意味着他们在需要执行特权任务时可以激活该角色。 用户无论具有永久角色分配还是合格角色分配,获得的访问权限并无差异。 唯一的差异在于,有些用户并不是一直需要该访问权限。
活动 类型 不要求用户在使用角色之前执行任何操作的角色分配。 分配为“活动”的用户拥有分配给该角色的特权。
激活 合格用户在使用角色之前执行一项或多项操作的过程。 操作可能包括执行多重身份验证 (MFA) 检查、提供业务理由或请求获得指定审批者的批准。
永久符合条件 Duration 使用户始终有资格激活该角色的角色分配。
永久活动 Duration 使用户无需执行任何操作,始终可以使用该角色的角色分配。
限时符合条件 持续时间 通过这种角色分配方式,用户只有在开始和结束日期范围内才有资格激活角色。
限时处于活动状态 持续时间 通过这种角色分配方式,用户只能在开始和结束日期范围内使用角色。
实时 (JIT) 访问 一种访问模式。在此模式下,用户会收到执行特权任务的临时权限,防止恶意用户或未授权用户在权限过期后获得访问权限。 只有在用户需要的情况下,才会授予访问权限。
最低访问权限原则 一种建议的安全做法,仅为每个用户提供所需的最低权限,以便完成有权执行的任务。 此做法会尽量减少全局管理员的数目,并使用适合特定方案的特定管理员角色。

有关详细信息,请参阅什么是 Microsoft Entra Privileged Identity Management?

如何列出符合条件和有时间限制的角色分配

如果想要查看哪些用户使用 PIM 功能,下面是有关如何列出符合条件和有时间限制的角色分配的选项。

选项 1:使用 Azure 门户列出

  1. 登录到 Azure 门户,打开“访问控制(IAM)”页,选择“角色分配”选项卡

  2. 筛选符合条件和有时间限制的角色分配。

    可以按“状态”进行分组和排序,并查找不是“永久活动”类型的角色分配

    “访问控制”以及“活动分配”和“符合条件的分配”选项卡的屏幕截图。

选项 2:使用 PowerShell 列出

没有一个 PowerShell 命令可以同时列出符合条件和活动时间有限的角色分配。 要列出符合条件的角色分配,请使用 Get-AzRoleEligibilitySchedule 命令。 要列出活动角色分配,请使用 Get-AzRoleAssignmentSchedule 命令。

此示例演示如何列出订阅中符合条件和有时间限制的角色分配,其中包括以下角色分配类型:

  • 永久符合条件
  • 限时符合条件
  • 限时处于活动状态

Where-Object 命令将筛选掉没有 PIM 的 Azure RBAC 功能可用的永久活动角色分配。

Get-AzRoleEligibilitySchedule -Scope /subscriptions/<subscriptionId> 
Get-AzRoleAssignmentSchedule -Scope /subscriptions/<subscriptionId> | Where-Object {$_.EndDateTime -ne $null }

有关如何构造范围的信息,请参阅了解 Azure RBAC 的范围

如何将符合条件和有时间限制的角色分配转换为永久活动角色分配

如果你的组织出于流程或合规性原因限制 PIM 的使用,则可以选择以下选项来了解如何将这些角色分配转换为永久活动角色分配。

选项 1:使用 Azure 门户进行转换

  1. 在 Azure 门户中的“角色分配”选项卡和“状态”列中,为要转换的每个角色分配选择“永久符合条件”、“限时符合条件”和“限时活动”链接

  2. 在“编辑分配”窗格中,对于分配类型,请选择“活动”,对于分配持续时间,请选择“永久”

    有关详细信息,请参阅编辑分配

    “编辑分配”窗格的屏幕截图,其中显示了任务类型选项。

  3. 完成后,选择“保存”。

    系统可能需要一段时间才能处理更新并将其反映在门户中。

  4. 对要转换的管理组、订阅和资源组范围中的所有角色分配重复这些步骤。

    如果在要转换的资源范围内分配角色,则必须直接在 PIM 中进行更改。

选项 2:使用 PowerShell 进行转换

没有用于将角色分配直接转换为其他状态或类型的命令或 API,因此可以按照以下步骤操作。

重要

删除角色分配可能会导致环境中出现中断。 请确保先了解此影响后再执行这些步骤。

  1. 检索所有符合条件和具有时间限制的角色分配的列表并将其保存在安全位置,以防止数据丢失。

    重要

    请务必保存符合条件和具有时间限制的角色分配的列表,因为这些步骤要求先删除这些角色分配,然后再创建与永久活动相同的角色分配。

  2. 使用 New-AzRoleEligibilityScheduleRequest 命令删除符合条件的角色分配。

    下面的示例展示了如何删除符合条件的角色分配。

    $guid = New-Guid
    New-AzRoleEligibilityScheduleRequest -Name $guid -Scope <Scope> -PrincipalId <PrincipalId> -RoleDefinitionId <RoleDefinitionId> -RequestType AdminRemove
    
  3. 使用 New-AzRoleAssignmentScheduleRequest 命令删除活动时间有限的角色分配。

    下面的示例展示了如何删除活动时间有限的角色分配。

    $guid = New-Guid
    New-AzRoleAssignmentScheduleRequest -Name $guid -Scope <Scope> -PrincipalId <PrincipalId> -RoleDefinitionId <RoleDefinitionId> -RequestType AdminRemove
    
  4. 使用 Get-AzRoleAssignment 命令检查现有角色分配,并使用 New-AzRoleAssignment 命令通过 Azure RBAC 为每个符合条件和具有时间限制的角色分配创建永久活动角色分配。

    下面的示例演示了如何检查现有角色分配,并使用 Azure RBAC 创建永久活动角色分配。

    $result = Get-AzRoleAssignment -ObjectId $RA.PrincipalId -RoleDefinitionName $RA.RoleDefinitionDisplayName -Scope $RA.Scope;
    if($result -eq $null) {
    New-AzRoleAssignment -ObjectId $RA.PrincipalId -RoleDefinitionName $RA.RoleDefinitionDisplayName -Scope $RA.Scope
    }
    

如何对创建符合条件或有时间限制的角色分配施加限制

如果你的组织因流程或合规性原因而限制 PIM 的使用,则可以使用 Azure 策略来对创建符合条件或有时间限制的角色分配施加限制。 有关详细信息,请参阅什么是 Azure Policy?

下面是一个示例策略,用于对创建符合条件和具有时间限制的角色分配施加限制,但标识列表除外。 可以为其他允许条件添加其他参数和检查。

{
  "properties": {
    "displayName": "Limit eligible and active time-bound role assignments except for allowed principal IDs",
    "policyType": "Custom",
    "mode": "All",
    "metadata": {
      "createdBy": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "createdOn": "2024-11-05T02:31:25.1246591Z",
      "updatedBy": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "updatedOn": "2024-11-06T07:58:17.1699721Z"
    },
    "version": "1.0.0",
    "parameters": {
      "allowedPrincipalIds": {
        "type": "Array",
        "metadata": {
          "displayName": "Allowed Principal IDs",
          "description": "A list of principal IDs that can receive PIM role assignments."
        },
        "defaultValue": []
      }
    },
    "policyRule": {
      "if": {
        "anyof": [
          {
            "allOf": [
              {
                "field": "type",
                "equals": "Microsoft.Authorization/roleEligibilityScheduleRequests"
              },
              {
                "not": {
                  "field": "Microsoft.Authorization/roleEligibilityScheduleRequests/principalId",
                  "in": "[parameters('allowedPrincipalIds')]"
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "field": "type",
                "equals": "Microsoft.Authorization/roleAssignmentScheduleRequests"
              },
              {
                "not": {
                  "field": "Microsoft.Authorization/roleAssignmentScheduleRequests/principalId",
                  "in": "[parameters('allowedPrincipalIds')]"
                }
              }
            ]
          }
        ]
      },
      "then": {
        "effect": "deny"
      }
    },
    "versions": [
      "1.0.0"
    ]
  },
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4ef/providers/Microsoft.Authorization/policyDefinitions/1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5",
  "type": "Microsoft.Authorization/policyDefinitions",
  "name": "1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5",
  "systemData": {
    "createdBy": "test1@contoso.com",
    "createdByType": "User",
    "createdAt": "2024-11-05T02:31:25.0836273Z",
    "lastModifiedBy": "test1@contoso.com",
    "lastModifiedByType": "User",
    "lastModifiedAt": "2024-11-06T07:58:17.1651655Z"
  }
}

有关 PIM 资源属性的信息,请参阅以下 REST API 文档:

有关如何使用参数分配 Azure Policy 的信息,请参阅教程:创建和管理策略以强制实施合规性

后续步骤