Использование Azure PIM для управления соответствующим доступом с помощью REST API
Azure управление привилегированными пользователями (PIM) позволяет ограничить постоянный доступ администратора к привилегированным ролям, определить, кто имеет доступ, и проверить привилегированный доступ. В этой статье описываются распространенные способы управления доступом с помощью REST API.
Список допустимых назначений
Чтобы получить список допустимых назначений ролей (доступ к списку), можно использовать один из экземпляров расписания ролей — список для области или Расписания соответствия роли — список для области REST API. Чтобы уточнить результаты, укажите область и дополнительный фильтр. Чтобы вызвать API, нужен доступ к операции Microsoft.Authorization/roleAssignments/read
в указанной области. Всем встроенным ролям предоставляется доступ к этой операции.
Важно!
Разница между расписаниями и экземплярами расписания заключается в том, что в то время как экземпляры расписания включают только те назначения, которые активны в текущее время, расписания также включают назначения, которые станут активными в будущем.
Можете начать со следующего запроса:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?api-version=2020-10-01&$filter={filter}
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilitySchedules?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 и укажите субъект безопасности, определение роли, расписание, тип запроса = AdminAssign
и область. Чтобы вызвать этот API, необходимо иметь доступ к Microsoft.Authorization/roleAssignments/write
операции. Из встроенных ролей эту операцию могут выполнять только владелец и администратор доступа пользователей.
Используйте REST API Определения ролей — список или изучите раздел Встроенные роли, чтобы получить идентификатор для определения роли, которое требуется назначить.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
Можете начать со следующего запроса и основного текста:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?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": "P365D" // 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
Ресурс Замените {roleEligibilityScheduleRequestName} идентификатором GUID назначения роли.
В тексте запроса замените {subscriptionId} своим идентификатором подписки.
Замените {roleDefinitionId} идентификатором определения роли.
Замените {principalId} идентификатором объекта для пользователя, группы или субъекта-службы, которым будет назначена роль.
Удаление допустимого назначения
Чтобы удалить соответствующее назначение роли (удалить доступ), используйте запросы на планирование ролей — создание REST API, чтобы создать новый запрос на отмену назначения и указать субъект безопасности, определение роли, requestType = AdminRemove
и область. Чтобы вызвать этот API, нужен доступ к операции Microsoft.Authorization/roleAssignments/write
. Из встроенных ролей эту операцию могут выполнять только владелец и администратор доступа пользователей.
Используйте средство GUID для создания уникального идентификатора, который будет использоваться для назначения роли. Этот идентификатор имеет следующий формат:
00000000-0000-0000-0000-000000000000
Можете начать со следующего запроса:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?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
Ресурс Замените {roleEligibilityScheduleRequestName} идентификатором GUID назначения роли.
Распространенные ошибки, возвращаемые для нового запроса
Ниже приведен список распространенных ошибок, которые могут возникнуть при создании нового запроса, и способы их устранения.
Сообщение об ошибке | Экспланантность | Меры по снижению риска |
---|---|---|
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 |