Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Построитель API данных (DAB) позволяет хранить секреты, такие как строки подключения к базе данных, вне файла конфигурации среды выполнения, заменив их во время загрузки. Первоначально это было сделано с @env() функцией для переменных среды. Начиная с версии 1.6 DAB добавляет поддержку Azure Key Vault через функцию @akv() .
Что @akv() делает
Вы можете ссылаться на секрет, хранящийся в Azure Key Vault, непосредственно в формате JSON конфигурации:
{
"data-source": {
"connection-string": "@akv('my-connection-secret')"
}
}
Во время загрузки конфигурации DAB обрабатывает заполнитель, заменяя его значением секрета, аналогично тому, как работает @env('VAR_NAME'). Если не удается получить секрет, загрузка конфигурации завершается ошибкой. Ошибки включают отсутствие секретов или сбоев авторизации.
Структура конфигурации
azure-key-vault Добавьте раздел на корневом уровне конфигурации:
{
"azure-key-vault": {
"endpoint": "https://my-vault-name.vault.azure.net/",
"retry-policy": {
"mode": "exponential",
"max-count": 5,
"delay-seconds": 2,
"max-delay-seconds": 30,
"network-timeout-seconds": 45
}
}
}
Свойства
| Недвижимость | Обязательно | Тип | Description |
|---|---|---|---|
endpoint |
Да , если используется Key Vault | струна | Полный URL-адрес конечной точки Key Vault |
retry-policy |
нет | объект | Переопределяет поведение повторных попыток доступа при вызове Key Vault |
Объект политики повтора
| Поле | По умолчанию | Примечания. |
|---|---|---|
mode |
exponential |
Допустимые значения: fixed или exponential |
max-count |
3 | Должно быть больше 0 |
delay-seconds |
1 | Должно быть больше 0 |
max-delay-seconds |
60 | Должно быть больше 0, потолок для экспоненциального отката |
network-timeout-seconds |
60 | Должно быть больше 0 |
Режимы политики повторных попыток
| Mode | Поведение |
|---|---|
fixed |
Поддерживает постоянный интервал delay-seconds между попытками до тех пор, пока max-count |
exponential |
Удвоит задержку до достижения max-delay-seconds или max-count |
Локальная разработка: AKV-файлы
Для разработки без Azure Key Vault используйте .akv файл для имитации секретов. Формат равен строке name=value :
my-connection-secret=Server=.;Database=AppDb;User Id=app;Password=local-dev;
api-key=dev-api-key-123
Замечание
Если вы предоставляете локальный .akv файл для разработки, его записи используются для разрешения поиска «secret-name», не вызывая сетевой вызов в Azure Key Vault.
Руководящие принципы:
- Не добавляйте
.akvв систему управления версиями - Имена секретов должны соответствовать именам, используемым в
@akv('name')
Добавление параметров Azure Key Vault с помощью CLI
Параметры Key Vault можно настроить с помощью интерфейса командной строки:
dab configure \
--azure-key-vault.endpoint "https://my-vault.vault.azure.net/" \
--azure-key-vault.retry-policy.mode exponential \
--azure-key-vault.retry-policy.max-count 5 \
--azure-key-vault.retry-policy.delay-seconds 2 \
--azure-key-vault.retry-policy.max-delay-seconds 30 \
--azure-key-vault.retry-policy.network-timeout-seconds 45 \
--config dab-config.json
Ратификация:
- Поля политики повторных попыток без конечной точки вызывают сбой проверки
- Необязательные параметры повторных попыток должны быть положительными целыми числами
Использование @akv() в конфигурации
Базовая подстановка
{
"data-source": {
"database-type": "mssql",
"connection-string": "@akv('primary-sql-connection')"
}
}
Смешано с @env()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('sql-connection')"
},
"runtime": {
"rest": { "enabled": true }
}
}
Замечание
При запуске @env() подстановки происходят перед @akv() подстановками.
Параметры хранимой процедуры
{
"entities": {
"RunJob": {
"source": {
"object": "dbo.RunJob",
"type": "stored-procedure",
"parameters": {
"apiKey": "@akv('job-runner-apikey')"
}
},
"permissions": [
{ "role": "anonymous", "actions": [ "execute" ] }
]
}
}
}
Устранение неполадок
| Симптом | Этапы |
|---|---|
| Секрет не найден | Проверьте имя, наличие в хранилище и идентификационные разрешения |
| Недопустимое значение повторных попыток | Используйте положительное целое число или удалите для использования значений по умолчанию |
| Обновление конфигурации завершается сбоем | Проверка журналов ошибок проверки |
@akv() не заменено |
Подтвердите конечную точку, имя секрета и что разрешение секрета включено |
| 401/403 из Key Vault | Проверка назначения учётных записей и прав доступа |
Полный пример конфигурации
{
"data-source": {
"database-type": "mssql",
"connection-string": "@akv('primary-sql-connection')"
},
"azure-key-vault": {
"endpoint": "https://my-vault.vault.azure.net/",
"retry-policy": {
"mode": "exponential",
"max-count": 5,
"delay-seconds": 2,
"max-delay-seconds": 30,
"network-timeout-seconds": 45
}
},
"runtime": {
"rest": { "enabled": true }
},
"entities": {
"Books": {
"source": "dbo.Books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Пример файла .akv:
primary-sql-connection=Server=localhost;Database=BooksDb;User Id=app;Password=password;
Это важно
Не фиксируйте .akv файлы, содержащие секреты. |
Краткий справочник
| Item | Сводка |
|---|---|
| Синтаксис | @akv('secret-name') |
| Требуется конечная точка | Да |
| Файл моделирования |
.akvс линиями name=value |
Сочетание с @env() |
Supported. |
Отзыв
Используйте @akv() для разрешения секретов из Azure Key Vault. Настройте политики повторных попыток для надежности и используйте .akv файлы для имитации секретов в разработке. Это позволяет избегать попадания конфиденциальных значений в файлы конфигурации, поддерживая согласованные рабочие процессы разработки и производственной среды.