Tutorial: Identificar y corregir riesgos con las API Graph Microsoft

Azure AD Identity Protection proporciona a las organizaciones información sobre los riesgos basados en identidades y distintas formas de investigar y corregir automáticamente los riesgos. Las API de Protección de identidades usadas en este tutorial pueden ayudarle a identificar riesgos y configurar un flujo de trabajo para confirmar el riesgo o habilitar la corrección. Para obtener más información, vea ¿Cuál es el riesgo?

En este tutorial, aprenderá a generar un inicio de sesión arriesgado y corregir el estado de riesgo del usuario con una directiva de acceso condicional que requiere autenticación multifactor (MFA). Una sección opcional muestra cómo impedir que el usuario inicie sesión también con una directiva de acceso condicional y descartar el riesgo del usuario.

Nota: Los objetos de respuesta que se muestran en este tutorial podrían acortarse para mejorar la legibilidad.

Requisitos previos

Para completar correctamente este tutorial, asegúrese de que tiene los requisitos previos necesarios:

  • Debe tener una licencia Azure AD Premium P1 o P2 para usar la API de detección de riesgos.
  • En este tutorial se usa el explorador Tor para iniciar sesión en Azure Portal de forma anónima. Puede usar cualquier explorador anónimo para realizar la tarea. Para descargar el explorador de Tor, consulte Descargar el explorador tor.
  • En este tutorial se presupone que usa el Probador de Microsoft Graph, pero puede emplear también Postman o crear su propia aplicación de cliente para llamar a Microsoft Graph. Para llamar a las API de Microsoft Graph en este tutorial, necesitará usar una cuenta con el rol de administrador global y los permisos adecuados. Complete los pasos siguientes para configurar los permisos en el Probador de Microsoft Graph:
    1. Inicie el Probador de Microsoft Graph

    2. Seleccione Inicio de sesión con Microsoft e inicie sesión con la cuenta de administrador global de Azure AD. Una vez que haya iniciado sesión correctamente, verá los detalles de la cuenta de usuario en el panel izquierdo.

    3. Seleccione el icono de configuración a la derecha de los detalles de la cuenta de usuario y, después, Seleccionar permisos.

      Establecer permisos

    4. Desplácese por la lista de permisos a estos permisos:

      • IdentityRiskEvents (2), expanda y, a continuación, seleccione IdentityRiskEvent.Read.All
      • IdentityRiskyUser (2), expanda y, a continuación, seleccione IdentityRiskyUser.ReadWrite.All
      • Directiva (13), expanda y, a continuación, Policy.Read.All seleccione y Policy.ReadWrite.ConditionalAccess
      • Usuario (8), expanda y, a continuación, seleccione User.ReadWrite.All

      Buscar permisos

    5. Seleccione Consentir y, después, Aceptar para aceptar el consentimiento de los permisos. No necesita dar su consentimiento en nombre de su organización para estos permisos.

      Aceptar permisos

Paso 1: Crear una cuenta de usuario

Para este tutorial, se crea una cuenta de usuario que se usa para probar detecciones de riesgos. En el cuerpo de la solicitud, cambie contoso.com al nombre de dominio del espacio empresarial. Puede encontrar la información del espacio empresarial en la página de información general de Azure Active Directory.

Solicitud

POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "accountEnabled":true,
  "displayName":"MyTestUser1",
  "mailNickname":"MyTestUser1",
  "userPrincipalName":"MyTestUser1@contoso.com",
  "passwordProfile": {
    "forceChangePasswordNextSignIn":true,
    "password":"Contoso1234"
  }
}

Respuesta

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "id": "4628e7df-dff3-407c-a08f-75f08c0806dc",
  "businessPhones": [],
  "displayName": "MyTestUser1",
  "givenName": null,
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": null,
  "userPrincipalName": "MyTestUser1@contoso.com"
}

Paso 2: Desencadenar una detección de riesgos

Desencadenar una detección de riesgos

Una forma de desencadenar una detección de riesgos en una cuenta de usuario es iniciar sesión en Azure Portal de forma anónima. En este tutorial, se usa el explorador Tor para iniciar sesión de forma anónima.

  1. Abra el explorador y escriba portal.azure.com la dirección del sitio.
  2. Inicie sesión en el portal con las credenciales de la cuenta MyTestUser1 que creó anteriormente. Se le pedirá que cambie la contraseña existente.

Enumerar detecciones de riesgos

Cuando ha iniciado sesión en Azure Portal con el explorador anónimo, se detectó un evento anonymizedIPAddress de riesgo. Puede usar el parámetro de consulta para obtener solo las detecciones de riesgos asociadas con la cuenta de usuario $filter MyTestUser1.

Solicitud

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

Respuesta

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

Nota: El evento puede tardar unos minutos en devolverse.

Paso 3: Crear una directiva de acceso condicional

Puede aprovechar las directivas de acceso condicional de su organización para permitir que los usuarios se auto remedien cuando se detecte el riesgo. La corrección automática permite a los usuarios desbloquearse a sí mismos para obtener acceso a sus recursos de forma segura después de completar el aviso de directiva. En este paso, se crea una directiva de acceso condicional que requiere que el usuario inicie sesión con MFA si se produce una detección de riesgo medio o alto.

Configurar la autenticación multifactor

Al configurar una cuenta para MFA, puede elegir entre varios métodos para autenticar al usuario. Elija el mejor método para su situación para completar este tutorial.

  1. Inicie sesión en el sitio de mantener la cuenta segura con la cuenta MyTestUser1.
  2. Complete el procedimiento de configuración de MFA con el método adecuado para su situación, como enviar un mensaje de texto al teléfono.

Crear la directiva de acceso condicional

La directiva de acceso condicional proporciona la capacidad de establecer las condiciones de la directiva para identificar los niveles de riesgo de inicio de sesión. Los niveles de riesgo low pueden ser , , , medium high none . En la respuesta que se ha devuelto al enumerar las detecciones de riesgos de MyTestUser1, podemos ver que el nivel de riesgo es medium . En este ejemplo se muestra cómo requerir MFA para MyTestUser1 que se identificó como un usuario arriesgado.

Solicitud

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

Respuesta

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

Con esta directiva de acceso condicional en su lugar, la cuenta MyTestUser1 ahora es necesaria para usar MFA al iniciar sesión porque el nivel de riesgo de inicio de sesión es   medio o alto.

Iniciar sesión y completar la autenticación multifactor

Al iniciar sesión en el explorador anónimo, se detecta un riesgo, pero se corrige completando MFA.

  1. Abra el explorador y escriba  portal.azure.com   la dirección del sitio.
  2. Inicie sesión en el portal con las credenciales de la cuenta MyTestUser1   y complete el proceso mfa.

Enumerar detecciones de riesgos

Porque MFA se completó. Ahora, cuando enumera las detecciones de riesgos, riskState muestra el evento como remediated .

Solicitud

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

Respuesta

{
  "id": "ba9d45f16d8f87f6ae974efda7336b2120962a398cb362dfd9e5bdc8e9d149d0",
  "requestId": "156c01fb-31cf-4a10-b9a9-beee93e6a400",
  "correlationId": "a8aaac45-fe22-46df-babf-10a8dba85d62",
  "riskType": "anonymizedIPAddress",
  "riskEventType": "anonymizedIPAddress",
  "riskState": "remediated",
  "riskLevel": "medium",
  "riskDetail": "userPassedMFADrivenByRiskBasedPolicy",
  "source": "IdentityProtection",
  "detectionTimingType": "realtime",
  "activity": "signin",
  "tokenIssuerType": "AzureAD",
  "ipAddress": "185.220.101.213",
  "activityDateTime": "2020-11-12T23:45:22.4092789Z",
  "detectedDateTime": "2020-11-12T23:45:22.4092789Z",
  "lastUpdatedDateTime": "2020-11-12T23:47:57.7831423Z",
  "userId": "4b608561-9258-44ba-8cdb-3286dcbf0e3b",
  "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": "Schoenwalde-Glien",
    "state": "Brandenburg",
    "countryOrRegion": "DE",
    "geoCoordinates": {
      "latitude": 52.61983,
      "longitude": 13.12743
    }
  }
}

Paso 4 (opcional) Impedir que el usuario inicie sesión

En lugar de proporcionar la oportunidad de que el usuario se auto remedie, puede impedir que el usuario inicie sesión. En este paso, se crea una nueva directiva de acceso condicional que impide que el usuario inicie sesión si se produce una detección de riesgo medio o alto. La diferencia en las directivas es que builtInControls se establece en block .

Solicitud

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

Respuesta

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

Con esta directiva de acceso condicional en su lugar, la cuenta MyTestUser1 ahora está bloqueada para iniciar sesión porque el nivel de riesgo de inicio de sesión es medium o high .

Inicio de sesión bloqueado

Paso 5: Descartar usuarios riesgosos

Si cree que el usuario no está en riesgo y no desea aplicar una directiva de acceso condicional, puede descartar manualmente al usuario arriesgado.

Descartar al usuario arriesgado

Solicitud

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

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

Respuesta

HTTP/1.1 204 No Content

Enumerar usuarios arriesgados

Después de descartar el usuario de riesgo, puede ver en la respuesta al enumerar usuarios riesgosos que la cuenta de usuario de MyTestUser1 ahora tiene un nivel de riesgo de y none un riskState de dismissed .

Solicitud

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

Respuesta

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#riskyUsers",
  "value": [
    {
      "id": "4628e7df-dff3-407c-a08f-75f08c0806dc",
      "isDeleted": false,
      "isProcessing": false,
      "riskLevel": "none",
      "riskState": "dismissed",
      "riskDetail": "adminDismissedAllRiskForUser",
      "riskLastUpdatedDateTime": "2020-11-03T21:48:53.4298425Z",
      "userDisplayName": "MyTestUser1",
      "userPrincipalName": "MyTestUser1@contoso.com"
    }
  ]
}

Paso 6: Limpiar recursos

En este paso, quitará los recursos que creó.

Elimine la cuenta de usuario

Elimine la cuenta de usuario MyTestUser1.

Solicitud

DELETE https://graph.microsoft.com/v1.0/users/4628e7df-dff3-407c-a08f-75f08c0806dc

Respuesta

No Content - 204

Eliminar la directiva de acceso condicional

Elimine la directiva de acceso condicional que creó.

Solicitud

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

Respuesta

No Content - 204

Vea también

En este tutorial, usó muchas API para realizar tareas. Explore la referencia de api para estas API para obtener más información sobre lo que pueden hacer las API.