Megosztás a következőn keresztül:


Használja az @akv() jelölőt az Azure Key Vault titkok helyettesítéséhez a Data API Builderben.

A Data API Builder (DAB) lehetővé teszi, hogy olyan titkokat, mint például az adatbázis-kapcsolati sztringeket, kihagyja a futtatókörnyezet konfigurációs fájljából azáltal, hogy betöltéskor helyettesíti őket. Eredetileg ez a @env() környezeti változók függvényével történt. Az 1.6-os verziótól kezdve a DAB a függvényen keresztül támogatja az Azure Key Vaultot @akv() .

Mit csinál @akv()?

Az Azure Key Vaultban tárolt titkos kódra közvetlenül a konfigurációs JSON-ban hivatkozhat:

{
  "data-source": {
    "connection-string": "@akv('my-connection-secret')"
  }
}

Konfiguráció betöltésekor a DAB feloldja a helyőrzőt, és lecseréli a titkos adat értékére, hasonlóan ahhoz, ahogyan a @env('VAR_NAME') működik. Ha a titkos kód nem kérhető le, a konfiguráció betöltése meghiúsul. A hibák közé tartoznak a hiányzó titkos kódok vagy az engedélyezési hibák.

Konfigurációs struktúra

Adja hozzá a azure-key-vault szakaszt a konfiguráció gyökérszintjén:

{
  "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
    }
  }
}

Tulajdonságok

Ingatlan Kötelező Típus Description
endpoint Igen , ha a Key Vaultot használja karakterlánc A Key Vault teljes végpontJÁNAK URL-címe
retry-policy Nem objektum Felülbírálja az újrapróbálkozási viselkedést a Key Vault hívása során

Szabályzatobjektum újrapróbálkozása

szakterület Alapértelmezett Jegyzetek
mode exponential Engedélyezett értékek: fixed vagy exponential
max-count 3 0-nál nagyobbnak kell lennie
delay-seconds 1 0-nál nagyobbnak kell lennie
max-delay-seconds 60 0-nál nagyobbnak kell lennie, az exponenciális visszalépés felső határa
network-timeout-seconds 60 0-nál nagyobbnak kell lennie

Újrapróbálkozási szabályzat módok

Üzemmód Magatartás
fixed Vár egy állandó időtartamot delay-seconds a próbálkozások között, amíg max-count
exponential Megduplázza a késleltetést, amíg el nem éri max-delay-seconds vagy max-count

Helyi fejlesztés: .akv fájlok

Az Azure Key Vault nélküli fejlesztéshez használjon egy .akv fájlt a titkos kódok szimulálásához. A formátum soronként van:name=value

my-connection-secret=Server=.;Database=AppDb;User Id=app;Password=local-dev;
api-key=dev-api-key-123

Megjegyzés:

Ha helyi .akv fájlt ad meg a fejlesztéshez, annak bejegyzései a titkos név kereséseinek kielégítésére @akv(szolgálnak anélkül, hogy hálózati hívást kezdeményezne az Azure Key Vaultba.

Iránymutatások:

  • Ne legyen .akv a verziókezelésben
  • A titkos neveknek meg kell egyezniük a @akv('name')-ben használt nevekkel.

Azure Key Vault-beállítások hozzáadása parancssori felülettel

A Key Vault beállításait a parancssori felülettel konfigurálhatja:

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

Érvényesítés:

  • "Újrapróbálkozási szabályzat mezők végpont nélkül érvényesítési hibát okoznak"
  • A választható újrapróbálkozások paramétereinek pozitív egész számoknak kell lenniük

A @akv() használata a konfigurációban

Alapszintű helyettesítés

{
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@akv('primary-sql-connection')"
  }
}

Keverve a @env()

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@akv('sql-connection')"
  },
  "runtime": {
    "rest": { "enabled": true }
  }
}

Megjegyzés:

Indításkor a @env() helyettesítések a @akv() helyettesítések előtt történnek.

Tárolt eljárás paraméterei

{
  "entities": {
    "RunJob": {
      "source": {
        "object": "dbo.RunJob",
        "type": "stored-procedure",
        "parameters": {
          "apiKey": "@akv('job-runner-apikey')"
        }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "execute" ] }
      ]
    }
  }
}

Hibaelhárítás

Tünet Steps
A titkos kód nem található Ellenőrizze a nevet, a tárolóban való létezést és az azonosító engedélyeket
Érvénytelen újrapróbálkozési érték Pozitív egész szám használata vagy eltávolítás az alapértelmezett értékek használatához
A konfiguráció frissítése sikertelen Ellenőrzési hibák naplóinak ellenőrzése
@akv() nincs lecserélve Ellenőrizze, hogy a végpont, a titkosítási adatok neve, és a titkosítás feloldása engedélyezve van.
401/403 hibakód a Key Vaultból Identitás-hozzárendelés és engedélyek ellenőrzése

Teljes példakonfiguráció

{
  "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" ] }
      ]
    }
  }
}

Példa .akv fájl:

primary-sql-connection=Server=localhost;Database=BooksDb;User Id=app;Password=password;

Fontos

Ne véglegesítse a titkokat tartalmazó .akv fájlokat. |

Gyorsreferencia

Termék Összefoglalás
Szemantika @akv('secret-name')
Végpont szükséges Igen
Szimulációs fájl .akvvonalakkal name=value
Keverés a @env() Supported.

Felülvizsgálat

Az Azure Key Vault titkos kulcsának feloldására használható @akv() . Konfiguráljon újrapróbálkozési szabályzatokat a megbízhatóság érdekében, és használjon .akv fájlokat a fejlesztés titkos kulcsainak szimulálására. Ez a konfigurációs fájlokból távol tartja a bizalmas értékeket, miközben támogatja a konzisztens fejlesztési és éles munkafolyamatokat.