Examinar o acesso a grupos de segurança usando APIs de revisões de acesso

As APIs de revisões de acesso no Microsoft Graph permitem que as organizações auditem e atestem o acesso que as identidades (também chamadas de entidades de segurança) têm aos recursos. Você pode usar grupos de segurança para gerenciar com eficiência o acesso aos recursos em sua organização, como um site do SharePoint com guias estratégicos de marketing. Ao usar a API de revisões de acesso, as organizações podem atestar periodicamente as entidades de segurança que têm acesso a esses grupos e recursos.

Neste tutorial, você aprende a:

  • Crie uma revisão de acesso recorrente de associações a grupos de segurança.
  • Auto-atesta a necessidade de manter o acesso a um grupo.

Pré-requisitos

Para concluir este tutorial, você precisa destes recursos e privilégios:

  • Um locatário do Microsoft Entra em funcionamento com uma licença de Governança do Microsoft Entra ID P2 ou do Microsoft Entra ID Governance habilitada.
  • Dois convidados de teste e um grupo de segurança de teste no seu locatário. Os convidados devem ser membros do grupo e o grupo deve ter pelo menos um proprietário.
  • Entre em um cliente de API, como o Graph Explorer, para chamar o Microsoft Graph com uma conta que tenha pelo menos a função de Administrador de Governança de Identidade.
    • [Opcional] Abra uma nova janela anônima, anônima ou InPrivate do navegador . Você entrará mais tarde neste tutorial.
  • Conceda a si mesmo as seguintes permissões delegadas: AccessReview.ReadWrite.All.

Observação

A revisão de grupos regidos pelo PIM atribui apenas proprietários ativos como revisores. Os proprietários qualificados não estão incluídos. Pelo menos um revisor de fallback é necessário para revisão de acesso de grupos regidos pelo PIM. Se não houver proprietários ativos quando a revisão começar, os revisores de fallback serão atribuídos à revisão.

Etapa 1: Criar uma revisão de acesso para o grupo de segurança

Solicitação

Nesta chamada, substitua estes valores:

  • eb75ccd2-59ef-48b7-8f76-cc3f33f899f4 pela ID do grupo de segurança.
  • Valor de startDate com a data de hoje e valor de endDate com uma data de cinco dias a partir da data de início.

A revisão de acesso usa estas configurações:

  • É uma revisão de autoatestado, conforme inferido quando você não especifica um valor para a propriedade revisores . Portanto, cada membro do grupo autoatesta sua necessidade de manter o acesso ao grupo.
  • O escopo da revisão são membros diretos e transitivos do grupo.
  • O revisor deve fornecer uma justificativa de por que precisa manter o acesso ao grupo.
  • A decisão padrão é Deny quando os revisores não respondem à solicitação de revisão de acesso antes que a instância expire. A Deny decisão remove os membros do grupo.
  • É uma revisão de acesso única que termina após cinco dias. Portanto, depois que o acesso é concedido, o usuário não precisa se autoatestar novamente dentro do período de revisão de acesso.
  • As entidades de segurança definidas no escopo da revisão recebem notificações por email e lembretes solicitando que atestem a necessidade de manter o acesso.
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"
            }
        }
    }
}

Resposta

O status da revisão de acesso é NotStarted. Recupere a revisão de acesso (GEThttps://graph.microsoft.com/v1.0/identityGovernance/accessReviews/definitions/2d56c364-0695-4ec6-8b92-4c1db7c80f1b) para monitorar o status. Quando seu status é InProgress, as instâncias são criadas para a revisão de acesso e as decisões podem ser postadas. Você também pode recuperar a revisão de acesso para ver suas configurações completas.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Etapa 2: Listar instâncias da revisão de acesso

Depois que o status da revisão de acesso for marcado como InProgress, execute a consulta a seguir para listar todas as instâncias da definição de revisão de acesso. Como você criou uma revisão de acesso única na etapa anterior, a solicitação retorna apenas uma instância com uma ID como a ID da definição de agendamento.

Solicitação

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

Resposta

Nessa resposta, o status da instância é InProgress porque startDateTime é passado e endDateTime está no futuro. Se startDateTime estiver no futuro, o status será NotStarted. Por outro lado, se endDateTime estiver no passado, o status será Completed.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Etapa 3: verifique quem foi contatado para a análise

Você pode confirmar se todos os membros do grupo de segurança foram contatados para publicar suas decisões de revisão para esta instância da revisão de acesso.

Solicitação

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

Resposta

A resposta a seguir mostra que os dois membros do grupo de segurança foram notificados de sua revisão pendente.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Etapa 4: Obter decisões

Você está interessado nas decisões tomadas para a instância da revisão de acesso.

Solicitação

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

Resposta

A resposta a seguir mostra as decisões tomadas na instância da revisão. Como o grupo de segurança tem dois membros, dois itens de decisão são esperados.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Na chamada, a propriedade de decisão tem o valor de NotReviewed porque os membros do grupo não concluíram o autoatestado. A próxima etapa mostra como cada membro pode autoatestar sua necessidade de revisão de acesso.

Etapa 5: autoatestar uma decisão de acesso pendente

Você configurou a revisão de acesso como autoatestado. Essa configuração exige que ambos os membros do grupo comprovem a necessidade de manter o acesso ao grupo.

Observação

Conclua esta etapa como um dos dois membros do grupo de segurança.

Nesta etapa, você lista suas revisões de acesso pendentes e conclui o processo de autoatestação. Você pode concluir esta etapa de duas maneiras: usando a API ou o portal My Access. O outro revisor não se autoatesta, portanto, as decisões padrão são aplicadas à sua revisão de acesso.

Inicie uma nova sessão anônima, anônima ou de navegação InPrivate do navegador e entre como um dos dois membros do grupo de segurança. Ao fazer isso, você não interrompe sua sessão de administrador atual. Como alternativa, você pode interromper sua sessão de administrador atual saindo do Graph Explorer e fazendo logon novamente como um dos dois membros do grupo.

Inicie uma nova sessão de navegação anônima, anônima ou InPrivate e entre como um dos dois membros do grupo de segurança. Dessa forma, você não interrompe sua sessão de administrador atual. Como alternativa, você pode sair do Graph Explorer e fazer logon novamente como um dos dois membros do grupo.

Método 1: usar as APIs de revisões de acesso para auto-revisar o acesso pendente

Listar seus itens de decisão de revisões de acesso

Solicitação
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')
Resposta

A partir da resposta, você (Adele Vance) tem uma revisão de acesso pendente (a decisão é NotReviewed) para autoatestar. As propriedades principal e de recurso indicam a entidade de segurança à qual a decisão se aplica e o recurso ao qual o acesso está em análise. Nesse caso, Adele Vance e o grupo de segurança, respectivamente.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

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

Registrar uma decisão

Para concluir a revisão de acesso, Adele Vance confirma a necessidade de manter o acesso ao grupo de segurança.

A solicitação retorna o código de resposta 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."
}

Verifique as decisões

Para verificar as decisões que você registrou para sua revisão de acesso, liste seus itens de decisão de revisão de acesso. Embora o período de revisão de acesso não tenha expirado nem as decisões aplicadas, o applyResult é marcado como New e você pode alterar a decisão.

Agora você pode sair e sair da sessão anônima do navegador.

Método 2: Usar o portal Meu Acesso

Como alternativa, você pode marcar suas instâncias de revisão de acesso pendentes por meio do portal Meu Acesso.

  • Listar as revisões de acesso pendentes. O usuário pode seguir uma das duas maneiras de chegar lá:

    • Opção 1: Selecione o botão Revisar acesso na notificação por email recebida na caixa de entrada de email. A notificação por email é semelhante à captura de tela a seguir. Esse botão é um link direto para a revisão de acesso pendente.

    Email de notificação para revisar seu acesso.

    • Opção 2: acesse o portal do My Access . Selecione o menu Revisões de acesso e selecione a guia Grupos e Aplicativos .
  • Na lista de revisões de acesso, selecione a revisão de acesso para a qual você deseja postar a decisão. Selecione Sim para postar a decisão de que você ainda precisa de acesso a Segurança do edifício. Insira um motivo e selecione Enviar.

    Atesta automaticamente a necessidade de manter o acesso a um recurso.

Agora você pode sair e sair da sessão anônima do navegador.

Etapa 6: confirmar as decisões e o status da revisão de acesso

De volta à sessão principal do navegador em que você ainda está conectado com privilégios de administrador, repita a Etapa 4 para ver que a propriedade de decisão de Adele Vance agora Approveé . Quando a revisão de acesso termina ou expira, a decisão padrão é Deny registrada para Alex Wilber. As decisões são aplicadas automaticamente porque autoApplyDecisionsEnabled foi definido como true e o período da instância de revisão de acesso terminou. Adele mantém o acesso ao grupo de segurança, enquanto Alex é automaticamente removido do grupo.

Parabéns! Você criou uma revisão de acesso e atestou sua necessidade de manter o acesso. Você só se autoatestou uma vez e mantém seu acesso até que ele seja removido por meio de uma Deny decisão de outra instância de revisão de acesso ou outro processo interno.

Etapa 7: Limpar recursos

Nessa chamada, você exclui a definição de revisão de acesso. Como a definição de agendamento de revisão de acesso é o blueprint para a revisão de acesso, a exclusão da definição remove as configurações, instâncias e decisões relacionadas.

A solicitação retorna o código de resposta 204 No Content.

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

Conclusão

Você criou uma revisão de acesso na qual as entidades de segurança autoatestavam a necessidade de manter o acesso a um recurso, nesse caso, o grupo de segurança Edifício .

Este tutorial demonstrou um dos cenários de automação para as APIs de revisões de acesso do Microsoft Entra. As APIs dão suporte a diferentes cenários por meio de uma combinação de recursos, entidades de segurança e revisores para atender às suas necessidades de atestado de acesso. Para obter mais informações, consulte a API de revisões de acesso.