Управление доступом к ресурсам с помощью API управления правами

Microsoft Entra управление правами позволяет управлять доступом к ресурсам, которые сотрудники должны быть продуктивными. В этом руководстве вы используете API управления правами для создания пакета ресурсов, которые внутренние пользователи запрашивают сами. API являются программной альтернативой для создания пользовательских приложений вместо использования Центр администрирования Microsoft Entra.

В этом руководстве рассказывается, как:

  • Создайте пакет доступа, который пользователи могут запрашивать самостоятельно.
  • Назначьте ресурс группы пакету доступа.
  • Запрос пакета доступа

Предварительные требования

Для работы с этим руководством вам потребуются следующие ресурсы и привилегии:

  • Рабочий клиент Microsoft Entra с включенной лицензией Microsoft Entra ID P2 или Управление Microsoft Entra ID. Любой из этих лицензий достаточно для возможностей, приведенных в этом руководстве.
  • Тестовая гостевая учетная запись и тестовая группа безопасности в клиенте. Группа безопасности — это ресурс, приведенный в этом руководстве. Не забудьте быть владельцем группы или назначена роль администратора групп . В этом руководстве:
    • Пользователь имеет идентификатор 007d1c7e-7fa8-4e33-b678-5e437acdcddc и имеет имя Requestor1.
      • [Необязательно] Откройте новое окно анонимного браузера. Вы выполните вход далее в этом руководстве.
    • У группы есть идентификатор f4892fac-e81c-4712-bdf2-a4450008a4b0 с описанием "Группа маркетинга" и отображаемым именем "Маркетинговые ресурсы".
  • Войдите в клиент API, например Graph Обозреватель с учетной записью, которая имеет по крайней мере роль администратора управления удостоверениями.
  • Предоставьте себе следующие делегированные разрешения: User.ReadWrite.All, Group.ReadWrite.Allи EntitlementManagement.ReadWrite.All.

Примечание.

В некоторых шагах в этом руководстве используется конечная beta точка.

Шаг 1. Добавление ресурсов в каталог и создание пакета для доступа

Пакет доступа — это пакет ресурсов, необходимых команде или проекту и управляемый политиками. Пакеты доступа определяются в контейнерах, называемых каталогами. Каталоги могут ссылаться на ресурсы, такие как группы, приложения и сайты, которые используются в пакете доступа. Управление правами включает каталог по умолчанию General .

На этом шаге вы создадите пакет для доступа к маркетинговой кампании в каталоге Общие.

Шаг 1.1. Получение идентификатора для общего каталога

Сначала получите идентификатор каталога, в который нужно добавить ресурсы.

Запрос

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

Отклик

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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

Шаг 1.2. Добавление группы в каталог

В этом руководстве ресурс является группой безопасности с идентификатором e93e24d1-2b65-4a6c-a1dd-654a12225487.

Чтобы добавить созданную группу в каталог, укажите следующие значения свойств:

  • catalogIdидентификатор используемого каталога.
  • originIdидентификатор созданной группы.

Если вы не являетесь владельцем группы, на которую вы ссылаетесь в originId , или вам не назначена роль администратора групп , этот запрос завершается ошибкой 403 Forbidden с кодом ошибки.

Запрос

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

Отклик

В этом ответе идентификатор представляет идентификатор группы в качестве ресурса в каталоге Общие. Этот идентификатор не является идентификатором группы. Запишите этот идентификатор.

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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

Шаг 1.3. Получение ресурсов каталога

На этом шаге вы получите сведения о ресурсах, которые соответствуют идентификатору ресурса группы, добавленного в каталог Общий.

Запрос

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

Отклик

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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

Шаг 1.4. Получение ролей ресурсов

Пакет доступа назначает пользователям роли ресурса. Типичной ролью группы является Member роль. Другие ресурсы, такие как сайты и приложения SharePoint Online, могут иметь много ролей. Типичной ролью группы, используемой в пакете Member доступа, является роль. Роль участника потребуется, чтобы добавить роль ресурса в пакет доступа далее в этом руководстве.

В запросе используйте идентификатор каталога и идентификатор ресурса группы в каталоге, который вы записали, чтобы получить originId роли ресурса Member. Запишите значение свойства originId , которое будет использоваться далее в этом руководстве.

Запрос

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

Отклик

Так как вы отфильтрованы по originId, отображаемому имени и идентификатору ресурса, в случае успешного выполнения возвращается одно значение, представляющее роль участника этой группы. Если роли не возвращаются, проверка значения идентификаторов каталога и ресурса пакета для доступа.

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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

Шаг 1.5. Создание пакета доступа

Теперь у вас есть каталог с ресурсом группы, и вы хотите использовать роль ресурса участника группы в пакете доступа. Следующим шагом является создание пакета для доступа. Получив пакет доступа, вы можете добавить в него роль ресурса и создать политику для того, как пользователи могут запрашивать доступ к этой роли ресурса. Для создания пакета доступа используется идентификатор каталога, записанного ранее. Запишите идентификатор пакета для доступа, который будет использоваться далее в этом руководстве.

Запрос

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

Отклик

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

Шаг 1.6. Добавление роли ресурса в пакет доступа

Запрос

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

Отклик

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

Пакет доступа теперь имеет одну роль ресурса— членство в группе. Роль назначается любому пользователю, у которого есть пакет доступа.

Шаг 1.7. Создание политики пакета доступа

Теперь, когда вы создали пакет доступа и добавили ресурсы и роли, вы можете решить, кто может получить к нему доступ, создав политику пакета доступа. В этом руководстве вы включите созданную учетную запись Requestor1 для запроса доступа к ресурсам в пакете доступа. Для этой задачи вам потребуются следующие значения:

  • идентификатор пакета доступа для значения свойства accessPackageId
  • Идентификатор учетной записи пользователя Requestor1 для значения свойства id в allowedRequestors

Значение свойства durationInDays позволяет учетной записи Requestor1 получать доступ к ресурсам в пакете доступа на срок до 30 дней. Запишите значение свойства id , которое будет использоваться далее в этом руководстве.

Запрос

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

Отклик

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

Шаг 2. Запрос доступа

На этом шаге учетная запись пользователя Requestor1 запрашивает доступ к ресурсам в пакете доступа.

Чтобы запросить доступ к ресурсам в пакете доступа, необходимо указать следующие значения:

  • Идентификатор учетной записи пользователя Requestor1, созданной для значения свойства targetId
  • Идентификатор политики назначения для значения свойства assignmentPolicyId
  • идентификатор пакета доступа для значения свойства accessPackageId

В ответе состояние равно Accepted , а состояние — Submitted. Запишите значение возвращаемого свойства id , чтобы позже получить состояние запроса.

Запустите новый анонимный сеанс браузера и войдите в Requestor1. Таким образом вы не прерываете текущий сеанс администратора. Кроме того, можно прервать текущий сеанс администратора, выйдя из Graph Обозреватель и выполнив вход в качестве Requestor1.

Запрос

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

Отклик

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

Теперь вы можете выйти из анонимного сеанса и выйти из него.

Шаг 3. Проверка назначения доступа

На этом шаге вы подтвердите, что учетной записи пользователя Requestor1 назначен пакет доступа и что он теперь входит в группу Маркетинговые ресурсы . Вернитесь к сеансу администратора в Graph Обозреватель.

Шаг 3.1. Получение состояния запроса

Используйте значение свойства id запроса, чтобы получить его текущее состояние. В ответе отображается состояние выполнено , а состояние — на Доставлено.

Запрос

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

Отклик

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

Шаг 3.2. Получение назначений пакетов доступа

Вы также можете использовать идентификатор созданной политики пакетов доступа, чтобы увидеть, что ресурсы назначены учетной записи пользователя Requestor1 .

Запрос

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

Отклик

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

Шаг 3.3. Получение членов группы

После предоставления запроса можно использовать идентификатор , записанный для группы маркетинговых ресурсов , чтобы увидеть, что в нее добавлена учетная запись пользователя Requestor1 .

Запрос

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

Отклик:

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

Шаг 4. Очистка ресурсов

На этом шаге вы удалите внесенные изменения и удалите пакет доступа к маркетинговой кампании .

Удаление назначения пакета доступа

Перед удалением пакета доступа необходимо удалить все назначения. Используйте идентификатор ранее записанного запроса на назначение, чтобы удалить его.

Запрос

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

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

Отклик

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

Удаление политики назначения пакетов доступа

Используйте идентификатор ранее записанной политики назначений, чтобы удалить его. Убедитесь, что все назначения удалены в первую очередь. Запрос возвращает код отклика 204 No Content.

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

Удаление пакета доступа

Используйте идентификатор ранее записанного пакета доступа, чтобы удалить его. Запрос возвращает код отклика 204 No Content.

Запрос

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

Заключение

В этом руководстве ресурсы маркетинговой кампании были членами одной группы, которая могла бы иметь доступ к другим ресурсам. Ресурсы также могут быть коллекциями групп, приложений или сайтов SharePoint Online.

Возможности, приведенные в этом руководстве, поддерживаются в лицензиях Microsoft Entra ID P2 или Управление Microsoft Entra ID. Однако другие расширенные возможности управления правами требуют дополнительного лицензирования. Дополнительные сведения см. в статье основы лицензирования Управление Microsoft Entra ID.