Использование Azure PIM для управления активным доступом с помощью REST API
Azure управление привилегированными пользователями (PIM) позволяет ограничить постоянный доступ администратора к привилегированным ролям, определить, кто имеет доступ, и проверить привилегированный доступ. В этой статье описываются распространенные способы управления доступом с помощью REST API.
Вывод списка активных назначений
Чтобы получить список активных назначений ролей (доступ к списку), можно использовать один из экземпляров расписания ролей — список для области или Расписания назначения ролей — список для области REST API. Чтобы уточнить результаты, укажите область и дополнительный фильтр. Чтобы вызвать API, нужен доступ к операции Microsoft.Authorization/roleAssignments/read
в указанной области. Всем встроенным ролям предоставляется доступ к этой операции.
Важно!
Разница между расписаниями и экземплярами расписания заключается в том, что в то время как экземпляры расписания включают только те назначения, которые активны в текущее время, расписания также включают назначения, которые станут активными в будущем.
Можете начать со следующего запроса:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleInstances?api-version=2020-10-01&$filter={filter}
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentSchedules?api-version=2020-10-01&$filter={filter}
Внутри URI замените {scope} областью, для которой требуется вывести список назначений ролей.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Ресурс Замените {filter} условием, по которому требуется отфильтровать список назначений ролей.
Filter Описание $filter=atScope()
Вывод списка назначений ролей только для определенной области без учета внутренних областей. $filter=principalId%20eq%20'{objectId}'
Вывод списка назначений ролей для определенного пользователя, группы или субъекта-службы. $filter=roleDefinitionId%20eq%20'{roleDefinitionId}'
Перечисление назначений ролей для указанного определения роли. $filter=assignedTo('{objectId}')
Вывод списка назначений ролей для определенного пользователя, включая унаследованные от групп. $filter=asTarget()
Перечисление назначений ролей для текущего пользователя или субъекта-службы, включая наследуемые от групп. $filter=assignedTo('{objectId}')+and+atScope()
Перечисление назначений ролей для указанного пользователя, включая наследуемые от групп только для указанных область, не включая назначения ролей в подобласти.
Предоставление активного назначения
Чтобы создать активное назначение роли (предоставить доступ), используйте запросы расписания назначения ролей — создание REST API и укажите субъект безопасности, определение роли, расписание, requestType = AdminAssign
и область. Чтобы вызвать этот API, необходимо иметь доступ к Microsoft.Authorization/roleAssignments/write
операции. Из встроенных ролей эту операцию могут выполнять только владелец и администратор доступа пользователей.
Используйте REST API Определения ролей — список или изучите раздел Встроенные роли, чтобы получить идентификатор для определения роли, которое требуется назначить.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
Можете начать со следующего запроса и основного текста:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminAssign", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "P30D" // Use ISO 8601 format } } } }
Внутри URI замените {scope} областью для назначения роли.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Ресурс Замените {roleAssignmentScheduleRequestName} идентификатором GUID назначения роли.
В тексте запроса замените {subscriptionId} своим идентификатором подписки.
Замените {roleDefinitionId} идентификатором определения роли.
Замените {principalId} идентификатором объекта для пользователя, группы или субъекта-службы, которым будет назначена роль.
Удаление активного назначения
Чтобы удалить активное назначение роли (удалить доступ), используйте REST API Расписания назначения ролей — создание REST API, чтобы создать новый запрос на отмену назначения и указать субъект безопасности, определение роли, requestType = AdminRemove
и область. Чтобы вызвать этот API, нужен доступ к операции Microsoft.Authorization/roleAssignments/write
. Из встроенных ролей эту операцию могут выполнять только владелец и администратор доступа пользователей.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
Можете начать со следующего запроса:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminRemove" } }
Внутри URI замените {scope} областью для удаления назначения роли.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ресурс Замените {roleAssignmentScheduleRequestName} идентификатором GUID назначения роли.
Активация назначения соответствующих ролей
Чтобы активировать допустимое назначение роли (получить активированный доступ), используйте запросы расписания назначения ролей — создание REST API, чтобы создать новый запрос и указать субъект безопасности, определение роли, requestType = SelfActivate
и область. Чтобы вызвать этот API, необходимо иметь соответствующее назначение роли в область.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
[Необязательно] Выберите ,
RoleEligibilitySchedule
который вы хотите активировать, и получитеRoleEligibilityScheduleId
из API ролей для передачи в качествеLinkedRoleEligibilityScheduleId
. Это необязательный параметр, и если он не передан, система выберет .RoleEligibilitySchedule
Можете начать со следующего запроса:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "SelfActivate", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "PT8H" // Use ISO 8601 format } }, "LinkedRoleEligibilityScheduleId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignmentSchedules/{roleAssignmentScheduleId}" //Optional } }
Внутри URI замените {scope} областью для удаления назначения роли.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ресурс Замените {roleAssignmentScheduleRequestName} идентификатором GUID назначения роли.
Деактивация активного назначения ролей
Чтобы отменить активированное назначение ролей (удалить активированный доступ), используйте REST API Расписания назначения ролей — создание REST API, чтобы создать новый запрос и указать субъект безопасности, определение роли, requestType = SelfDeactivate
и область. Чтобы вызвать этот API, необходимо иметь активированное назначение роли в область.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
Можете начать со следующего запроса:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "SelfDeactivate" } }
Внутри URI замените {scope} областью для удаления назначения роли.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ресурс Замените {roleAssignmentScheduleRequestName} идентификатором GUID назначения роли.
Just-Enough-Access (JEA)
Если у пользователя есть соответствующее назначение роли в ресурсе (родительском), он может активировать роль на дочернем уровне область родительского ресурса, а не на всем родительском область. Например, если пользователь имеет Contributor
подходящую роль в подписке, он может активировать роль на уровне дочерней группы ресурсов подписки.
Чтобы получить список всех дочерних элементов ресурса, к которому у вас есть соответствующий доступ, можно использовать API подходящих дочерних ресурсов .
Можете начать со следующего запроса:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/eligibleChildResources?api-version=2020-10-01&$filter={filter}
Внутри URI замените {scope} областью, для которой требуется вывести список назначений ролей.
Область Тип providers/Microsoft.Management/managementGroups/{mg-name}
Группа управления subscriptions/{subscriptionId}
Подписка subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Группа ресурсов Замените {filter} условием, по которому требуется отфильтровать список назначений ролей.
Filter Описание $filter=resourceType+eq+'Subscription'
Список ресурсов типа = "Подписка". $filter=$filter=resourceType+eq+'subscription'+or+resourceType+eq+'resourcegroup''
Список ресурсов типа = "Подписка" или тип = "Группа ресурсов". id
Используйте для любого дочернего ресурса, который будет использоваться вscope
качестве для активации.RoleAssignmentScheduleRequest
Распространенные ошибки, возвращаемые для нового запроса
Ниже приведен список распространенных ошибок, которые могут возникнуть при создании нового запроса, и способы их устранения.
Сообщение об ошибке | Экспланантность | Меры по снижению риска |
---|---|---|
code : RoleAssignmentExistsmessage : назначение роли уже существует. |
Аналогичное назначение роли уже существует | Вы можете GET назначить эту роль и проверить ее расписание. |
code : RoleAssignmentRequestPolicyValidationFailedmessage : не удалось выполнить следующие правила политики: ["ExpirationRule"] |
Значение , ScheduleInfo указанное в запросе, превышает максимально допустимую длительность. |
Для этого RoleDefinitionId можно GET использовать RoleManagementPolicy и проверкаRoleManagementPolicyExpirationRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : не удалось выполнить следующие правила политики: ["JustificationRule"] |
Необходимо указать Justification в тексте запроса |
Для этого RoleDefinitionId можно GET использовать RoleManagementPolicy и проверкаRoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : не удалось выполнить следующие правила политики: ["EligibilityRule"] |
Не существует допустимого RoleEligibilityScheduleInstance значения для активации этой роли. |
Администратор ресурсов должен создать RoleEligibilityScheduleRequest для этого субъекта |
code : RoleAssignmentRequestPolicyValidationFailedmessage : не удалось выполнить следующие правила политики: ["TicketingRule"] |
Необходимо указать TicketInfo в тексте запроса |
Для этого RoleDefinitionId можно GET использовать RoleManagementPolicy и проверкаRoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : не удалось выполнить следующие правила политики: ["MfaRule"] |
Для отправки этого запроса необходимо выполнить Многофакторную идентификацию Azure. | Для этого RoleDefinitionId можно GET использовать RoleManagementPolicy и проверкаRoleManagementPolicyEnablementRule |