Разрешение (permission) — именованный набор эндпоинтов ресурсов. Роли и service-клиенты описывают с его помощью, что им можно вызывать. Эндпоинты напрямую не перечисляет ни роль, ни клиент. Общая картина описана в разделе Сущности.
Поля
| Поле | Что это | Правила |
|---|---|---|
| Permission ID | Имя, на которое ссылаются роли и клиенты | Строчные латинские буквы, цифры, подчеркивания и дефисы в сегментах, разделенных только :; каждый сегмент начинается с буквы (^[a-z][a-z0-9_-]*(:[a-z][a-z0-9_-]*)*$). Допустимы orders:read, orders:write:managed и auth-settings:manage. Точки отклоняются и консолью, и Central API везде, где ID разрешения создается, обновляется или указывается (в роли или клиенте). Уникален в пределах тенанта. После создания не меняется |
| English description | Подпись разрешения в консоли | Необязательно. Если оставить пустым, консоль сохранит в описании сам ID |
| Ресурсы и эндпоинты | Эндпоинты, которые покрывает разрешение | Выбираются из ресурсов того же тенанта. Разрешение может охватывать несколько ресурсов |
Ни форма, ни Central API не задают максимальную длину ID и описания.
В ID разрешений сегменты разделяются двоеточием. В ID scope нет ни двоеточий, ни точек.
Список можно отфильтровать по All, Unlinked и Detached и по ресурсу: поле Resource — это typeahead, введите часть хоста, чтобы сузить варианты, и выберите один. В строке не больше двух ресурсов и двух эндпоинтов, остальные скрыты за +N; наведите курсор, чтобы их прочитать. Панель разрешения перечисляет эндпоинты под хостом каждого ресурса.
Что на что ссылается
- Разрешение хранит ID эндпоинтов, а не метод и путь. Список эндпоинтов на странице разрешения собирается по ресурсам.
- Роль перечисляет ID разрешений. Клиент типа service тоже.
- В таблице эндпоинтов ресурса колонка Who may call показывает разрешения, которые покрывают каждый эндпоинт. Несколько разрешений — это альтернативы: достаточно любого одного.
edge использует разрешения двумя путями:
- Через роль. Токен пользователя несет ID ролей, а
edgeсобирает разрешения всех этих ролей в тенанте токена. Пользователь с ролью, в которую входит разрешение, может вызывать каждый эндпоинт, который оно покрывает. - Напрямую у клиента. При grant
client_credentialsпользователя нет, поэтомуedgeчитает собственные разрешения service-клиента. Разрешения клиента он читает только для таких токенов.
Покрытие эндпоинта необходимо, но недостаточно. edge все равно вычисляет Allow (CEL) эндпоинта, step-up и max auth age. См. Политики эндпоинтов.
Изменение и удаление
Можно менять описание, добавлять и убирать ресурсы и эндпоинты. Permission ID не редактируется.
Если эндпоинт позже убрали из ресурса или ресурс удалили, разрешение сохраняет устаревшую ссылку и показывает ее в блоке Detached endpoints с кнопкой удаления.
Удаление разрешения стирает только запись разрешения и требует подтверждения. Роли и клиенты сохраняют его ID в своих списках, но он больше не покрывает ни одного эндпоинта и ничего не дает. edge применит изменение после следующего обновления конфигурации. Это касается и уже выданных токенов, потому что edge читает разрешения при каждом запросе.
Что дальше
- Как зарегистрировать разрешение: форма по шагам.
- Роль: как сгруппировать разрешения для пользователей.
- Ресурс: откуда берутся эндпоинты.