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

Microsoft Entra ID 保护使组织能够深入了解基于标识的风险以及调查和自动修正风险的不同方法。 本教程中使用的标识保护 API 可帮助你识别风险并配置工作流以确认入侵或启用修正。

本教程介绍如何使用标识保护 API 来:

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

先决条件

若要完成本教程,需要以下资源和特权:

  • 具有Microsoft Entra ID P1 或 P2 许可证的工作Microsoft Entra租户。
  • 使用至少具有条件访问管理员角色的帐户登录到 API 客户端(例如 Graph 资源管理器)。
  • 授予自己以下委托权限:IdentityRiskEvent.Read.All、、IdentityRiskyUser.ReadWrite.AllPolicy.Read.AllPolicy.ReadWrite.ConditionalAccess、 和 User.ReadWrite.All
  • 用于稍后登录到匿名会话以触发风险检测的测试用户帐户。 可以使用专用浏览会话或 Tor 浏览器。 在本教程中,测试用户邮件昵称为 MyTestUser1

步骤 1:触发风险检测

在匿名浏览器会话中,以 MyTestUser1 身份登录 以 entra.microsoft.com

步骤 2:列出风险检测

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

请求

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

响应

{
  "@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. 使用适合你的情况的相应方法(例如使用 Microsoft Authenticator 应用)完成 MFA 设置过程。

创建条件访问策略

条件访问策略允许设置策略的条件,以标识登录风险级别。 风险级别可以是 low、、mediumhighnone。 以下示例演示如何要求对中高风险级别和高风险级别的登录进行 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" 
    ] 
  } 
} 

响应

{ 
  "@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"
    ]
  }
}

响应

{
  "@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 帐户现在被阻止登录,因为登录风险级别为 mediumhigh

已阻止登录

步骤 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