Compartilhar via


Gerir o acesso aos recursos com as APIs de gestão de direitos

Microsoft Entra gestão de direitos permite-lhe gerir o acesso a recursos em escala para funcionários e convidados na sua organização. Este tutorial mostra como utilizar as APIs de gestão de direitos para criar um pacote de recursos que os utilizadores internos podem pedir. As APIs oferecem uma alternativa programática à criação de aplicações personalizadas no centro de administração do Microsoft Entra.

Neste tutorial, você aprende a:

  • Crie um pacote de acesso que os utilizadores possam pedir por si próprios.
  • Atribua um recurso de grupo ao pacote de acesso.
  • Pedir um pacote de acesso.

Pré-requisitos

Para concluir este tutorial, precisa de:

  • Um inquilino Microsoft Entra com uma licença Microsoft Entra ID P2 ou Microsoft Entra ID Governance.
  • Uma conta de convidado de teste e um grupo de segurança de teste no seu inquilino. O grupo de segurança é o recurso neste tutorial. Certifique-se de que é o proprietário do grupo ou que lhe foi atribuída a função de Administrador de Grupos. Neste tutorial:
    • O utilizador tem o ID 007d1c7e-7fa8-4e33-b678-5e437acdcddc e tem o nome Requestor1.
    • O grupo tem o ID f4892fac-e81c-4712-bdf2-a4450008a4b0 com a descrição "Grupo de marketing" e o nome a apresentar "Recursos de marketing".
  • Um cliente de API, como o Graph Explorer sessão iniciada com uma conta que tenha, pelo menos, a função de Administrador de Governação de Identidades
  • Permissões delegadas:
    • User.ReadWrite.All
    • Group.ReadWrite.All
    • EntitlementManagement.ReadWrite.All
  • [Opcional] Uma janela anónima do browser. Inicie sessão mais tarde neste tutorial.

Observação

Alguns passos neste tutorial utilizam o beta ponto final.

Passo 1: adicionar recursos a um catálogo e criar um pacote de acesso

Um pacote de acesso é um conjunto de recursos de que uma equipa ou projeto precisa e é regido com políticas. Os pacotes de acesso são definidos em contentores denominados catálogos. Os catálogos podem referenciar recursos, como grupos, aplicações e sites, que são utilizados no pacote de acesso. A gestão de direitos inclui um catálogo predefinido General .

Neste passo, vai criar um pacote de acesso de Campanha de Marketing no catálogo Geral.

Passo 1.1: Obter o identificador do catálogo Geral

Obtenha o ID do catálogo Geral .

Solicitação

GET https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs?$filter=(displayName eq 'General')

Resposta

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/catalogs",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityGovernance/entitlementManagement/catalogs?$select=catalogType,createdDateTime",
    "value": [
        {
            "id": "cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
            "displayName": "General",
            "description": "Built-in catalog.",
            "catalogType": "serviceDefault",
            "state": "published",
            "isExternallyVisible": true,
            "createdDateTime": "2023-04-13T14:43:19.44Z",
            "modifiedDateTime": "2023-04-13T14:43:19.44Z"
        }
    ]
}

Passo 1.2: Adicionar o grupo ao catálogo

Neste passo, vai adicionar o grupo "Recursos de marketing" ao catálogo Geral como um recurso.

Se não for o proprietário do grupo que referencia no originId ou não lhe for atribuída a função Administrador de Grupos, este pedido falha com um 403 Forbidden código de erro.

Solicitação

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

{
  "catalogId":"cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
  "requestType": "AdminAdd",
  "justification": "",
  "accessPackageResource": {
    "resourceType": "AadGroup",
    "originId": "e93e24d1-2b65-4a6c-a1dd-654a12225487",
    "originSystem": "AadGroup"
  }
}

Resposta

Nesta resposta, o ID representa o ID do grupo como um recurso no catálogo Geral. Este ID não é o ID de grupo. Grave este ID.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/resourceRequests/$entity",
    "id": "44e521e0-fb6b-4d5e-a282-e7e68dc59493",
    "requestType": "AdminAdd",
    "requestState": "Delivered",
    "requestStatus": "Fulfilled",
    "catalogId": "cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
    "executeImmediately": false,
    "justification": "",
    "expirationDateTime": null
}

Passo 1.3: Obter recursos do catálogo

Neste passo, irá obter os detalhes dos recursos que correspondem ao ID do recurso de grupo que adicionou ao catálogo Geral.

Solicitação

GET https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs/cec5d6ab-c75d-47c0-9c1c-92e89f66e384/resources?$filter=originId eq 'e93e24d1-2b65-4a6c-a1dd-654a12225487'

Resposta

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

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/catalogs('cec5d6ab-c75d-47c0-9c1c-92e89f66e384')/resources",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityGovernance/entitlementManagement/catalogs('<guid>')/resources?$select=attributes,createdDateTime",
  "value": [
    {
      "id": "4a1e21c5-8a76-4578-acb1-641160e076e8",
      "displayName": "Marketing resources",
      "description": "Marketing group",
      "originId": "e93e24d1-2b65-4a6c-a1dd-654a12225487",
      "originSystem": "AadGroup",
      "createdDateTime": "2024-03-26T09:44:50.527Z",
      "attributes": []
    }
  ]
}

Passo 1.4: Obter funções de recursos

O pacote de acesso atribui utilizadores às funções de um recurso. A função típica de um grupo é a função Member . Outros recursos, como sites e aplicações do SharePoint Online, podem ter muitas funções. A função típica de um grupo utilizado num pacote de acesso é a função Member . Precisa da função de membro para adicionar uma função de recurso ao pacote de acesso mais à frente neste tutorial.

No pedido, utilize o ID do catálogo e o ID do recurso de grupo no catálogo que registou para obter o originId da função de recurso Membro. Registe o valor da propriedade originId a utilizar mais à frente neste tutorial.

Solicitação

GET https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/catalogs/ede67938-cda7-4127-a9ca-7c7bf86a19b7/resourceRoles?$filter=(originSystem eq 'AadGroup' and displayName eq 'Member' and resource/id eq '274a1e21c5-8a76-4578-acb1-641160e076e')&$expand=resource

Resposta

Uma vez que foi filtrado pelo originId, o nome a apresentar e o ID do recurso, se for bem-sucedido, é devolvido um único valor, que representa a função Membro desse grupo. Se não forem devolvidas funções, marcar os valores de ID do catálogo e o recurso do pacote de acesso.

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/catalogs('ede67938-cda7-4127-a9ca-7c7bf86a19b7')/resourceRoles(resource())",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityGovernance/entitlementManagement/catalogs('<guid>')/resourceRoles?$select=description,displayName",
    "value": [
        {
            "id": "00000000-0000-0000-0000-000000000000",
            "displayName": "Member",
            "description": null,
            "originSystem": "AadGroup",
            "originId": "Member_e93e24d1-2b65-4a6c-a1dd-654a12225487",
            "resource@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/catalogs('ede67938-cda7-4127-a9ca-7c7bf86a19b7')/resourceRoles('00000000-0000-0000-0000-000000000000')/resource/$entity",
            "resource": {
                "id": "ec09e90e-e021-4599-a8c3-bce77c2b2000",
                "displayName": "Marketing resources",
                "description": "Marketing group",
                "originId": "e93e24d1-2b65-4a6c-a1dd-654a12225487",
                "originSystem": "AadGroup",
                "createdDateTime": "2023-04-13T14:43:21.43Z",
                "attributes": []
            }
        }
    ]
}

Passo 1.5: Criar o pacote de acesso

Tem agora um catálogo com um recurso de grupo e pretende utilizar a função de recurso do membro do grupo no pacote de acesso. O próximo passo é criar o pacote de acesso. Depois de ter o pacote de acesso, pode adicionar a função de recurso ao mesmo e criar uma política para saber como os utilizadores podem pedir acesso a essa função de recurso. Utilize o ID do catálogo que registou anteriormente para criar o pacote de acesso. Registe o ID do pacote de acesso para utilizar mais adiante neste tutorial.

Solicitação

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

{
  "catalogId": "cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
  "displayName": "Marketing Campaign",
  "description": "Access to resources for the campaign"
}

Resposta

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/accessPackages/$entity",
    "id": "88203d16-0e31-41d4-87b2-dd402f1435e9",
    "catalogId": "cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
    "displayName": "Marketing Campaign",
    "description": "Access to resources for the campaign",
    "isHidden": false,
    "isRoleScopesVisible": false,
    "createdBy": "admin@contoso.com",
    "createdDateTime": "2024-03-26T17:36:45.411033Z",
    "modifiedBy": "admin@contoso.com",
    "modifiedDateTime": "2024-03-26T17:36:45.411033Z"
}

Passo 1.6: Adicionar uma função de recurso ao pacote de acesso

Solicitação

POST https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/88203d16-0e31-41d4-87b2-dd402f1435e9/accessPackageResourceRoleScopes
Content-type: application/json

{
  "role": {
    "originId":"Member_f4892fac-e81c-4712-bdf2-a4450008a4b0",
    "displayName":"Member",
    "originSystem":"AadGroup",
    "resource": {
      "id":"4a1e21c5-8a76-4578-acb1-641160e076e8",
      "resourceType":"Security Group",
      "originId":"f4892fac-e81c-4712-bdf2-a4450008a4b0",
      "originSystem":"AadGroup"
    }
  },
  "scope": {
    "originId":"f4892fac-e81c-4712-bdf2-a4450008a4b0",
    "originSystem":"AadGroup"
  }
}

Resposta

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/entitlementManagement/accessPackages('88203d16-0e31-41d4-87b2-dd402f1435e9')/accessPackageResourceRoleScopes/$entity",
  "id": "e081321b-2802-4834-a6ca-6f598ce3cdf7_6dbd2209-9d14-4c76-b92b-fcb00e835fe1",
  "createdDateTime": "2024-03-26T19:56:00.6320729Z",
}

O pacote de acesso tem agora uma função de recurso, que é a associação a grupos. A função é atribuída a qualquer utilizador que tenha o pacote de acesso.

Passo 1.7: Criar uma política de pacote de acesso

Agora que criou o pacote de acesso e adicionou recursos e funções, pode decidir quem pode aceder ao mesmo ao criar uma política de pacote de acesso. Neste tutorial, vai ativar a conta Requestor1 que criou para pedir acesso aos recursos no pacote de acesso. Para esta tarefa, precisa destes valores:

  • ID do pacote de acesso para o valor da propriedade accessPackageId
  • ID da conta de utilizador Requestor1 para o valor da propriedade ID em allowedRequestors

O valor da propriedade durationInDays permite que a conta Requestor1 aceda aos recursos no pacote de acesso durante um máximo de 30 dias. Registe o valor da propriedade ID que é devolvida para utilizar mais tarde neste tutorial.

Solicitação

POST https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignmentPolicies
Content-type: application/json

{
  "accessPackageId": "88203d16-0e31-41d4-87b2-dd402f1435e9",
  "displayName": "Specific users",
  "description": "Specific users can request assignment",
  "accessReviewSettings": null,
  "durationInDays": 30,
  "requestorSettings": {
    "scopeType": "SpecificDirectorySubjects",
    "acceptRequests": true,
    "allowedRequestors": [
       {
         "@odata.type": "#microsoft.graph.singleUser",
         "isBackup": false,
         "id": "007d1c7e-7fa8-4e33-b678-5e437acdcddc",
         "description": "Requestor1"
       }
    ]
  },
  "requestApprovalSettings": {
    "isApprovalRequired": false,
    "isApprovalRequiredForExtension": false,
    "isRequestorJustificationRequired": false,
    "approvalMode": "NoApproval",
    "approvalStages": []
  }
}

Resposta

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#accessPackageAssignmentPolicies/$entity",
  "id": "db440482-1210-4a60-9b55-3ac7a72f63ba",
  "accessPackageId": "88203d16-0e31-41d4-87b2-dd402f1435e9",
  "displayName": "Specific users",
  "description": "Specific users can request assignment",
  "canExtend": false,
  "durationInDays": 30,
  "expirationDateTime": null,
  "createdBy": "admin@contoso.com",
  "createdDateTime": "2020-06-29T19:47:44.7399675Z",
  "modifiedBy": "admin@contoso.com",
  "modifiedDateTime": "2020-06-29T19:47:44.7555489Z",
  "accessReviewSettings": null,
  "requestorSettings": {
    "scopeType": "SpecificDirectorySubjects",
    "acceptRequests": true,
    "allowedRequestors": [
      {
        "@odata.type": "#microsoft.graph.singleUser",
        "isBackup": false,
        "id": "007d1c7e-7fa8-4e33-b678-5e437acdcddc",
        "description": "Requestor1"
      }
    ]
  },
  "requestApprovalSettings": {
    "isApprovalRequired": false,
    "isApprovalRequiredForExtension": false,
    "isRequestorJustificationRequired": false,
    "approvalMode": "NoApproval",
    "approvalStages": []
  }
}

Passo 2: Pedir acesso

Neste passo, a conta de utilizador Requestor1 pede acesso aos recursos no pacote de acesso.

Para pedir acesso ao pacote de acesso, tem de fornecer estes valores:

  • ID da conta de utilizador Requestor1 que criou para o valor da propriedade targetId
  • ID da política de atribuição para o valor da propriedade assignmentPolicyId
  • ID do pacote de acesso para o valor da propriedade accessPackageId

Na resposta, o status é Accepted e o estado é Submitted. Registe o valor da propriedade ID que é devolvida a marcar a status do pedido mais tarde.

Abra uma nova sessão anónima do browser e inicie sessão como Requestor1 para não interromper a sua sessão de administrador atual. Em alternativa, termine sessão no Graph Explorer e inicie sessão como Requestor1.

Solicitação

POST https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignmentRequests
Content-type: application/json

{
  "requestType": "UserAdd",
  "accessPackageAssignment":{
     "targetId":"007d1c7e-7fa8-4e33-b678-5e437acdcddc",
     "assignmentPolicyId":"db440482-1210-4a60-9b55-3ac7a72f63ba",
     "accessPackageId":"88203d16-0e31-41d4-87b2-dd402f1435e9"
  }
}

Resposta

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#accessPackageAssignmentRequests/$entity",
    "createdDateTime": null,
    "completedDate": null,
    "id": "a6bb6942-3ae1-4259-9908-0133aaee9377",
    "requestType": "UserAdd",
    "requestState": "Submitted",
    "requestStatus": "Accepted",
    "isValidationOnly": false,
    "expirationDateTime": null,
    "justification": null
}

Termine sessão e feche a sessão anónima.

Passo 3: validar que o acesso está atribuído

Neste passo, confirme que a conta de utilizador Requestor1 tem o pacote de acesso atribuído e é membro do grupo de recursos de Marketing . Regresse à sessão de administrador no Graph Explorer.

Passo 3.1: Obter a status do pedido

Utilize o valor da propriedade ID do pedido para obter o respetivo status atual. Na resposta, verá a status alterada para Concluída e o estado alterado para Entregue.

Solicitação

GET https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignmentRequests/a6bb6942-3ae1-4259-9908-0133aaee9377

Resposta

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#accessPackageAssignmentRequests/$entity",
  "createdDateTime": "2020-06-29T20:24:24.683Z",
  "completedDate": "2020-06-29T20:24:47.937Z",
  "id": "a6bb6942-3ae1-4259-9908-0133aaee9377",
  "requestType": "UserAdd",
  "requestState": "Delivered",
  "requestStatus": "FulfilledNotificationTriggered",
  "isValidationOnly": false,
  "expirationDateTime": null,
  "justification": null
}

Passo 3.2: Obter atribuições de pacotes de acesso

Utilize o ID da política de pacote de acesso que criou para ver se os recursos estão atribuídos à conta de utilizador Requestor1 .

Solicitação

GET https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignments?$filter=accessPackageAssignmentPolicy/Id eq 'db440482-1210-4a60-9b55-3ac7a72f63ba'&$expand=target,accessPackageAssignmentResourceRoles

Resposta

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#accessPackageAssignments",
  "value": [
    {
      "id": "a6bb6942-3ae1-4259-9908-0133aaee9377",
      "catalogId": "cec5d6ab-c75d-47c0-9c1c-92e89f66e384",
      "accessPackageId": "88203d16-0e31-41d4-87b2-dd402f1435e9",
      "assignmentPolicyId": "db440482-1210-4a60-9b55-3ac7a72f63ba",
      "targetId": "2bc42425-6dc5-4f2a-9ebb-7a7464481eb0",
      "assignmentStatus": "Delivered",
      "assignmentState": "Delivered",
      "isExtended": false,
      "expiredDateTime": null,
      "target": {
         "id": "8586ddc8-0ff7-4c24-9c79-f192bc3566e3",
         "objectId": "2bc42425-6dc5-4f2a-9ebb-7a7464481eb0"
      },
      "accessPackageAssignmentResourceRoles": [
         {
            "id": "bdb7e0a0-a927-42ab-bf30-c5b5533dc54a",
            "originSystem": "AadGroup",
            "status": "Fulfilled"
         }
      ]
    }
  ]
}

Passo 3.3: Obter os membros do grupo

Depois de o pedido ser concedido, utilize o ID que registou para o grupo de recursos de Marketing para ver se a conta de utilizador Requestor1 é adicionada ao mesmo.

Solicitação

GET https://graph.microsoft.com/v1.0/groups/f4892fac-e81c-4712-bdf2-a4450008a4b0/members

Resposta:

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "value": [
    {
      "@odata.type": "#microsoft.graph.user",
      "id": "007d1c7e-7fa8-4e33-b678-5e437acdcddc",
      "deletedDateTime": null,
      "accountEnabled": true,
      "ageGroup": null,
      "businessPhones": [],
      "city": null,
      "createdDateTime": "2020-06-23T18:43:24Z",
      "creationType": null,
      "companyName": null,
      "consentProvidedForMinor": null,
      "country": null,
      "department": null,
      "displayName": "Requestor1",
      "employeeId": null,
      "faxNumber": null,
      "givenName": null,
      "imAddresses": [],
      "infoCatalogs": [],
      "isResourceAccount": null,
      "jobTitle": null,
      "legalAgeGroupClassification": null,
      "mail": null,
      "mailNickname": "Requestor1"
    }
  ]
}

Passo 4: Limpar recursos

Remover uma atribuição de pacote de acesso

Tem de remover todas as atribuições ao pacote de acesso antes de poder eliminá-lo. Utilize o ID do pedido de atribuição que registou anteriormente para o eliminar.

Remova quaisquer atribuições ao pacote de acesso antes de o eliminar. Utilize o ID do pedido de atribuição que registou anteriormente para o eliminar.

POST https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignmentRequests
Content-type: application/json

{
  "requestType": "AdminRemove",
  "accessPackageAssignment":{
     "id": "a6bb6942-3ae1-4259-9908-0133aaee9377"
  }
}

Resposta

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#accessPackageAssignmentRequests/$entity",
    "createdDateTime": null,
    "completedDate": null,
    "id": "78eaee8c-e6cf-48c9-8f99-aae44c35e379",
    "requestType": "AdminRemove",
    "requestState": "Submitted",
    "requestStatus": "Accepted",
    "isValidationOnly": false,
    "expirationDateTime": null,
    "justification": null
}

Eliminar a política de atribuição de pacotes de acesso

Utilize o ID da política de atribuição que gravou anteriormente para eliminá-la. Certifique-se de que todas as tarefas são removidas primeiro. A solicitação retorna o código de resposta 204 No Content.

DELETE https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackageAssignmentPolicies/6c1f65ec-8c25-4a45-83c2-a1de2a6d0e9f

Eliminar o pacote de acesso

Utilize o ID do pacote de acesso que registou anteriormente para o eliminar. A solicitação retorna o código de resposta 204 No Content.

Solicitação

DELETE https://graph.microsoft.com/beta/identityGovernance/entitlementManagement/accessPackages/cf54c6ca-d717-49bc-babe-d140d035dfdd

Conclusão

Neste tutorial, um recurso de campanha de marketing é definido como associação num único grupo que pode aceder a outros recursos. Também pode ser uma coleção de grupos, aplicações ou sites do SharePoint Online.