Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Конструктор 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 | Настройка проверки подлинности службы приложений |
| Локальное тестирование разрешений | Настройка проверки подлинности симулятора |
| Ограничение строк пользователем | Реализация безопасности на уровне строк |
| Понимание назначения ролей | Обзор авторизации |