Administración del acceso a los recursos mediante las API de administración de derechos

Microsoft Entra administración de derechos le permite administrar el acceso a los recursos que los empleados necesitan para ser productivos. En este tutorial, usará las API de administración de derechos para crear un paquete de recursos que los usuarios internos se soliciten a sí mismos. Las API son la alternativa mediante programación para crear aplicaciones personalizadas en lugar de usar la Centro de administración Microsoft Entra.

En este tutorial, aprenderá a:

  • Cree un paquete de acceso que los usuarios puedan solicitar de autoservicio.
  • Asigne un recurso de grupo al paquete de acceso.
  • Solicitud de un paquete de acceso

Requisitos previos

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

  • Un inquilino de Microsoft Entra en funcionamiento con una licencia Microsoft Entra ID P2 o Gobierno de Microsoft Entra ID habilitada. Cualquiera de estas licencias es suficiente para las funcionalidades de este tutorial.
  • Una cuenta de invitado de prueba y un grupo de seguridad de prueba en el inquilino. El grupo de seguridad es el recurso de este tutorial. Asegúrese de ser el propietario del grupo o de asignar el rol Administrador de grupos . En este tutorial:
    • El usuario tiene el identificador 007d1c7e-7fa8-4e33-b678-5e437acdcddc y se denomina Requestor1.
      • [Opcional] Abra una nueva ventana del explorador anónimo. Inicie sesión más adelante en este tutorial.
    • El grupo tiene el identificador f4892fac-e81c-4712-bdf2-a4450008a4b0 con la descripción "Grupo de marketing" y el nombre para mostrar "Recursos de marketing".
  • Inicie sesión en un cliente de API, como Graph Explorer , con una cuenta que tenga al menos el rol Administrador de gobernanza de identidades .
  • Concédete los siguientes permisos delegados: User.ReadWrite.All, Group.ReadWrite.Ally EntitlementManagement.ReadWrite.All.

Nota:

En algunos pasos de este tutorial se usa el punto de beta conexión.

Paso 1: Agregar recursos a un catálogo y crear un paquete de acceso

Un paquete de acceso es un conjunto de recursos que un equipo o proyecto necesita y se rige por directivas. Los paquetes de acceso se definen en contenedores denominados catálogos. Los catálogos pueden hacer referencia a recursos, como grupos, aplicaciones y sitios, que se usan en el paquete de acceso. La administración de derechos incluye un catálogo predeterminado General .

En este paso, creará un paquete de acceso de campaña de marketing en el catálogo General.

Paso 1.1: Obtener el identificador del catálogo General

En primer lugar, obtenga el identificador del catálogo al que desea agregar recursos.

Solicitud

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

Respuesta

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

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

Paso 1.2: Agregar el grupo al catálogo

En este tutorial, el recurso es un grupo de seguridad que tiene el identificador e93e24d1-2b65-4a6c-a1dd-654a12225487.

Para agregar el grupo que creó al catálogo, proporcione los siguientes valores de propiedad:

  • catalogId : el identificador del catálogo que se usa
  • originId : el identificador del grupo que ha creado.

Si no es el propietario del grupo al que hace referencia en originId o no tiene asignado el rol Administrador de grupos , se produce un error en esta solicitud con un código de 403 Forbidden error.

Solicitud

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

Respuesta

En esta respuesta, el identificador representa el identificador del grupo como un recurso del catálogo General. Este identificador no es el identificador de grupo. Registre este identificador.

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

{
    "@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
}

Paso 1.3: Obtener recursos de catálogo

En este paso, recuperará los detalles de los recursos que coinciden con el identificador del recurso de grupo que agregó al catálogo General.

Solicitud

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

Respuesta

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

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

Paso 1.4: Obtener roles de recursos

El paquete de acceso asigna usuarios a los roles de un recurso. El rol típico de un grupo es el Member rol . Otros recursos, como sitios y aplicaciones de SharePoint Online, pueden tener muchos roles. El rol típico de un grupo usado en un paquete de acceso es el Member rol . Necesita el rol miembro para agregar un rol de recurso al paquete de acceso más adelante en este tutorial.

En la solicitud, use el identificador del catálogo y el identificador del recurso de grupo en el catálogo que registró para obtener el originId del rol de recurso Miembro. Registre el valor de la propiedad originId que se usará más adelante en este tutorial.

Solicitud

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

Respuesta

Dado que filtró por el originId, el nombre para mostrar y el identificador de recurso, si se ejecuta correctamente, se devuelve un valor único, que representa el rol Miembro de ese grupo. Si no se devuelve ningún rol, compruebe los valores de identificador del catálogo y el recurso del paquete de acceso.

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

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

Paso 1.5: Creación del paquete de acceso

Ahora tiene un catálogo con un recurso de grupo y quiere usar el rol de recurso de miembro del grupo en el paquete de acceso. El siguiente paso es crear el paquete de acceso. Después de tener el paquete de acceso, puede agregarle el rol de recurso y crear una directiva para cómo los usuarios pueden solicitar acceso a ese rol de recurso. Use el identificador del catálogo que registró anteriormente para crear el paquete de acceso. Registre el identificador del paquete de acceso para usarlo más adelante en este tutorial.

Solicitud

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

Respuesta

{
    "@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"
}

Paso 1.6: Agregar un rol de recurso al paquete de acceso

Solicitud

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

Respuesta

{
  "@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",
}

El paquete de acceso ahora tiene un rol de recurso, que es la pertenencia a grupos. El rol se asigna a cualquier usuario que tenga el paquete de acceso.

Paso 1.7: Creación de una directiva de paquete de acceso

Ahora que ha creado el paquete de acceso y ha agregado recursos y roles, puede decidir quién puede acceder a él mediante la creación de una directiva de paquete de acceso. En este tutorial, habilitará la cuenta de Requestor1 que creó para solicitar acceso a los recursos del paquete de acceso. Para esta tarea, necesita estos valores:

  • id del paquete de acceso para el valor de la propiedad accessPackageId
  • id de la cuenta de usuario requestor1 para el valor de la propiedad id en allowedRequestors

El valor de la propiedad durationInDays permite a la cuenta requestor1 acceder a los recursos del paquete de acceso durante un máximo de 30 días. Registre el valor de la propiedad id que se devuelve para usarla más adelante en este tutorial.

Solicitud

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

Respuesta

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

Paso 2: Solicitar acceso

En este paso, la cuenta de usuario requestor1 solicita acceso a los recursos del paquete de acceso.

Para solicitar acceso a los recursos del paquete de acceso, debe proporcionar estos valores:

  • id. de la cuenta de usuario requestor1 que creó para el valor de la propiedad targetId
  • id. de la directiva de asignación para el valor de la propiedad assignmentPolicyId
  • identificador del paquete de acceso para el valor de la propiedad accessPackageId

En la respuesta, el estado es Accepted y un estado es Submitted. Registre el valor de la propiedad id que se devuelve para obtener el estado de la solicitud más adelante.

Inicie una nueva sesión de explorador anónimo e inicie sesión en Requestor1. Al hacerlo, no interrumpe la sesión de administrador actual. Como alternativa, puede interrumpir la sesión de administrador actual si inicia sesión en el Explorador de Graph y vuelve a iniciar sesión como Solicitante1.

Solicitud

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

Respuesta

{
  "@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
}

Ahora puede cerrar la sesión y salir de la sesión anónima.

Paso 3: Validar que se ha asignado el acceso

En este paso, confirmará que a la cuenta de usuario de Requestor1 se le asignó el paquete de acceso y que ahora es miembro del grupo de recursos de marketing . Vuelva a la sesión de administrador en el Explorador de Graph.

Paso 3.1: Obtener el estado de la solicitud

Use el valor de la propiedad id de la solicitud para obtener el estado actual de la solicitud. En la respuesta, puede ver que el estado ha cambiado a Completado y el estado ha cambiado a Entregado.

Solicitud

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

Respuesta

{
  "@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
}

Paso 3.2: Obtención de asignaciones de paquetes de acceso

También puede usar el identificador de la directiva de paquete de acceso que creó para ver que los recursos se han asignado a la cuenta de usuario requestor1 .

Solicitud

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

Respuesta

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

Paso 3.3: Obtener los miembros del grupo

Una vez concedida la solicitud, puede usar el identificador que registró para el grupo recursos de marketing para ver que se ha agregado la cuenta de usuario requestor1 .

Solicitud

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

Respuesta:

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

Paso 4: Limpieza de recursos

En este paso, quitará los cambios realizados y eliminará el paquete de acceso campaña de marketing .

Eliminación de una asignación de paquete de acceso

Debe quitar las asignaciones al paquete de acceso para poder eliminarlo. Use el identificador de la solicitud de asignación que registró anteriormente para eliminarla.

Solicitud

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

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

Respuesta

{
    "@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
}

Eliminación de la directiva de asignación de paquetes de acceso

Use el identificador de la directiva de asignación que registró anteriormente para eliminarla. Asegúrese de que todas las asignaciones se quitan primero. La solicitud devuelve un código de respuesta 204 No Content.

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

Eliminación del paquete de acceso

Use el identificador del paquete de acceso que registró anteriormente para eliminarlo. La solicitud devuelve un código de respuesta 204 No Content.

Solicitud

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

Conclusión

En este tutorial, los recursos de la campaña de marketing formaban parte de un único grupo, que podría tener acceso a otros recursos. Los recursos también pueden ser una colección de grupos, aplicaciones o sitios de SharePoint Online.

Las funcionalidades de este tutorial se admiten en licencias de Microsoft Entra ID P2 o Gobierno de Microsoft Entra ID. Sin embargo, otras funcionalidades avanzadas de administración de derechos requieren licencias adicionales. Para obtener más información, consulte Gobierno de Microsoft Entra ID aspectos básicos de las licencias.