Passer en revue l’accès aux groupes de sécurité à l’aide des API de révision d’accès

L’API révisions d’accès dans Microsoft Graph permet aux organisations d’auditer et d’attester de l’accès que les identités (également appelées principaux) sont affectées aux ressources dans le organization. Vous pouvez utiliser des groupes de sécurité pour gérer efficacement l’accès aux ressources de votre organization. Par exemple, l’accès à un site SharePoint qui contient des playbooks marketing. Et à l’aide de l’API de révisions d’accès, les organisations peuvent régulièrement attester des principaux qui ont accès à ces groupes et, par extension, des ressources dans le organization.

Dans ce tutoriel, vous apprenez à effectuer les opérations suivantes :

  • Créez une révision d’accès périodique des appartenances aux groupes de sécurité.
  • Attestez vous-même de la nécessité de conserver l’accès à un groupe.

Configuration requise

Pour suivre ce didacticiel, vous avez besoin des ressources et privilèges suivants :

  • Un locataire Microsoft Entra opérationnel avec une licence Microsoft Entra ID P2 ou Gouvernance Microsoft Entra ID activée.
  • Deux invités de test et un groupe de sécurité de test dans votre locataire. Les invités doivent être membres du groupe et le groupe doit avoir au moins un propriétaire.
  • Connectez-vous à un client API tel que Graph Explorer d’appeler Microsoft Graph avec un compte qui a au moins le rôle Administrateur de gouvernance des identités.
    • [Facultatif] Ouvrez une nouvelle fenêtre de navigateur incognito, anonyme ou InPrivate . Vous vous connectez plus loin dans ce tutoriel.
  • Accordez-vous les autorisations déléguées suivantes : AccessReview.ReadWrite.All.

Remarque

Examen des groupes régis par PIM assigner uniquement les propriétaires actifs en tant que réviseurs. Les propriétaires éligibles ne sont pas inclus. Au moins un réviseur de secours est requis pour la révision d’accès des groupes régis par PIM. S’il n’y a aucun propriétaire actif au début de la révision, les réviseurs de secours se voient attribuer la révision.

Étape 1 : Créer une révision d’accès pour le groupe de sécurité

Demande

Dans cet appel, remplacez les valeurs suivantes :

  • eb75ccd2-59ef-48b7-8f76-cc3f33f899f4 par l’ID du groupe de sécurité.
  • Valeur de startDate avec la date du jour et valeur de endDate avec une date cinq jours à partir de la date de début.

La révision d’accès a les paramètres suivants :

  • Il s’agit d’une révision auto-attestée comme déduit lorsque vous ne spécifiez pas de valeur pour la propriété réviseurs . Par conséquent, chaque membre du groupe témoigne lui-même de son besoin de conserver l’accès au groupe.
  • L’étendue de la révision est à la fois les membres directs et transitifs du groupe.
  • Le réviseur doit fournir une justification de la raison pour laquelle il doit conserver l’accès au groupe.
  • La décision par défaut est Deny lorsque les réviseurs ne répondent pas à la demande de révision d’accès avant l’expiration du instance. La Deny décision supprime les membres du groupe du groupe.
  • Il s’agit d’une révision d’accès unique qui se termine au bout de cinq jours. Par conséquent, une fois l’accès accordé, l’utilisateur n’a pas besoin de s’auto-attester à nouveau pendant la période de révision d’accès.
  • Les principaux qui sont définis dans l’étendue de la révision reçoivent des Notifications par e-mail et des rappels les invitant à attester eux-mêmes de leur besoin de maintenir l’accès.
POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions
Content-type: application/json

{
    "displayName": "One-time self-review for members of Building security",
    "descriptionForAdmins": "One-time self-review for members of Building security",
    "descriptionForReviewers": "One-time self-review for members of Building security",
    "scope": {
        "query": "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers",
        "queryType": "MicrosoftGraph"
    },
    "instanceEnumerationScope": {
        "query": "/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
        "queryType": "MicrosoftGraph"
    },
    "settings": {
        "mailNotificationsEnabled": true,
        "reminderNotificationsEnabled": true,
        "justificationRequiredOnApproval": true,
        "defaultDecisionEnabled": true,
        "defaultDecision": "Deny",
        "instanceDurationInDays": 5,
        "autoApplyDecisionsEnabled": true,
        "recommendationsEnabled": true,
        "recurrence": {
            "pattern": null,
            "range": {
                "type": "numbered",
                "numberOfOccurrences": 0,
                "recurrenceTimeZone": null,
                "startDate": "2024-03-21",
                "endDate": "2024-03-30"
            }
        }
    }
}

Réponse

La status de la révision d’accès est NotStarted. Vous pouvez récupérer la révision d’accès (GEThttps://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b) pour surveiller la status et, lorsque son status est InProgress, des instances ont été créées pour la révision d’accès et les décisions peuvent être publiées. Vous pouvez également récupérer la révision d’accès pour afficher ses paramètres complets.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions/$entity",
    "id": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
    "displayName": "One-time self-review for members of Building security",
    "createdDateTime": null,
    "lastModifiedDateTime": null,
    "status": "NotStarted",
    "descriptionForAdmins": "One-time self-review for members of Building security",
    "descriptionForReviewers": "One-time self-review for members of Building security",
    "scope": {},
    "instanceEnumerationScope": {},
    "reviewers": [],
    "fallbackReviewers": [],
    "settings": {
        "mailNotificationsEnabled": true,
        "reminderNotificationsEnabled": true,
        "justificationRequiredOnApproval": true,
        "defaultDecisionEnabled": true,
        "defaultDecision": "Deny",
        "instanceDurationInDays": 5,
        "autoApplyDecisionsEnabled": true,
        "recommendationsEnabled": true,
        "recommendationLookBackDuration": null,
        "decisionHistoriesForReviewersEnabled": false,
        "recurrence": {
            "pattern": null,
            "range": {
                "type": "numbered",
                "numberOfOccurrences": 0,
                "recurrenceTimeZone": null,
                "startDate": "2024-03-21",
                "endDate": "2024-03-30"
            }
        },
        "applyActions": [],
        "recommendationInsightSettings": []
    },
    "stageSettings": [],
    "additionalNotificationRecipients": []
}

Étape 2 : Répertorier les instances de la révision d’accès

Une fois que le status de la révision d’accès est marqué comme InProgress, exécutez la requête suivante pour répertorier toutes les instances de la définition de révision d’accès. Étant donné que vous avez créé une révision d’accès unique à l’étape précédente, la demande ne retourne qu’un seul instance avec un ID comme l’ID de la définition de planification.

Demande

GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances

Réponse

Dans cette réponse, la status de l’instance est InProgress que startDateTime est passé et endDateTime est dans le futur. Si startDateTime est à l’avenir, le status est NotStarted. En revanche, si endDateTime est dans le passé, le status est Completed.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances",
    "value": [
        {
            "id": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
            "startDateTime": "2024-03-21T17:35:25.24Z",
            "endDateTime": "2024-03-30T08:00:00Z",
            "status": "InProgress",
            "scope": {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4/transitiveMembers/microsoft.graph.user",
                "queryType": "MicrosoftGraph",
                "queryRoot": null
            },
            "reviewers": [],
            "fallbackReviewers": []
        }
    ]
}

Étape 3 : Vérifier qui a été contacté pour la révision

Vous pouvez confirmer que tous les membres du groupe de sécurité ont été contactés pour publier leurs décisions de révision pour cette instance de la révision d’accès.

Demande

GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/contactedReviewers

Réponse

La réponse suivante indique que les deux membres du groupe de sécurité ont été informés de leur révision en attente.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/contactedReviewers",
    "@odata.count": 2,
    "value": [
        {
            "id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
            "displayName": "Adele Vance",
            "userPrincipalName": "AdeleV@Contoso.com",
            "createdDateTime": "2024-03-21T17:35:34.4092545Z"
        },
        {
            "id": "bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
            "displayName": "Alex Wilber",
            "userPrincipalName": "AlexW@Contoso.com",
            "createdDateTime": "2024-03-21T17:35:34.4092545Z"
        }
    ]
}

Étape 4 : Obtenir des décisions

Vous êtes intéressé par les décisions prises pour la instance de la révision d’accès.

Demande

GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions

Réponse

La réponse suivante présente les décisions prises sur la instance de l’examen. Étant donné que le groupe de sécurité a deux membres, deux éléments de décision sont attendus.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/instances('2d56c364-0695-4ec6-8b92-4c1db7c80f1b')/decisions",
    "@odata.count": 2,
    "value": [
        {
            "id": "4db68765-472d-4aa2-847a-433ea94bcfaf",
            "accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
            "reviewedDateTime": null,
            "decision": "NotReviewed",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "Approve",
            "principalLink": "https://graph.microsoft.com/v1.0/users/bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
            "resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "resource": {
                "id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
                "displayName": "Building security",
                "type": "group"
            },
            "principal": {
                "@odata.type": "#microsoft.graph.userIdentity",
                "id": "bf59c5ba-5304-4c9b-9192-e5a4cb8444e7",
                "displayName": "Alex Wilber",
                "type": "user",
                "userPrincipalName": "AlexW@Contoso.com",
                "lastUserSignInDateTime": "2/11/2022 5:31:37 PM +00:00"
            }
        },
        {
            "id": "c7de8fba-4d6a-4fab-a659-62ff0c02643d",
            "accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
            "reviewedDateTime": null,
            "decision": "NotReviewed",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "Approve",
            "principalLink": "https://graph.microsoft.com/v1.0/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
            "resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "resource": {
                "id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
                "displayName": "Building security",
                "type": "group"
            },
            "principal": {
                "@odata.type": "#microsoft.graph.userIdentity",
                "id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
                "displayName": "Adele Vance",
                "type": "user",
                "userPrincipalName": "AdeleV@Contoso.com",
                "lastUserSignInDateTime": "2/11/2022 4:58:13 PM +00:00"
            }
        }
    ]
}

À partir de l’appel, la propriété de décision a la valeur de NotReviewed , car les membres du groupe n’ont pas terminé leur auto-attestation. L’étape suivante montre comment chaque membre peut s’auto-attester de son besoin de révision d’accès.

Étape 5 : Auto-attester d’une décision d’accès en attente

Vous avez configuré la révision d’accès comme auto-attestant. Cette configuration nécessite que les deux membres du groupe témoignent eux-mêmes de leur besoin de conserver leur accès au groupe.

Remarque

Effectuez cette étape en tant que l’un des deux membres du groupe de sécurité.

Dans cette étape, vous répertoriez vos révisions d’accès en attente, puis effectuez le processus d’auto-attestation. Vous pouvez effectuer cette étape de l’une des deux manières suivantes : à l’aide de l’API ou du portail Mon accès. L’autre réviseur ne s’auto-atteste pas et, à la place, les décisions par défaut sont appliquées à sa révision d’accès.

Démarrez une nouvelle session de navigateur de navigation incognito, anonyme ou InPrivate , puis connectez-vous en tant que l’un des deux membres du groupe de sécurité. Ce faisant, vous n’interrompez pas votre session administrateur actuelle. Vous pouvez également interrompre votre session d’administrateur actuelle en vous déconnectez de l’Explorer Graph et en vous reconnectant en tant que l’un des deux membres du groupe.

Méthode 1 : Utiliser l’API de révisions d’accès pour auto-réviser l’accès en attente

Répertorier les éléments de décision des révisions d’accès

Demande
GET https://graph.microsoft.com/v1.0/identitygovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions/filterByCurrentUser(on='reviewer')
Réponse

À partir de la réponse, vous (Adele Vance) avez une révision d’accès en attente (la décision est NotReviewed) à attester automatiquement. Les propriétés du principal et de la ressource indiquent le principal auquel la décision s’applique et la ressource à laquelle l’accès est en cours d’examen. Dans ce cas, Adele Vance et le groupe de sécurité respectivement.

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(accessReviewInstanceDecisionItem)",
    "@odata.count": 1,
    "value": [
        {
            "@odata.type": "#microsoft.graph.accessReviewInstanceDecisionItem",
            "id": "c7de8fba-4d6a-4fab-a659-62ff0c02643d",
            "accessReviewId": "2d56c364-0695-4ec6-8b92-4c1db7c80f1b",
            "reviewedDateTime": null,
            "decision": "NotReviewed",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "Approve",
            "principalLink": "https://graph.microsoft.com/v1.0/users/3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
            "resourceLink": "https://graph.microsoft.com/v1.0/groups/eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "resource": {
                "id": "eb75ccd2-59ef-48b7-8f76-cc3f33f899f4",
                "displayName": "Building security",
                "type": "group"
            },
            "principal": {
                "@odata.type": "#microsoft.graph.userIdentity",
                "id": "3b8ceebc-49e6-4e0c-9e14-c906374a7ef6",
                "displayName": "Adele Vance",
                "type": "user",
                "userPrincipalName": "AdeleV@Contoso.com",
                "lastUserSignInDateTime": "2/15/2022 9:35:23 AM +00:00"
            }
        }
    ]
}

Enregistrer une décision

Pour terminer la révision d’accès, Adele Vance confirme la nécessité de conserver l’accès au groupe de sécurité.

La requête retourne un code de réponse 204 No Content .

PATCH https://graph.microsoft.com/v1.0/identitygovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/instances/2d56c364-0695-4ec6-8b92-4c1db7c80f1b/decisions/c7de8fba-4d6a-4fab-a659-62ff0c02643d

{
    "decision": "Approve",
    "justification": "As the assistant security manager, I still need access to the building security group."
}

Vérifier les décisions

Pour vérifier les décisions que vous avez enregistrées pour votre révision d’accès, répertoriez vos éléments de décision de révision d’accès. Bien que la période de révision d’accès n’ait pas expiré ni les décisions appliquées, le résultat applyResult est marqué comme New et vous êtes autorisé à modifier la décision.

Vous pouvez maintenant vous déconnecter et quitter la session de navigateur incognito.

Méthode 2 : Utiliser le portail Mon accès

Vous pouvez également case activée vos instances de révision d’accès en attente via le portail Mon accès.

  • Répertoriez les révisions d’accès en attente. L’utilisateur peut suivre l’une des deux façons d’y accéder :

    • Option 1 : Sélectionnez le bouton Vérifier l’accès dans la notification par e-mail qu’ils ont reçue dans leur boîte de réception. La notification par e-mail est similaire à la capture d’écran suivante. Ce bouton est un lien direct vers la révision d’accès en attente.

    Email notification pour vérifier votre accès.

    • Option 2 : accédez au portail Mon accès . Sélectionnez le menu Révisions d’accès , puis sélectionnez l’onglet Groupes et applications .
  • Dans la liste des révisions d’accès, sélectionnez la révision d’accès pour laquelle vous souhaitez publier la décision. Sélectionnez Oui pour publier la décision que vous avez toujours besoin d’accéder à Sécurité du bâtiment. Entrez une raison, puis sélectionnez Envoyer.

    Attestez vous-même de la nécessité de conserver l’accès à une ressource.

Vous pouvez maintenant vous déconnecter et quitter la session de navigateur incognito.

Étape 6 : Confirmer les décisions et les status de la révision d’accès

De retour dans la session de navigateur main où vous êtes toujours connecté avec des privilèges d’administrateur, répétez l’étape 4 pour voir que la propriété de décision pour Adele Vance est maintenant Approve. Lorsque la révision d’accès se termine ou expire, la décision par défaut de Deny est enregistrée pour Alex Wilber. Les décisions sont ensuite appliquées automatiquement, car autoApplyDecisionsEnabled a été défini true sur et la période de révision d’accès instance terminée. Adele conserve l’accès au groupe de sécurité tandis qu’Alex est automatiquement supprimé du groupe.

Félicitations ! Vous avez créé une révision d’accès et vous vous êtes auto-attesté de votre besoin de maintenir l’accès. Vous ne vous êtes auto-attesté qu’une seule fois et conservez votre accès jusqu’à ce qu’il soit supprimé par une Deny décision d’un autre instance de révision d’accès ou par le biais d’un autre processus interne.

Étape 7 : nettoyer les ressources

Dans cet appel, vous supprimez la définition de révision d’accès. Étant donné que la définition de la planification de révision d’accès est le blueprint de la révision d’accès, la suppression de la définition supprime les paramètres, instances et décisions associés.

La requête retourne un code de réponse 204 No Content .

DELETE https://graph.microsoft.com/beta/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b

Conclusion

Vous avez créé une révision d’accès dans laquelle les principaux ont auto-attesté de leur besoin de conserver leur accès à une ressource, dans ce cas, le groupe de sécurité Building .

Ce tutoriel a montré l’un des scénarios de l’API Microsoft Entra révisions d’accès. L’API révisions d’accès prend en charge différents scénarios par le biais d’une combinaison de ressources, de principaux et de réviseurs en fonction de vos besoins en matière d’attestation d’accès. Pour plus d’informations, consultez l’API révisions d’accès.