Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Data API Builder (DAB) kan du hålla hemligheter, till exempel databasanslutningssträngar, borta från körningskonfigurationsfilen genom att ersätta dem vid inläsningen. Ursprungligen gjordes detta med @env() funktionen för miljövariabler. Från och med version 1.6 lägger DAB till stöd för Azure Key Vault via @akv() funktionen.
Vad @akv() gör
Du kan referera till en hemlighet som lagras i Azure Key Vault direkt i JSON-konfigurationen:
{
"data-source": {
"connection-string": "@akv('my-connection-secret')"
}
}
Vid inläsning av konfigurationen löser DAB platshållaren och ersätter den med hemlighetens värde, liknande @env('VAR_NAME'). Om hemligheten inte kan hämtas misslyckas konfigurationsinläsningen. Fel inkluderar saknade hemligheter eller auktoriseringsfel.
Konfigurationsstruktur
Lägg till avsnittet azure-key-vault på rotnivån för konfigurationen:
{
"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
}
}
}
Egenskaper
| Fastighet | Krävs | Typ | Description |
|---|---|---|---|
endpoint |
Ja om du använder Key Vault | snöre | Den fullständiga Key Vault-slutpunkts-URL:en |
retry-policy |
Nej | objekt | Åsidosätter återförsöksbeteende när du anropar Key Vault |
Återförsöks-princip-objekt
| Fält | Förinställning | Noteringar |
|---|---|---|
mode |
exponential |
Tillåtna värden: fixed eller exponential |
max-count |
3 | Måste vara större än 0 |
delay-seconds |
1 | Måste vara större än 0 |
max-delay-seconds |
60 | Måste vara större än 0, gräns för exponentiell återställning |
network-timeout-seconds |
60 | Måste vara större än 0 |
Återförsökspolicy-lägen
| Mode | Beteende |
|---|---|
fixed |
Väntar ett konstant tidsintervall delay-seconds mellan försök tills max-count |
exponential |
Dubblar fördröjningen tills den når max-delay-seconds eller max-count |
Lokal utveckling: .akv-filer
För utveckling utan ett Azure Key Vault använder du en .akv fil för att simulera hemligheter. Formatet är name=value per rad:
my-connection-secret=Server=.;Database=AppDb;User Id=app;Password=local-dev;
api-key=dev-api-key-123
Anmärkning
Om du anger en lokal .akv-fil för utveckling används dess poster för att tillgodose @akv("secret-name")-sökningar utan att göra en nätverksförfrågan till Azure Key Vault.
Riktlinjer:
- Håll
.akvborta från källkontroll - Hemliga namn måste matcha namnen som används i
@akv('name')
Lägga till Azure Key Vault-inställningar med CLI
Du kan konfigurera Key Vault-inställningar med hjälp av CLI:
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
Validering:
- Omprövningsprincipfält utan slutpunkt orsakar valideringsfel
- Valfria återförsöksparametrar måste vara positiva heltal
Använda @akv() i konfigurationen
Grundläggande substitution
{
"data-source": {
"database-type": "mssql",
"connection-string": "@akv('primary-sql-connection')"
}
}
Blandat med @env()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('sql-connection')"
},
"runtime": {
"rest": { "enabled": true }
}
}
Anmärkning
Vid start av systemet @env() sker substitutioner före @akv() substitutioner.
Parametrar för lagrad procedur
{
"entities": {
"RunJob": {
"source": {
"object": "dbo.RunJob",
"type": "stored-procedure",
"parameters": {
"apiKey": "@akv('job-runner-apikey')"
}
},
"permissions": [
{ "role": "anonymous", "actions": [ "execute" ] }
]
}
}
}
Felsökning
| Symtom | Steg |
|---|---|
| Hemligheten hittades inte | Verifiera namn, existens i valv och identitetsbehörigheter |
| Ogiltigt återförsöksvärde | Använd ett positivt heltal eller ta bort för att använda standardvärden |
| Konfigurationsuppdateringen misslyckas | Kontrollera om det finns verifieringsfel i loggarna |
@akv() inte ersatt |
Bekräfta slutpunkt, hemligt namn och att hemlig lösning är aktiverat |
| 401/403 från Key Vault | Kontrollera identitetstilldelning och behörigheter |
Fullständig exempelkonfiguration
{
"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" ] }
]
}
}
}
Exempelfil .akv :
primary-sql-connection=Server=localhost;Database=BooksDb;User Id=app;Password=password;
Viktigt!
Lämna inte in .akv filer som innehåller säkra uppgifter. |
Snabbreferens
| Objekt | Sammanfattning |
|---|---|
| Syntax | @akv('secret-name') |
| Slutpunkt krävs | Yes |
| Simuleringsfil |
.akv med name=value linjer |
Blanda med @env() |
Stöds. |
Review
Använd @akv() för att lösa hemligheter från Azure Key Vault. Konfigurera återförsöksprinciper för tillförlitlighet och använd .akv filer för att simulera hemligheter under utveckling. Detta håller känsliga värden borta från konfigurationsfiler och stöder konsekventa arbetsflöden för utveckling och produktion.