Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Конструктор API предоставляет доступ к данным через REST- и GraphQL-эндпоинты. Защита API требует внимания к трем основным областям: проверка подлинности (кто вызывает?), авторизация (что они могут сделать?) и транспортная безопасность (защищается ли подключение?).
Три основных принципа безопасности
| Столп | Вопрос, на который дается ответ | Ключевая концепция |
|---|---|---|
| Аутентификация | Кто звонитель? | Проверка токенов от поставщика удостоверений |
| Авторизация | Что они могут сделать? | Разрешения на основе ролей для сущностей |
| Транспорт | Безопасно ли подключение? | Шифрование протокола TLS для всего трафика |
Выбор поставщика проверки подлинности
Построитель API данных поддерживает несколько поставщиков проверки подлинности. Выберите тот, который соответствует сценарию развертывания:
| Поставщик | Сценарий использования | Guide |
|---|---|---|
| Неаутентифицированный | DAB находится за интерфейсом доверенного, который обрабатывает идентификацию (по умолчанию) | Настройка поставщика без проверки подлинности |
Microsoft Entra ID (EntraID/AzureAD) |
Производственные приложения с использованием идентификации Microsoft | Настройка проверки подлинности Microsoft Entra |
| Пользовательский веб-токен JSON (JWT) | Сторонние поставщики удостоверений (IdP) (Okta, Auth0, Keycloak) | Настройка пользовательской проверки подлинности JWT |
| Служба приложений | Приложения, работающие через EasyAuth службы приложений Azure (платформенные заголовки) | Настройка проверки подлинности службы приложений |
| Симулятор | Локальная разработка и тестирование | Настройка проверки подлинности симулятора |
| OBO (делегированный пользователем) | Базы данных SQL, требующие реального удостоверения пользователя (безопасность на уровне строк, аудит) | Настройка проверки подлинности OBO |
Замечание
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Аутентификация
Аутентификация проверяет личность вызывающего абонента. Построитель API данных выполняет проверку подлинности запросов путем проверки маркеров носителя JWT (EntraID/AzureAD, Custom) или доверия заголовкам удостоверений, предоставляемым платформой (AppService, StaticWebApps).
Simulator пропускает внешнюю проверку в среде разработки.
Принцип работы
- Для поставщиков JWT клиент получает маркер от поставщика удостоверений.
- Клиент отправляет токен в заголовке
Authorization: Bearer <token>(поставщики JWT) или платформа добавляет заголовки удостоверения (EasyAuth/SWA) - Построитель API данных проверяет заголовок токена или платформы (издатель, аудитория, подпись для поставщиков JWT)
- DAB извлекает роли пользователя из токена или идентификационного заголовка.
Краткий справочник
| Setting | Описание |
|---|---|
runtime.host.authentication.provider |
Поставщик проверки подлинности (Unauthenticated,, EntraID/AzureADCustom, AppService, StaticWebApps, ) Simulator |
runtime.host.authentication.jwt.audience |
Ожидаемое утверждение аудитории для поставщиков JWT (не используется AppService/StaticWebApps/Simulator/Unauthenticated) |
runtime.host.authentication.jwt.issuer |
Ожидаемый издатель или уполномоченный орган для поставщиков JWT (не используется AppService/StaticWebApps/Simulator/Unauthenticated) |
Сведения о конфигурации для конкретного поставщика см. в руководствах по проверке подлинности в этом разделе.
Authorization
Авторизация определяет, что может сделать прошедший проверку подлинности (или анонимный) пользователь. Конструктор API данных использует управление доступом на основе ролей (RBAC) для ограничения доступа к действиям и сущностям.
Принцип работы
- DAB назначает роль запросу на основе токена и заголовков.
- DAB ищет права доступа объекта для этой роли
- Если роль имеет разрешение на запрошенное действие, DAB выполняет запрос.
- Если нет, DAB возвращает ответ
403 Forbidden
Системные роли и роли пользователей
| Тип роли | Описание |
|---|---|
Anonymous |
Назначается, если аутентифицированное удостоверение отсутствует |
Authenticated |
Назначается при проверке подлинности запроса (заголовок доверенной платформы JWT) и не выбрана определенная роль пользователя. |
| Роли пользователей | Пользовательские роли из утверждения токена roles (или роли платформы), выбранные с помощью X-MS-API-ROLE заголовка |
Безопасность по умолчанию
Сущности по умолчанию не имеют разрешений. Необходимо явно предоставить доступ:
{
"entities": {
"Book": {
"permissions": [
{ "role": "authenticated", "actions": ["read"] }
]
}
}
}
Подробные сведения о конфигурации см. в обзоре авторизации.
Безопасность на уровне строк и на уровне полей
Перейдите за рамки разрешений уровня сущности с помощью точного управления доступом:
| Функция | Описание | Guide |
|---|---|---|
| Политики базы данных (безопасность на уровне строк) | Преобразование выражений политики в предикаты запросов, которые фильтруют строки на основе утверждений или контекста сеанса | Реализация безопасности на уровне строк |
| Безопасность на уровне полей | Включение или исключение определенных столбцов для каждой роли | Доступ к полю |
| От имени (OBO) | Обменяйте входящий токен пользователя на нижестоящий токен SQL, чтобы база данных выполняла проверку подлинности как текущий вызывающий пользователь (только mssql). | Пользовательская делегированная аутентификация |
Наследование ролей
DAB 2.0 представляет наследование ролей для разрешений сущностей. Цепочка наследования — это named-role → authenticated → anonymous. Если роль не настроена явно для сущности, она наследует от следующей по иерархии более широкой роли. Определите разрешения один раз на anonymous, и каждая более широкая роль получает такой же доступ. Дополнительные сведения см. в разделе "Наследование ролей".
Безопасность транспорта и конфигурации
Безопасность транспорта
- Использование TLS для всех подключений: шифрование трафика между клиентами и DAB
- Отключение устаревших версий TLS: используйте только TLS 1.2+
- Использование конечных точек HTTPS: никогда не предоставляйте DAB через незашифрованный HTTP в рабочей среде
Дополнительные сведения см. в рекомендациях по обеспечению безопасности.
Безопасность конфигурации
-
Хранение секретов в переменных среды: использование
@env('SECRET_NAME')в конфигурации -
Использование Azure Key Vault: ссылаться на секреты с помощью
@azure('key-vault-uri') -
Никогда не добавляйте секреты: держите
dab-config.jsonсвободным от паролей и строк подключения
{
"data-source": {
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}
Мониторинг и обновления
- Мониторинг доступа: использование Application Insights для отслеживания запросов и обнаружения аномалий
- Проверка журналов: проверка неудачных попыток проверки подлинности и отказов в разрешении
- Обновление DAB: применение исправлений для системы безопасности путем обновления до последней версии
Краткие руководства по началу работы
| задачи | Guide |
|---|---|
| Использование доверенного интерфейса без проверки JWT в DAB | Настройка поставщика без проверки подлинности |
| Настройка аутентификации Microsoft Entra ID | Настройка проверки подлинности Microsoft Entra |
| Используйте Okta или Auth0 | Настройка пользовательской проверки подлинности JWT |
| Запуск службы приложений Azure | Настройка проверки подлинности службы приложений |
| Локальное тестирование разрешений | Настройка проверки подлинности симулятора |
| Ограничение строк пользователем | Реализация безопасности на уровне строк |
| Понимание назначения ролей | Обзор авторизации |