Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Наследование ролей позволяет единожды задать разрешения для более широкой роли, чтобы более узкие роли автоматически унаследовали этот доступ. Без наследования ролей необходимо повторять один и тот же блок разрешений для каждой роли и каждой сущности. С наследованием ролей настройте доступ на anonymous один раз, и все расширенные роли получат такой же доступ.
Цепочка наследования
Цепочка наследования передается из наименее привилегированных к наиболее привилегированным:
named-role → authenticated → anonymous
| Роль | Наследует от | Примечания |
|---|---|---|
Именованная роль (например, editor) |
authenticated |
Или, anonymous если authenticated не настроено |
authenticated |
anonymous |
Применяется, если явный authenticated блок не существует |
anonymous |
(нет) | Основа цепочки; нет запасного варианта |
Цепочка означает:
- Если у именованной роли нет блока разрешений, DAB ищет
authenticatedблок. Если ни один из них не существует, он возвращается вanonymous. - Если у
authenticatedнет блока разрешений, DAB использует блокanonymous. - Если у
anonymousнет блока разрешений, запрос отклоняется с403 Forbidden.
Как решается наследование
Когда DAB оценивает запрос, он определяет эффективную роль, а затем проходит цепочку наследования, чтобы найти блок разрешений:
- DAB определяет эффективную роль из запроса (через
X-MS-API-ROLEзаголовок, претензии токена или значения по умолчанию). - DAB ищет явный блок разрешений в
entities.<name>.permissions, соответствующий эффективной роли. - Если соответствующий блок отсутствует, DAB проходит по цепочке:
authenticated→anonymous. - Первый найденный блок сопоставления предоставляет разрешения для запроса.
- Если ни один блок не соответствует какой-либо роли в цепочке, DAB возвращает
403 Forbidden.
Замечание
DAB оценивает разрешения в контексте ровно одной эффективной роли на запрос. Наследование ролей не объединяет разрешения из нескольких ролей.
Примеры
Минимальная конфигурация: одно разрешение для всех ролей
read Определение разрешения на anonymous. Каждая роль —authenticated и любая именованная роль — наследуют этот доступ.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Действующие разрешения для этой конфигурации:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles | Inherit from: anonymous
Многоуровневая конфигурация: другой доступ для каждой роли
Если вам нужны разные уровни доступа для каждой роли, определите каждый из них явным образом. Наследование автоматически заполняет только те роли, которые вы не настраиваете.
{
"entities": {
"Order": {
"source": "dbo.orders",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] },
{ "role": "authenticated", "actions": [ "read", "create" ] },
{ "role": "admin", "actions": [ "*" ] }
]
}
}
}
Действующие разрешения для этой конфигурации:
Entity: Order
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read, Create
Role: admin | Actions: Create, Read, Update, Delete
Unconfigured roles | Inherit from: authenticated
Любая именованная роль, отличная от admin — например, viewer или support — наследует от authenticated и получает read и create доступ.
Нет наследования: полностью заблокировано
Если anonymous нет блока разрешений и нет другой роли в цепочке, каждый запрос к этой сущности отклоняется.
{
"entities": {
"AuditLog": {
"source": "dbo.audit_log",
"permissions": [
{ "role": "admin", "actions": [ "read" ] }
]
}
}
}
Только admin может получить доступ к AuditLog в этой конфигурации.
authenticated и anonymous не имеют блока для наследования, поэтому DAB отклоняет запросы от этих ролей с 403 Forbidden.
Это важно
DAB выдает предупреждение при запуске, когда authenticated или именованные роли настроены на сущности, но поставщик Unauthenticated активен. Если Unauthenticated этот параметр активен, эти роли никогда не активируются. Дополнительные сведения см. в разделе "Настройка неавторентированного поставщика".
Просмотр эффективных разрешений
Используйте dab configure --show-effective-permissions для отображения разрешений для каждой сущности, включая информацию о том, какие роли откуда унаследованы. Эта команда является самым быстрым способом удостовериться в том, что наследование работает как предусмотрено, без запуска движка.
dab configure --show-effective-permissions
Вы также можете выбрать конкретный файл конфигурации:
dab configure --show-effective-permissions --config my-config.json
Пример выходных данных:
Entity: Book
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: anonymous
Entity: Order
Role: admin | Actions: Create, Read, Update, Delete
Role: anonymous | Actions: Read
Role: authenticated | Actions: Read (inherited from: anonymous)
Unconfigured roles inherit from: authenticated
Полные параметры см. в разделе --show-effective-permissions.
Наследование и явные разрешения
| Сценарий | Recommendation |
|---|---|
| Все роли должны иметь одинаковый доступ | Определить один раз anonymous; разрешить всем ролям наследоваться |
| Для пользователей, прошедших проверку подлинности, требуется больше доступа, чем анонимный | Определить anonymous чтение, добавление и authenticated создание/обновление |
Для именованной роли требуется более широкий доступ, чем authenticated |
Ясно определите именованную роль; остальные наследуют от authenticated |
Именованной роли требуется меньше доступа, чем authenticated |
Явно определить именованную роль с сокращением действий. |
| Сущность должна быть полностью частной | Предоставьте только определенную именованную роль, оставьте authenticated и anonymous неопределённые. |