Vérifier l’accès aux rôles privilégiés à l’aide de l’API révisions d’accès dans Microsoft Graph

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. L’une des ressources les plus sensibles d’un organization est les rôles privilégiés. Avec un rôle privilégié, un principal peut effectuer des opérations d’administration. Selon le rôle privilégié, certaines opérations peuvent avoir un effet plus important sur la posture de sécurité du organization. À l’aide de l’API de révisions d’accès, les organisations peuvent régulièrement attester des principaux qui ont accès aux rôles privilégiés conformément à la stratégie organization.

Contoso Limited est un fournisseur de services en croissance qui a délégué différents privilèges d’administrateur Azure AD aux utilisateurs, groupes et principaux de service dans le organization. L’entreprise doit s’assurer que seuls les ayants droit ont accès aux rôles privilégiés. Les auditeurs système doivent également auditer l’historique des révisions d’accès pour rendre compte de l’efficacité des contrôles internes de Contoso.

Dans ce tutoriel, vous allez utiliser l’API des révisions d’accès pour passer en revue régulièrement les utilisateurs et les groupes ayant accès à des rôles privilégiés dans Contoso. Cet accès inclut les rôles actifs et éligibles.

Conditions préalables

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

  • Un locataire Azure AD opérationnel avec une licence Azure AD Premium P2 ou EMS E5 activée.
  • Connectez-vous à un client API tel que Graph Explorer, Postman ou créez votre propre application cliente pour appeler Microsoft Graph. Pour appeler les API Microsoft Graph dans ce tutoriel, vous devez utiliser un compte avec le rôle Administrateur de rôle privilégié.
  • Principaux avec des attributions actives ou éligibles à un rôle privilégié. Ces affectations seront l’étendue de votre révision d’accès. Pour attribuer des rôles privilégiés, consultez Tutoriel : Utiliser l’API Privileged Identity Management (PIM) pour attribuer des rôles Azure AD.
    • Dans ce tutoriel, le rôle Administrateur d’utilisateurs est la ressource en cours de révision. Le rôle a été attribué à un groupe de sécurité et à un utilisateur individuel.
  • Accordez-vous l’autorisation déléguée suivante : AccessReview.ReadWrite.All.

Remarque

Les objets de réponse présentés dans ce didacticiel peuvent être raccourcis pour plus de lisibilité.

Étape 1 : Créer une révision d’accès des attributions de rôles privilégiés

Dans ce tutoriel, nous créons une révision d’accès périodique des affectations actives et éligibles au rôle Administrateur d’utilisateurs. Un accessReviewScheduleDefinition peut être utilisé pour définir la révision d’accès de plusieurs types de principaux (utilisateurs et groupes ou principaux de service) à un seul rôle privilégié. Pour passer en revue l’accès à plusieurs rôles privilégiés, créez des objets accessReviewScheduleDefinition distincts.

La définition de planification de révision d’accès suivante contient les paramètres suivants :

  • L’étendue de la révision est principals (propriété principalScopes ) avec accès à la ressource spécifiée dans la propriété resourceScopes . Dans ce cas, les principaux sont à la fois des groupes et des utilisateurs, tandis que la ressource est le rôle Administrateur d’utilisateurs.
  • Les attributions actives et éligibles à la ressource de rôle Administrateur d’utilisateurs sont en cours de révision.
  • Un utilisateur individuel est sélectionné en tant que réviseur. Dans cet exemple, vous êtes le réviseur.
  • L’approbateur doit fournir une justification avant d’approuver l’accès au rôle privilégié.
  • La décision par défaut est None lorsque les réviseurs ne répondent pas à la demande de révision d’accès avant l’expiration du instance.
  • autoApplyDecisionsEnabled n’est pas défini et la valeur par défaut est false. Dans ce cas, une fois la révision terminée, les décisions ne sont pas automatiquement appliquées. Vous devez donc les appliquer manuellement.
  • La révision se répète tous les trois mois sur une période de trois jours et ne se termine pas.

Demande

Dans la requête suivante, remplacez par f674a1c9-4a40-439c-bfa3-4b61a9f29d85 la valeur de votre ID utilisateur. RoleDefinitionId fe930be7-5e62-47db-91af-98c3a49a38b1 est l’identificateur de modèle global pour le rôle Administrateur d’utilisateurs dans Azure AD.

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions
Content-type: application/json

{
    "displayName": "Review access of users and groups to privileged roles",
    "descriptionForAdmins": "Review access of users and groups to privileged roles",
    "scope": {
        "@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
        "principalScopes": [
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/users",
                "queryType": "MicrosoftGraph"
            },
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/groups",
                "queryType": "MicrosoftGraph"
            }
        ],
        "resourceScopes": [
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/roleManagement/directory/roleDefinitions/fe930be7-5e62-47db-91af-98c3a49a38b1",
                "queryType": "MicrosoftGraph"
            }
        ]
    },
    "reviewers": [
        {
            "query": "/users/f674a1c9-4a40-439c-bfa3-4b61a9f29d85",
            "queryType": "MicrosoftGraph"
        }
    ],
    "settings": {
        "mailNotificationsEnabled": true,
        "reminderNotificationsEnabled": true,
        "justificationRequiredOnApproval": true,
        "defaultDecisionEnabled": false,
        "defaultDecision": "None",
        "instanceDurationInDays": 3,
        "recommendationsEnabled": false,
        "recurrence": {
            "pattern": {
                "type": "absoluteMonthly",
                "interval": 3
            },
            "range": {
                "type": "noEnd",
                "startDate": "2022-03-02"
            }
        }
    }
}

Réponse

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions/$entity",
    "id": "57457d7c-af59-470c-ae71-aa72c657fe0f",
    "displayName": "Review access of users and groups to privileged roles",
    "createdDateTime": null,
    "lastModifiedDateTime": null,
    "status": "NotStarted",
    "descriptionForAdmins": "Review access of users and groups to privileged roles",
    "descriptionForReviewers": null,
    "instanceEnumerationScope": null,
    "createdBy": {
        "id": "f674a1c9-4a40-439c-bfa3-4b61a9f29d85",
        "displayName": "Alex Wilber",
        "type": null,
        "userPrincipalName": "AlexW@Contoso.com"
    },
    "scope": {
        "@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
        "principalScopes": [
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/users",
                "queryType": "MicrosoftGraph",
                "queryRoot": null
            },
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/groups",
                "queryType": "MicrosoftGraph",
                "queryRoot": null
            }
        ],
        "resourceScopes": [
            {
                "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                "query": "/roleManagement/directory/roleDefinitions/roleManagement/directory/roleDefinitions/fe930be7-5e62-47db-91af-98c3a49a38b1",
                "queryType": "MicrosoftGraph",
                "queryRoot": null
            }
        ]
    },
    "reviewers": [
        {
            "query": "/users/f674a1c9-4a40-439c-bfa3-4b61a9f29d85",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ],
    "fallbackReviewers": [],
    "settings": {
        "mailNotificationsEnabled": true,
        "reminderNotificationsEnabled": true,
        "justificationRequiredOnApproval": true,
        "defaultDecisionEnabled": false,
        "defaultDecision": "None",
        "instanceDurationInDays": 3,
        "autoApplyDecisionsEnabled": false,
        "recommendationsEnabled": false,
        "recurrence": {
            "pattern": {
                "type": "absoluteMonthly",
                "interval": 3,
                "month": 0,
                "dayOfMonth": 0,
                "daysOfWeek": [],
                "firstDayOfWeek": "sunday",
                "index": "first"
            },
            "range": {
                "type": "noEnd",
                "numberOfOccurrences": 0,
                "recurrenceTimeZone": null,
                "startDate": "2022-03-02",
                "endDate": null
            }
        },
        "applyActions": []
    },
    "additionalNotificationRecipients": []
}

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

Chaque instance de révision d’accès représente chaque périodicité avec chaque ressource unique en cours d’examen. À l’étape 1, seule la ressource de rôle Administrateur d’utilisateurs a été définie dans l’étendue. Étant donné que vous avez défini une révision d’accès périodique, l’ID du instance est différent de l’ID de la définition de planification à l’étape 1.

Demande

Dans la requête suivante, remplacez par 57457d7c-af59-470c-ae71-aa72c657fe0f la valeur de la révision d’accès que vous avez créée à l’étape 1.

GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances

Réponse

Dans cette réponse, l’objet instance affiche la date de fin trois jours après la date de début ; cette période a été définie à l’étape 1 de la propriété instanceDurationInDays de l’objet accessReviewScheduleDefinition. Une seule instance est retournée représentant la première récurrence d’une seule ressource en cours d’examen.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('57457d7c-af59-470c-ae71-aa72c657fe0f')/instances",
    "@odata.count": 1,
    "value": [
        {
            "id": "ad0dd148-5d16-4cfd-86e9-ab502f819aaf",
            "startDateTime": "2022-03-02T15:31:14.607Z",
            "endDateTime": "2022-03-05T15:31:14.607Z",
            "status": "InProgress",
            "scope": {
                "@odata.type": "#microsoft.graph.principalResourceMembershipsScope",
                "principalScopes": [
                    {
                        "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                        "query": "/v1.0/users",
                        "queryType": "MicrosoftGraph",
                        "queryRoot": null
                    },
                    {
                        "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                        "query": "/v1.0/groups",
                        "queryType": "MicrosoftGraph",
                        "queryRoot": null
                    }
                ],
                "resourceScopes": [
                    {
                        "@odata.type": "#microsoft.graph.accessReviewQueryScope",
                        "query": "/beta/roleManagement/directory/roleDefinitions/fe930be7-5e62-47db-91af-98c3a49a38b1",
                        "queryType": "MicrosoftGraph",
                        "queryRoot": null
                    }
                ]
            },
            "reviewers": [
                {
                    "query": "/v1.0/users/f674a1c9-4a40-439c-bfa3-4b61a9f29d85",
                    "queryType": "MicrosoftGraph",
                    "queryRoot": null
                }
            ],
            "fallbackReviewers": []
        }
    ]
}

Le status de cette instance de révision d’accès est InProgress. Une InProgress status signifie que le instance de révision est ouvert aux réviseurs pour soumettre des décisions, et que la période de cette instance de révision d’accès n’a pas expiré. Vous avez également reçu une notification par e-mail de Microsoft Azure vous demandant d’effectuer la révision d’accès.

Étape 3 : Récupérer les décisions de révision d’accès avant d’enregistrer les décisions

Avant de pouvoir publier des décisions, examinons d’abord les éléments en attente de votre décision.

Demande

Dans la requête suivante, remplacez les valeurs suivantes :

  • 57457d7c-af59-470c-ae71-aa72c657fe0f par la valeur de la révision d’accès que vous avez créée à l’étape 1.
  • ad0dd148-5d16-4cfd-86e9-ab502f819aafavec la valeur de la révision d’accès instance pour laquelle vous souhaitez récupérer des décisions.
GET https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/ad0dd148-5d16-4cfd-86e9-ab502f819aaf/decisions

Réponse

La réponse suivante montre deux éléments de décision correspondant chacun à une décision par accès d’un principal à la ressource.

  • La propriété principal indique que deux principaux ont accès au rôle Administrateur d’utilisateurs : un groupe nommé It Helpdesk (Utilisateur) et un utilisateur nommé Aline Dupuy.
  • La NotReviewed valeur de la propriété de décision indique que les réviseurs n’ont pas examiné et publié leurs décisions.
  • Aucune recommandation n’est disponible, car les recommandations n’ont pas été activées dans accessReviewScheduleDefinition à l’étape 1.
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/definitions('57457d7c-af59-470c-ae71-aa72c657fe0f')/instances('ad0dd148-5d16-4cfd-86e9-ab502f819aaf')/decisions",
    "@odata.count": 2,
    "value": [
        {
            "id": "4d79fbf6-36e6-430b-ba0a-2a727a480303",
            "accessReviewId": "ad0dd148-5d16-4cfd-86e9-ab502f819aaf",
            "reviewedDateTime": null,
            "decision": "NotReviewed",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "NoInfoAvailable",
            "principalLink": "https://graph.microsoft.com/v1.0/users/339143ab-541e-484f-b017-e1707e962d34",
            "resourceLink": "https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/fe930be7-5e62-47db-91af-98c3a49a38b1",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "resource": {
                "id": "fe930be7-5e62-47db-91af-98c3a49a38b1",
                "displayName": "User Administrator",
                "type": "directoryRole"
            },
            "principal": {
                "@odata.type": "#microsoft.graph.userIdentity",
                "id": "339143ab-541e-484f-b017-e1707e962d34",
                "displayName": "Aline Dupuy",
                "type": "user",
                "userPrincipalName": "AlineD@Contoso.com",
                "lastUserSignInDateTime": ""
            }
        },
        {
            "id": "62fd1c5b-04b8-4703-9fd7-dce6232c3775",
            "accessReviewId": "ad0dd148-5d16-4cfd-86e9-ab502f819aaf",
            "reviewedDateTime": null,
            "decision": "NotReviewed",
            "justification": "",
            "appliedDateTime": null,
            "applyResult": "New",
            "recommendation": "NoInfoAvailable",
            "principalLink": "https://graph.microsoft.com/v1.0/groups/b5260fca-6d64-4d5a-92df-0c482d40bc4d",
            "resourceLink": "https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/fe930be7-5e62-47db-91af-98c3a49a38b1",
            "reviewedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "appliedBy": {
                "id": "00000000-0000-0000-0000-000000000000",
                "displayName": "",
                "type": null,
                "userPrincipalName": ""
            },
            "resource": {
                "id": "fe930be7-5e62-47db-91af-98c3a49a38b1",
                "displayName": "User Administrator",
                "type": "directoryRole"
            },
            "principal": {
                "id": "b5260fca-6d64-4d5a-92df-0c482d40bc4d",
                "displayName": "IT Helpdesk (User)",
                "type": "group"
            }
        }
    ]
}

En tant que réviseur, vous pouvez maintenant soumettre vos décisions pour le instance de révision d’accès.

Étape 4 : Enregistrer les décisions

Vous allez maintenant enregistrer les décisions relatives à la révision d’accès.

La stratégie d’entreprise exige que l’accès aux rôles privilégiés soit accordé uniquement aux groupes et non aux utilisateurs individuels. Conformément à la stratégie de l’entreprise, vous refuserez l’accès à Aline Dupuy lors de l’approbation de l’accès pour le groupe.

Dans les requêtes suivantes, remplacez les valeurs suivantes :

  • 57457d7c-af59-470c-ae71-aa72c657fe0f avec la valeur de la révision d’accès que vous avez créée à l’étape 1
  • ad0dd148-5d16-4cfd-86e9-ab502f819aafavec la valeur de la révision d’accès instance vous souhaitez récupérer les décisions pour
  • 4d79fbf6-36e6-430b-ba0a-2a727a480303avec la valeur de la révision d’accès instance étendue à l’accès d’Aline
  • 62fd1c5b-04b8-4703-9fd7-dce6232c3775avec la valeur de la révision d’accès instance étendue à l’accès du groupe support technique informatique

Approuver l’attribution de rôle du groupe de sécurité

Demande

Dans la demande suivante, vous approuvez l’accès pour le groupe support technique informatique.

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/ad0dd148-5d16-4cfd-86e9-ab502f819aaf/decisions/62fd1c5b-04b8-4703-9fd7-dce6232c3775
Content-type: application/json

{
    "decision": "Approve",
    "justification": "The IT Helpdesk requires continued access to the User Administrator role to manage user account support requests, lifecycle, and access to resources"
}

Réponse

HTTP/1.1 204 No Content

Refuser à l’utilisateur individuel son attribution de rôle

Demande

Dans la requête suivante, vous refusez l’accès à Aline Dupuy.

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/ad0dd148-5d16-4cfd-86e9-ab502f819aaf/decisions/4d79fbf6-36e6-430b-ba0a-2a727a480303
Content-type: application/json

{
    "decision": "Deny",
    "justification": "Aline Dupuy should join an allowed group to maintain access to the User Administrator role. For more details, refer to the company policy '#132487: Privileged roles'"
}

Réponse

HTTP/1.1 204 No Content

Lorsque vous récupérez les décisions de révision d’accès (répétez l’étape 3), elles ont les paramètres suivants :

  • La décision de révision d’accès pour le groupe du support technique informatique est Approve alors que pour Aline est Deny.
  • L’objet reviewedBy contient vos détails en tant que réviseur.
  • Le résultat applyResult New signifie que les décisions n’ont pas été appliquées.

Bien que vous ayez enregistré toutes les décisions en attente pour cette instance, les décisions n’ont pas été appliquées aux objets de ressource et de principal. Par exemple, Aline a toujours accès au rôle privilégié. Vous pouvez vérifier cette affectation en exécutant la requête https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=roleDefinitionId eq 'fe930be7-5e62-47db-91af-98c3a49a38b1'suivante. Ce comportement est dû au fait que autoApplyDecisionsEnabled a été défini sur false, que vous n’avez pas arrêté la révision et que la période instance n’est pas terminée.

Dans ce tutoriel, vous n’arrêterez pas l’instance manuellement, mais vous allez le laisser se terminer automatiquement, puis appliquer les décisions.

Conseil

  1. Tant que la status de l’instance de révision d’accès n’est pas marquée comme Completed, vous pouvez toujours modifier les décisions. Réexécutez l’étape 4 pour appliquer des décisions différentes pour les principaux.
  2. Vous pouvez également arrêter manuellement la révision d’accès instance afin d’accélérer votre progression vers l’étape 5.

Étape 5 : Appliquer les décisions de révision d’accès

En tant qu’administrateur, une fois que la status de la instance de révision d’accès est définie sur Completed, vous pouvez appliquer les décisions.

Demande

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/ad0dd148-5d16-4cfd-86e9-ab502f819aaf/applyDecisions

Réponse

HTTP/1.1 204 No Content

Aline a maintenant perdu l’accès au rôle Administrateur d’utilisateurs, tandis que le groupe support technique informatique a conservé son accès. Vous pouvez vérifier cet état d’attribution de rôle en exécutant la requête GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=roleDefinitionId eq 'fe930be7-5e62-47db-91af-98c3a49a38b1'suivante .

Les révisions d’accès appliquent automatiquement les décisions lorsque le instance expire, ou vous pouvez appliquer les décisions manuellement en exécutant la requête suivante : POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/ad0dd148-5d16-4cfd-86e9-ab502f819aaf/applydecisions.

Une fois les décisions appliquées, le status de la instance de révision d’accès est Applied. En outre, étant donné que nous avons créé une révision d’accès périodique à l’étape 1, une nouvelle instance sera démarrée. Sa date de début sera de trois mois à compter du moment où la période d’examen en cours sera marquée comme étant terminée.

Étape 6 : Récupérer les définitions d’historique de révision d’accès

Les auditeurs de Contoso souhaitent également passer en revue l’historique des révisions d’accès pour le dernier trimestre. Dans cet exemple, vous allez générer un rapport d’historique de révision d’accès pour tous les objets accessReviewScheduleDefinition limités aux attributions de rôles d’annuaire (roleAssignmentScheduleInstances). Dans cette requête, la propriété decisions est vide et inclut donc par défaut toutes les décisions dans le rapport d’historique.

Tout d’abord, vous allez définir l’étendue du rapport d’historique. Ensuite, vous générez un URI de téléchargement que les auditeurs utiliseront pour télécharger le rapport. L’URI de téléchargement est actif pendant seulement 24 heures. Ainsi, après l’expiration, vous pouvez régénérer un autre URI de téléchargement à partir du rapport d’historique précédemment défini.

Définir l’étendue des données d’historique de révision d’accès

Dans la requête suivante, un objet de décisions vide signifie que toutes les décisions liées à l’étendue de la révision d’accès seront incluses dans le rapport d’historique.

Demande

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/historyDefinitions

{
    "displayName": "Last quarter's access reviews for privileged roles - User Administrator",
    "decisions": [],
    "reviewHistoryPeriodStartDateTime": "2022-03-01T00:00:00Z",
    "reviewHistoryPeriodEndDateTime": "9999-12-31T00:00:00Z",
    "scopes": [
        {
            "@odata.type": "#microsoft.graph.accessReviewQueryScope",
            "queryType": "MicrosoftGraph",
            "query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'roleAssignmentScheduleInstances')"
        }
    ]
}

Réponse

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/historyDefinitions/$entity",
    "id": "17ecffa9-e60d-4b6d-9313-78b50860bbcd",
    "displayName": "Last quarter's access reviews for privileged roles - User Administrator",
    "reviewHistoryPeriodStartDateTime": "2022-03-01T00:00:00Z",
    "reviewHistoryPeriodEndDateTime": "9999-12-31T00:00:00Z",
    "decisions": [
        "approve",
        "deny",
        "dontKnow",
        "notReviewed",
        "notNotified"
    ],
    "status": "requested",
    "createdDateTime": "2022-09-29T12:22:57.9953455Z",
    "createdBy": {
        "id": "10a08e2e-3ea2-4ce0-80cb-d5fdd4b05ea6",
        "displayName": "MOD Administrator",
        "type": null,
        "userPrincipalName": "admin@M365x43961174.onmicrosoft.com"
    },
    "scopes": [
        {
            "@odata.type": "#microsoft.graph.accessReviewQueryScope",
            "query": "/identityGovernance/accessReviews/definitions?$filter=contains(scope/query, 'roleAssignmentScheduleInstances')",
            "queryType": "MicrosoftGraph",
            "queryRoot": null
        }
    ]
}

Récupérer les instances de l’historique de révision d’accès

Demande

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/historyDefinitions/983db508-b77b-427d-ab90-a4041efa658d/instances

Réponse

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/accessReviews/historyDefinitions('17ecffa9-e60d-4b6d-9313-78b50860bbcd')/instances",
    "value": [
        {
            "id": "17ecffa9-e60d-4b6d-9313-78b50860bbcd",
            "reviewHistoryPeriodStartDateTime": "2022-03-01T00:00:00Z",
            "reviewHistoryPeriodEndDateTime": "9999-12-31T00:00:00Z",
            "status": "inprogress",
            "runDateTime": "2022-09-29T12:22:57.9953455Z",
            "fulfilledDateTime": null,
            "downloadUri": null
        }
    ]
}

Demande

POST https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/historyDefinitions/57457d7c-af59-470c-ae71-aa72c657fe0f/instances/983db508-b77b-427d-ab90-a4041efa658d/generateDownloadUri()

Réponse

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#accessReviewHistoryInstance",
    "@odata.type": "#microsoft.graph.accessReviewHistoryInstance",
    "id": "17ecffa9-e60d-4b6d-9313-78b50860bbcd",
    "reviewHistoryPeriodStartDateTime": "2022-03-01T00:00:00Z",
    "reviewHistoryPeriodEndDateTime": "9999-12-31T00:00:00Z",
    "status": "done",
    "runDateTime": "2022-09-29T12:22:57.9953455Z",
    "fulfilledDateTime": "2022-09-29T12:24:08.1146032Z",
    "downloadUri": "https://ermconsolreportweu.blob.core.windows.net/erm-reports/Last quarter's access reviews for privileged roles - User Administrator-17ecffa9-e60d-4b6d-9313-78b50860bbcd.csv?skoid=4ad0868b-7b78-4869-abb7-8f29151d8428&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skt=2022-09-29T12:24:56Z&ske=2022-09-29T12:26:56Z&sks=b&skv=2020-04-08&sv=2020-04-08&st=2022-09-29T12:24:56Z&se=2022-09-30T12:24:56Z&sr=b&sp=r&sig=ivZ9B%2BQragSwvOd8J2g8ny9n4sqdzww9uVkl96uo1k4%3D"
}

La propriété downloadUri contient un lien pour télécharger le rapport d’historique dans un format de fichier Excel. Ce lien n’est actif que pendant 24 heures.

Étape 7 : nettoyer les ressources

Supprimez l’objet accessReviewScheduleDefinition que vous avez créé pour ce didacticiel. É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 entraîne la suppression des paramètres, des instances et des décisions.

Demande

DELETE https://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/57457d7c-af59-470c-ae71-aa72c657fe0f

Réponse

HTTP/1.1 204 No Content

Conclusion

Vous avez appris à examiner l’accès aux rôles privilégiés dans Azure AD et à générer un rapport d’historique de révision d’accès pouvant être audité pour la création de rapports de conformité. Votre organization peut utiliser l’API de révisions d’accès pour régir en permanence l’accès privilégié à ses ressources, y compris les rôles Azure AD et les rôles de ressources Azure. Outre les utilisateurs et les groupes, vous pouvez également examiner l’accès par les applications et les principaux de service aux rôles privilégiés.

Voir aussi