Tutorial: Usar la API de opiniones de acceso para revisar el acceso de invitado a los grupos Microsoft 365 invitados

En este tutorial, usará Graph Explorer para crear y leer opiniones de acceso dirigidas a todos los Microsoft 365 con usuarios invitados en el espacio empresarial. Para ello, primero usará Azure AD B2B para invitar y crear un usuario invitado, también conocido como identidad externa, en el espacio empresarial. A continuación, agregará este usuario invitado al grupo de Microsoft 365 antes de crear y leer la revisión de acceso.

Nota

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

Requisitos previos

Para completar este tutorial, necesita los siguientes recursos y privilegios:

  • Un inquilino de Azure AD en funcionamiento con una licencia Azure AD Premium P2 o EMS E5 habilitada.
  • Una cuenta en un inquilino de Azure AD diferente o una identidad social que puede invitar como usuario invitado (usuario B2B).
  • Inicie sesión en Graph Explorer como usuario en un rol de administrador global.
  • Los siguientes permisos delegados: User.Invite.All AccessReview.ReadWrite.All , , , Group.ReadWrite.All User.ReadWrite.All .

Para dar su consentimiento a los permisos necesarios en Graph Explorer:

  1. Seleccione el icono de configuración a la derecha de los detalles de la cuenta de usuario y, a continuación, elija Seleccionar permisos.

    Seleccione los permisos de Microsoft Graph

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

    • AccessReview (3), expanda y seleccione AccessReview.ReadWrite.All.
    • Grupo (2), expanda y, a continuación, seleccione Group.ReadWrite.All.
    • User (8), expanda y, a continuación, seleccione User.Invite.All y User.ReadWrite.All.

    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.

    Consentimiento a los permisos Graph Microsoft

Paso 1: Crear un usuario de prueba en el espacio empresarial

Solicitud

POST /users
Content-Type: application/json

{
    "accountEnabled": true,
    "displayName": "Aline Dupuy",
    "mailNickname": "AlineD",
    "userPrincipalName": "AlineD@contoso.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": true,
        "password": "xWwvJ]6NMw+bWH-d"
    }
}

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users/$entity",
    "id": "c9a5aff7-9298-4d71-adab-0a222e0a05e4",
    "displayName": "Aline Dupuy",
    "userPrincipalName": "AlineD@contoso.com",
    "userType": "Member"
}

Paso 2: Invitar a un usuario invitado a su inquilino

Invite a un usuario invitado con la dirección de correo electrónico john@tailspintoys.com a su inquilino.

Solicitud

POST https://graph.microsoft.com/beta/invitations
Content-Type: application/json

{
    "invitedUserDisplayName": "John Doe (Tailspin Toys)",
    "invitedUserEmailAddress": "john@tailspintoys.com",
    "sendInvitationMessage": false,
    "inviteRedirectUrl": "https://myapps.microsoft.com"
}

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#invitations/$entity",
    "invitedUser": {
        "id": "baf1b0a0-1f9a-4a56-9884-6a30824f8d20"
    }    
}

Paso 3: Crear un nuevo grupo Microsoft 365 y agregar el usuario invitado

En este paso:

  1. Crear un nuevo grupo Microsoft 365 denominado Campaña de marketing de Feelgood.
  2. Asígnese como propietario del grupo.
  3. Agregue john@tailspintoys.com como miembro del grupo. Su acceso al grupo es objeto de revisión por usted, el propietario del grupo.

Solicitud

En esta llamada, reemplace:

  • cdb555e3-b33e-4fd5-a427-17fadacbdfa7 con su identificador. Para recuperar el identificador, ejecute GET en https://graph.microsoft.com/beta/me .
  • baf1b0a0-1f9a-4a56-9884-6a30824f8d20 con john@tailspintoys.com's id. de la respuesta en el paso 2.
POST https://graph.microsoft.com/beta/groups
Content-Type: application/json

{
    "description": "Feelgood Marketing Campaign with external partners and vendors.",
    "displayName": "Feelgood Marketing Campaign",
    "groupTypes": [
        "Unified"
    ],
    "mailEnabled": true,
    "mailNickname": "FeelGoodCampaign",
    "securityEnabled": true,
    "owners@odata.bind": [
        "https://graph.microsoft.com/beta/users/cdb555e3-b33e-4fd5-a427-17fadacbdfa7"
    ],
    "members@odata.bind": [
        "https://graph.microsoft.com/beta/users/baf1b0a0-1f9a-4a56-9884-6a30824f8d20"
    ]
}

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#groups/$entity",
    "id": "59ab642a-2776-4e32-9b68-9ff7a47b7f6a",
    "displayName": "Feelgood Marketing Campaign",
    "groupTypes": [
        "Unified"
    ]
}

Ahora tiene un grupo Microsoft 365 con un usuario invitado.

Paso 4: Crear una revisión de acceso para todos Microsoft 365 grupos con usuarios invitados

Al crear una serie de revisión de acceso periódica para todos los grupos de Microsoft 365 con usuarios invitados, se programa una revisión periódica del acceso de los invitados al grupo Microsoft 365 invitado. Haga esto para el grupo Campaña de marketing de Feelgood.

La serie de revisión de acceso usa la siguiente configuración:

  • Es una revisión periódica de acceso y revisada trimestralmente.
  • Los propietarios del grupo revisan el acceso continuo de los usuarios invitados.
  • El ámbito de revisión está limitado a Microsoft 365 grupos con usuarios invitados únicamente. Para obtener más opciones para configurar el ámbito, vea la sección Ver también.
  • Revisor de copia de seguridad. Puede ser un usuario de reserva o un grupo que pueda revisar el acceso en caso de que el grupo no tenga ningún propietario asignado. Para obtener más opciones para configurar los revisores, consulte la sección Ver también.
  • autoApplyDecisionsEnabled se establece en true . En este caso, las decisiones se aplican automáticamente una vez que el revisor completa la revisión de acceso o cuando finaliza la duración de la revisión de acceso. Si no está habilitado, un usuario debe, una vez completada la revisión, aplicar las decisiones manualmente.
  • Aplicar acción removeAccessApplyAction a usuarios invitados denegados. Esto quita la pertenencia al grupo del invitado denegado. El usuario invitado todavía puede iniciar sesión en el espacio empresarial.

Solicitud

En esta llamada, reemplace lo siguiente:

  • c9a5aff7-9298-4d71-adab-0a222e0a05e4 con el identificador del usuario que va a designar como revisor de copia de seguridad. Este es el identificador de la respuesta del paso 1.
  • Valor de startDate con la fecha de hoy y el valor de endDate con una fecha de un año a partir de la fecha de inicio.
POST https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions
Content-type: application/json

{
    "displayName": "Group owners review guest across Microsoft 365 groups in the tenant (Quarterly)",
    "descriptionForAdmins": "",
    "descriptionForReviewers": "",
    "scope": {
        "query": "./members/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",
        "queryType": "MicrosoftGraph"
    },
    "instanceEnumerationScope": {
        "query": "/groups?$filter=(groupTypes/any(c:c+eq+'Unified'))&$count=true",
        "queryType": "MicrosoftGraph"
    },
    "reviewers": [
        {
            "query": "./owners",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ],
    "backupReviewers": [
        {
            "query": "/users/c9a5aff7-9298-4d71-adab-0a222e0a05e4",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ],
    "settings": {
        "mailNotificationsEnabled": true,
        "reminderNotificationsEnabled": true,
        "justificationRequiredOnApproval": true,
        "defaultDecisionEnabled": true,
        "defaultDecision": "Approve",
        "instanceDurationInDays": 0,
        "autoApplyDecisionsEnabled": true,
        "recommendationsEnabled": true,
        "recurrence": {
            "pattern": {
                "type": "absoluteMonthly",
                "interval": 3,
                "month": 0,
                "dayOfMonth": 0,
                "daysOfWeek": [],
                "firstDayOfWeek": "sunday",
                "index": "first"
            },
            "range": {
                "type": "numbered",
                "numberOfOccurrences": 0,
                "recurrenceTimeZone": null,
                "startDate": "2021-02-10",
                "endDate": "2022-12-21"
            }
        },
        "applyActions": [
            {
                "@odata.type": "#microsoft.graph.removeAccessApplyAction"
            }
        ]
    }
}

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/accessReviews/definitions/$entity",
    "id": "c22ae540-b89a-4d24-bac0-4ef35e6591ea",
    "displayName": "Group owners review guest across Microsoft 365 groups in the tenant (Quarterly)",
    "status": "NotStarted",
    "createdBy": {
        "id": "cdb555e3-b33e-4fd5-a427-17fadacbdfa7",
        "displayName": "MOD Administrator",
        "userPrincipalName": "admin@contoso.com"
    },
    "scope": {
        "query": "./members/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",
        "queryType": "MicrosoftGraph"
    },
    "instanceEnumerationScope": {
        "query": "/groups?$filter=(groupTypes/any(c:c+eq+'Unified'))&$count=true",
        "queryType": "MicrosoftGraph"
    },
    "reviewers": [
        {
            "query": "./owners",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ],
    "backupReviewers": [
        {
            "query": "/users/c9a5aff7-9298-4d71-adab-0a222e0a05e4",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ],
    "settings": {
        "defaultDecisionEnabled": true,
        "defaultDecision": "Approve",
        "autoApplyDecisionsEnabled": true,
        "recommendationsEnabled": true,
        "recurrence": {
            "pattern": {
                "type": "absoluteMonthly",
                "interval": 3,
                "month": 0,
                "dayOfMonth": 0,
                "daysOfWeek": [],
                "firstDayOfWeek": "sunday",
                "index": "first"
            },
            "range": {
                "type": "numbered",
                "numberOfOccurrences": 0,
                "recurrenceTimeZone": null,
                "startDate": "2021-02-10",
                "endDate": "2022-12-21"
            }
        },
        "applyActions": [
            {
                "@odata.type": "#microsoft.graph.removeAccessApplyAction"
            }
        ]
    }
}

Paso 5: Enumerar instancias de la revisión de acceso

En la consulta siguiente se enumeran todas las instancias de la definición de revisión de acceso. Si el inquilino de prueba contiene otros Microsoft 365 con usuarios invitados, esta solicitud devolverá una instancia por cada grupo de Microsoft 365 con usuarios invitados en el espacio empresarial.

Solicitud

En esta llamada, reemplace c22ae540-b89a-4d24-bac0-4ef35e6591ea por el identificador de la definición de revisión de acceso devuelta en el paso 4.

GET https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions/c22ae540-b89a-4d24-bac0-4ef35e6591ea/instances

Respuesta

En esta respuesta, el ámbito incluye un grupo con id (el grupo de campaña de marketing Feelgood creado en el paso 59ab642a-2776-4e32-9b68-9ff7a47b7f6a 3) porque tiene un usuario invitado.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/accessReviews/definitions('c22ae540-b89a-4d24-bac0-4ef35e6591ea')/instances",
    "value": [
        {
            "id": "6392b1a7-9c25-4844-83e5-34e23c88e16a",
            "startDateTime": "2021-02-10T17:00:36.96Z",
            "endDateTime": "2021-02-10T17:00:36.96Z",
            "status": "InProgress",
            "scope": {
                "query": "/groups/59ab642a-2776-4e32-9b68-9ff7a47b7f6a/members/microsoft.graph.user/?$count=true&$filter=(userType eq 'Guest')",
                "queryType": "MicrosoftGraph"
            }
        }
    ]
}

En esta respuesta, la instancia de revisión de acceso es actualmente InProgress . Dado que se trata de una revisión trimestral, cada 3 meses, se crea automáticamente una nueva instancia de revisión y usted (el revisor) puede aplicar nuevas decisiones.

Paso 6: Obtener decisiones

Obtenga las decisiones tomadas para la instancia de una revisión de acceso.

Solicitud

En esta llamada:

  • Reemplace c22ae540-b89a-4d24-bac0-4ef35e6591ea por el identificador de la definición de revisión de acceso devuelta en el paso 4.
  • Reemplace 6392b1a7-9c25-4844-83e5-34e23c88e16a por el identificador de la instancia de revisión de acceso devuelta en el paso 5.
GET https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions/c22ae540-b89a-4d24-bac0-4ef35e6591ea/instances/6392b1a7-9c25-4844-83e5-34e23c88e16a/decisions

Respuesta

La siguiente respuesta muestra la decisión tomada para la instancia de la revisión.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/accessReviews/definitions('c22ae540-b89a-4d24-bac0-4ef35e6591ea')/instances('6392b1a7-9c25-4844-83e5-34e23c88e16a')/decisions",
    "@odata.count": 1,
    "value": [
        {
            "id": "0e76ee07-b4c6-469e-bc9d-e73fc9a8d660",
            "accessReviewId": "6392b1a7-9c25-4844-83e5-34e23c88e16a",
            "reviewedDateTime": "2021-02-10T17:06:26.147Z",
            "decision": "Approve",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "Deny",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "AAD Access Reviews",
                "userPrincipalName": "AAD Access Reviews"
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "userPrincipalName": ""
            },
            "target": {
                "@odata.type": "#microsoft.graph.accessReviewInstanceDecisionItemUserTarget",
                "userId": "baf1b0a0-1f9a-4a56-9884-6a30824f8d20",
                "userDisplayName": "John Doe (Tailspin Toys)",
                "userPrincipalName": "john@tailspintoys.com"
            },
            "principal": {
                "@odata.type": "#microsoft.graph.userIdentity",
                "id": "baf1b0a0-1f9a-4a56-9884-6a30824f8d20",
                "displayName": "John Doe (Tailspin Toys)",
                "userPrincipalName": "john@tailspintoys.com"
            }
        }
    ]
}

Dado que se trata de una revisión trimestral y mientras la definición sigue activa, es decir, el endDate de periodicidad no es una fecha pasada, cada 3 meses cuando se crea una nueva instancia de revisión, usted como revisor puede aplicar nuevas decisiones.

Paso 7: Limpiar los recursos

Elimine los recursos que creó para este tutorial: grupo de campaña de marketing Feelgood, la definición de programación de revisión de acceso, el usuario invitado y el usuario de prueba.

Eliminar el Microsoft 365 grupo

Solicitud

En esta llamada, reemplace por el identificador de la campaña de 59ab642a-2776-4e32-9b68-9ff7a47b7f6a marketing de Feelgood Microsoft 365 grupo.

DELETE https://graph.microsoft.com/beta/groups/59ab642a-2776-4e32-9b68-9ff7a47b7f6a

Respuesta

HTTP/1.1 204 No Content
Content-type: text/plain

Eliminar la definición de revisión de acceso

En esta llamada, reemplace c22ae540-b89a-4d24-bac0-4ef35e6591ea por el identificador de la definición de revisión de acceso. Dado que la definición de programación de revisión de acceso es el plano de la revisión de acceso, eliminar la definición eliminará la configuración, las instancias y las decisiones asociadas con la revisión de acceso.

Solicitud

DELETE https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions/c22ae540-b89a-4d24-bac0-4ef35e6591ea

Respuesta

HTTP/1.1 204 No Content
Content-type: text/plain

Quitar el usuario invitado

En esta llamada, reemplace baf1b0a0-1f9a-4a56-9884-6a30824f8d20 por el identificador del usuario invitado, john@tailspintoys.com.

Solicitud

DELETE https://graph.microsoft.com/beta/users/baf1b0a0-1f9a-4a56-9884-6a30824f8d20

Respuesta

HTTP/1.1 204 No Content
Content-type: text/plain

Eliminar el usuario de prueba

En esta llamada, reemplace c9a5aff7-9298-4d71-adab-0a222e0a05e4 por el identificador del usuario de prueba.

Solicitud

DELETE https://graph.microsoft.com/beta/users/c9a5aff7-9298-4d71-adab-0a222e0a05e4

Respuesta

HTTP/1.1 204 No Content
Content-type: text/plain

¡Felicidades! Ha creado una revisión de acceso para todos los usuarios invitados de grupos de Microsoft 365 en su inquilino y ha programado trimestralmente la evaluación y la atestación del acceso de los usuarios invitados. Los propietarios del grupo revisarán el acceso durante estos ciclos, eligiendo aprobar o denegar el acceso.

Vea también