Die Oberfläche ist lokalisiert; Skill-Beschreibungen und -Dokumente werden per KI automatisch in Ihre Sprache übersetzt. Code, Befehle, Pfade und Fachbegriffe bleiben im Original, maßgeblich ist das Dokument des Autors.
Skills entdecken
Produktivität · SKILL.md

implementing-azure-ad-privileged-identity-management

implementing-azure-ad-privileged-identity-management

配置 Microsoft Entra 特权身份管理(PIM)以强制执行即时角色激活(Just-in-Time)、审批工作流和 Azure AD 特权角色的访问审查。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill-Dokumentation

GitHub

name: implementing-azure-ad-privileged-identity-management description: 配置 Microsoft Entra 特权身份管理(PIM)以强制执行即时角色激活(Just-in-Time)、审批工作流和 Azure AD 特权角色的访问审查。 domain: cybersecurity subdomain: identity-access-management tags: [azure-ad, pim, entra-id, just-in-time, privileged-roles, identity-governance, zero-trust] version: "1.0" author: mahipal license: Apache-2.0

实施 Azure AD 特权身份管理

概述

Microsoft Entra 特权身份管理(Privileged Identity Management,PIM)提供基于时间和基于审批的角色激活,以降低对关键资源的过度、不必要或滥用访问的风险。PIM 将永久(常设)权限分配替换为有资格的分配,要求用户在使用前显式激活其角色,并可配置持续时间、MFA 强制执行、审批工作流和理由要求。这是 Microsoft 环境中零信任(Zero Trust)身份治理的核心组件。

前置条件

  • Microsoft Entra ID P2 或 Microsoft Entra ID Governance 许可证
  • 全局管理员或特权角色管理员角色
  • 用于 Azure 资源角色管理的 Azure 订阅
  • 为所有特权用户配置 MFA
  • 管理员账户配备 Microsoft Authenticator 或 FIDO2 密钥

核心概念

分配类型

类型行为使用场景
有资格的用户在使用前必须激活角色;在配置的持续时间后过期日常管理工作
活跃的角色始终处于激活状态;无需激活服务账户、紧急访问账户
时限型任一类型,带有明确的开始/结束日期临时项目访问、承包商访问

PIM 激活流程

具有有资格分配的用户
        │
        ├── 打开 PIM 门户 → 我的角色
        │
        ├── 点击所需角色上的"激活"
        │
        ├── 提供理由和可选的工单号
        │
        ├── 完成 MFA 挑战(如需要)
        │
        ├── [如需审批] → 向审批者发送通知
        │       │
        │       ├── 审批者审查并批准/拒绝
        │       └── 用户收到决定通知
        │
        ├── 角色激活,持续配置的时间(如 8 小时)
        │
        └── 持续时间到期后角色自动停用

支持的资源类型

  1. Microsoft Entra 角色:全局管理员、Exchange 管理员、安全管理员等
  2. Azure 资源角色:订阅/资源组上的所有者、参与者、用户访问管理员
  3. PIM 用于组:管理特权安全组的成员身份

实施步骤

步骤 1:规划角色分配

审计当前的永久角色分配并确定哪些应转换为有资格状态:

当前角色永久持有者行动
全局管理员2-3 名管理员转换为有资格,保留 1 个紧急访问账户为活跃
Exchange 管理员IT 团队全部转换为有资格
安全管理员SOC 团队转换为有资格
用户管理员帮助台转换为有资格
应用程序管理员DevOps转换为有资格

最佳实践:维护不超过 2 个永久的全局管理员(紧急访问账户)。

步骤 2:配置角色设置

对每个 Entra 目录角色,配置 PIM 设置:

通过 Microsoft Entra 管理中心:

  1. 导航到"身份治理 > 特权身份管理 > Microsoft Entra 角色"
  2. 选择"设置"并选择要配置的角色
  3. 配置以下内容:

激活设置:

  • 最大激活持续时间:8 小时(推荐;最大 72 小时)
  • 激活时要求 MFA:启用
  • 要求理由:启用
  • 要求工单信息:启用(用于变更管理集成)
  • 要求审批:对全局管理员、安全管理员启用

分配设置:

  • 允许永久有资格分配:否(设置过期)
  • 有资格分配在以下时间后过期:6 个月(需要重新认证)
  • 允许永久活跃分配:仅用于紧急访问账户
  • 活跃分配时要求 MFA:启用
  • 活跃分配时要求理由:启用

通知设置:

  • 成员被分配有资格时发送电子邮件:角色分配者、管理员
  • 成员激活时发送电子邮件:管理员、安全团队
  • 有资格成员激活角色时发送电子邮件:角色受让人

步骤 3:通过 Microsoft Graph API 配置

import requests

# 获取 Microsoft Graph 令牌
def get_graph_token(tenant_id, client_id, client_secret):
    url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
    data = {
        "grant_type": "client_credentials",
        "client_id": client_id,
        "client_secret": client_secret,
        "scope": "https://graph.microsoft.com/.default"
    }
    response = requests.post(url, data=data)
    return response.json()["access_token"]

# 创建有资格的角色分配
def create_eligible_assignment(token, role_definition_id, principal_id,
                                directory_scope="/", duration_hours=8):
    url = "https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    body = {
        "action": "adminAssign",
        "justification": "PIM 有资格分配",
        "roleDefinitionId": role_definition_id,
        "directoryScopeId": directory_scope,
        "principalId": principal_id,
        "scheduleInfo": {
            "startDateTime": "2025-01-01T00:00:00Z",
            "expiration": {
                "type": "afterDuration",
                "duration": "P180D"  # 180 天有资格窗口
            }
        }
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()

# 激活角色(用户自助服务)
def activate_role(token, role_definition_id, principal_id, justification,
                   duration_hours=8):
    url = "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    body = {
        "action": "selfActivate",
        "principalId": principal_id,
        "roleDefinitionId": role_definition_id,
        "directoryScopeId": "/",
        "justification": justification,
        "scheduleInfo": {
            "startDateTime": None,  # 立即
            "expiration": {
                "type": "afterDuration",
                "duration": f"PT{duration_hours}H"
            }
        }
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()

步骤 4:配置访问审查

设置定期访问审查以验证有资格的分配仍然适当:

  1. 导航到"身份治理 > 访问审查 > 新建访问审查"
  2. 配置:
    • 审查范围:特权身份管理角色分配
    • 角色:选择所有关键角色(全局管理员、安全管理员等)
    • 审查者:经理或带理由的自我审查
    • 频率:关键角色每季度,其他每半年
    • 自动应用结果:对无响应的审查移除访问权限
    • 持续时间:审查者 14 天内响应

步骤 5:配置告警

启用 PIM 安全告警:

告警触发条件行动
全局管理员过多> 5 个全局管理员审查并减少
在 PIM 外分配角色直接角色分配调查并转换为 PIM
角色不要求 MFA无 MFA 激活启用 MFA 要求
过时的有资格分配90 天内未激活审查并可能移除
潜在过时的服务账户未使用的活跃分配调查并停用

验证清单

  • 所有永久特权角色分配已转换为有资格(紧急访问除外)
  • 紧急访问账户配置为活跃并设置监控告警
  • 所有角色激活要求 MFA
  • 全局管理员和安全管理员配置了审批工作流
  • 关键角色的最大激活持续时间设置为 8 小时或更短
  • 有资格分配在 6 个月后过期(需要重新认证)
  • 激活要求理由和工单信息
  • 角色分配和激活的电子邮件通知已配置
  • 所有特权角色已安排季度访问审查
  • PIM 告警已启用并每周审查
  • 审计日志已转发到 SIEM 进行监控

参考资料

Gespeicherte Skills