Поделиться через


Управление доступом к ресурсам с помощью 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. Получение идентификатора для общего каталога

Получите идентификатор каталога General .

Запрос

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. Добавление группы в каталог

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

Если вы не являетесь владельцем группы, на которую вы ссылаетесь в 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",
            "[email protected]": "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": "[email protected]",
    "createdDateTime": "2024-03-26T17:36:45.411033Z",
    "modifiedBy": "[email protected]",
    "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": "[email protected]",
  "createdDateTime": "2020-06-29T19:47:44.7399675Z",
  "modifiedBy": "[email protected]",
  "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.