使用标识保护 API 识别和修正风险

Microsoft Entra ID 保护使组织能够深入了解基于标识的风险以及调查和自动修正这些风险的方法。 本教程指导你使用 ID 保护 API 来识别风险并设置工作流,以确认入侵或启用修正。

本教程介绍如何使用 ID 保护 API:

  • 生成有风险的登录。
  • 允许具有风险登录的用户使用条件访问策略修正风险状态,该策略需要多重身份验证 (MFA) 。
  • 阻止用户使用条件访问策略登录。
  • 消除用户风险。

先决条件

若要完成本教程,请确保:

  • 具有 Microsoft Entra ID P1 或 P2 许可证的Microsoft Entra租户。
  • 访问 图形资源管理器等 API 客户端,使用具有 条件访问管理员 角色的帐户登录。
  • 以下委派权限: IdentityRiskEvent.Read.AllIdentityRiskyUser.ReadWrite.AllPolicy.Read.AllPolicy.ReadWrite.ConditionalAccessUser.ReadWrite.All
  • 用于登录到匿名会话以触发风险检测的测试用户帐户。 使用专用浏览会话或 Tor 浏览器。 在本教程中,测试用户邮件昵称为 MyTestUser1

步骤 1:触发风险检测

在匿名浏览器会话中,以 身份MyTestUser1登录到 Microsoft Entra 管理中心

步骤 2:列出风险检测

当 MyTestUser1 使用匿名浏览器登录到Microsoft Entra 管理中心时,anonymizedIPAddress检测到风险事件。 可以使用 $filter 查询参数仅获取与 MyTestUser1 用户帐户关联的风险检测。 返回事件可能需要几分钟时间。

请求

GET https://graph.microsoft.com/v1.0/identityProtection/riskDetections?$filter=userDisplayName eq 'MyTestUser1'

响应

HTTP/1.1 20O OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#riskDetections",
  "value": [
    {
      "id": "d52a631815aaa527bf642b196715da5cf0f35b6879204ea5b5c99b21bd4c16f4",
      "requestId": "06f7fd18-b8f1-407d-86a3-f6cbe3a4be00",
      "correlationId": "2a38abff-5701-4073-a81e-fd3aac09cba3",
      "riskType": "anonymizedIPAddress",
      "riskEventType": "anonymizedIPAddress",
      "riskState": "atRisk",
      "riskLevel": "medium",
      "riskDetail": "none",
      "source": "IdentityProtection",
      "detectionTimingType": "realtime",
      "activity": "signin",
      "tokenIssuerType": "AzureAD",
      "ipAddress": "178.17.170.23",
      "activityDateTime": "2020-11-03T20:51:34.6245276Z",
      "detectedDateTime": "2020-11-03T20:51:34.6245276Z",
      "lastUpdatedDateTime": "2020-11-03T20:53:12.1984203Z",
      "userId": "4628e7df-dff3-407c-a08f-75f08c0806dc",
      "userDisplayName": "MyTestUser1",
      "userPrincipalName": "MyTestUser1@contoso.com",
      "additionalInfo": "[{\"Key\":\"userAgent\",\"Value\":\"Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0\"}]",
      "___location": {
        "city": "Chisinau",
        "state": "Chisinau",
        "countryOrRegion": "MD",
        "geoCoordinates": {
          "latitude": 47.0269,
          "longitude": 28.8416
        }
      }
    }
  ]
}

步骤 3:创建条件访问策略

条件访问策略允许用户在检测到风险时进行自我修正,使他们能够在完成策略提示后安全地访问资源。 在此步骤中,你将创建条件访问策略,该策略要求用户在发生中等或高风险检测时使用 MFA 登录。

设置多重身份验证

为 MFA 设置帐户时,请选择适合你的情况的最佳身份验证方法。

  1. 使用 MyTestUser1 帐户登录到保持帐户安全站点。
  2. 使用适合你的情况的相应方法完成 MFA 设置过程,例如使用 Microsoft Authenticator 应用。

创建条件访问策略

条件访问策略允许设置条件以标识登录风险级别。 风险级别可以是 lowmediumhighnone。 以下示例演示如何要求对中等风险级别和高风险级别的登录进行 MFA。

请求

POST https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies 
Content-type: application/json
 
{ 
  "displayName": "Policy for risky sign-in", 
  "state": "enabled", 
  "conditions": { 
    "signInRiskLevels": [ 
      "high", 
      "medium" 
    ], 
    "applications": { 
      "includeApplications": ["All"]
    }, 
    "users": { 
      "includeUsers": [ 
        "4628e7df-dff3-407c-a08f-75f08c0806dc" 
      ] 
    } 
  }, 
  "grantControls": { 
    "operator": "OR", 
    "builtInControls": [ 
      "mfa" 
    ] 
  } 
} 

响应

HTTP/1.1 201 Created
Content-type: application/json

{ 
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identity/conditionalAccess/policies/$entity", 
  "id": "9ad78153-b1f8-4714-adc1-1445727678a8", 
  "displayName": "Policy for risky sign-in", 
  "createdDateTime": "2020-11-03T20:56:38.6210843Z", 
  "modifiedDateTime": null, 
  "state": "enabled", 
  "sessionControls": null, 
  "conditions": { 
    "signInRiskLevels": [ 
      "high", 
      "medium" 
    ], 
    "clientAppTypes": [  
      "all"  
    ], 
    "platforms": null, 
    "locations": null, 
    "applications": { 
      "includeApplications": [ 
        "All" 
      ], 
      "excludeApplications": [], 
      "includeUserActions": [] 
    }, 
    "users": { 
      "includeUsers": [ 
        "4628e7df-dff3-407c-a08f-75f08c0806dc" 
      ], 
      "excludeUsers": [], 
      "includeGroups": [], 
      "excludeGroups": [], 
      "includeRoles": [], 
      "excludeRoles": [] 
    } 
  }, 
  "grantControls": { 
    "operator": "OR", 
    "builtInControls": [ 
      "mfa" 
    ], 
    "customAuthenticationFactors": [], 
    "termsOfUse": [] 
  } 
} 

步骤 4:触发另一个有风险的登录,但完成多重身份验证

通过登录到匿名浏览器,会检测到风险,但可以通过完成 MFA 来修正风险。

使用 MyTestUser1 帐户登录到 entra.microsoft.com 并完成 MFA 过程。

步骤 5:列出风险检测

在步骤 2 中重新运行请求,以获取 MyTestUser1 用户帐户的最新风险检测。 由于 MFA 已在步骤 4 中完成,因此此最新登录事件的 riskState 现在 remediated为 。

[可选]阻止用户登录

如果希望阻止与风险登录关联的用户,而不是允许自我修正,请创建新的条件访问策略。 如果发生中等或高风险检测,此策略将阻止用户登录。 与步骤 3 中的策略的主要区别在于 ,builtInControls 现在设置为 block

请求

POST https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies
Content-type: application/json

{
  "displayName": "Policy for risky sign-in block access",
  "state": "enabled",
  "conditions": {
    "signInRiskLevels": [
      "high",
      "medium"
    ],
    "applications": {
      "includeApplications": ["All"]
    },
    "users": {
      "includeUsers": [
        "4628e7df-dff3-407c-a08f-75f08c0806dc"
      ]
    }
  },
  "grantControls": {
    "operator": "OR",
    "builtInControls": [
      "block"
    ]
  }
}

响应

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identity/conditionalAccess/policies/$entity",
  "id": "9ad78153-b1f8-4714-adc1-1445727678a8",
  "displayName": "Policy for risky sign-in block access",
  "createdDateTime": "2020-11-03T20:56:38.6210843Z",
  "modifiedDateTime": null,
  "state": "enabled",
  "sessionControls": null,
  "conditions": {
    "signInRiskLevels": [
      "high",
      "medium"
    ],
    "clientAppTypes": [ 
      "all" 
    ],
    "platforms": null,
    "locations": null,
    "applications": {
      "includeApplications": [
        "All"
      ],
      "excludeApplications": [],
      "includeUserActions": []
    },
    "users": {
      "includeUsers": [
        "4628e7df-dff3-407c-a08f-75f08c0806dc"
      ],
      "excludeUsers": [],
      "includeGroups": [],
      "excludeGroups": [],
      "includeRoles": [],
      "excludeRoles": []
    }
  },
  "grantControls": {
    "operator": "OR",
    "builtInControls": [
      "block"
    ],
    "customAuthenticationFactors": [],
    "termsOfUse": []
  }
}

此条件访问策略到位后,由于登录风险级别中等或高, MyTestUser1 帐户现在被阻止登录。

已阻止登录

步骤 6:消除有风险的用户

如果你认为用户没有风险并且不想强制实施条件访问策略,请手动关闭有风险的用户,如以下请求中所示。 请求返回 204 No Content 响应。

请求

POST https://graph.microsoft.com/v1.0/identityProtection/riskyUsers/dismiss
Content-Type: application/json

{
  "userIds": [
    "4628e7df-dff3-407c-a08f-75f08c0806dc"
  ]
}

关闭风险用户后,可以在步骤 2 中重新运行请求,并注意到 MyTestUser1 用户帐户现在的风险级别 none 为 ,riskState 为 dismissed

第 7 步:清理资源

在此步骤中,删除创建的两个条件访问策略。 请求返回 204 No Content 响应。

DELETE https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/9ad78153-b1f8-4714-adc1-1445727678a8