Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyusun API Data (DAB) memungkinkan Anda menyimpan rahasia, seperti string koneksi database, dari file konfigurasi runtime dengan menggantinya pada waktu pemuatan. Awalnya ini dilakukan dengan @env() fungsi untuk variabel lingkungan. Dimulai dengan versi 1.6, DAB menambahkan dukungan untuk Azure Key Vault melalui @akv() fungsi .
Apa yang @akv() dilakukan
Anda dapat mereferensikan rahasia yang disimpan di Azure Key Vault langsung dalam konfigurasi JSON:
{
"data-source": {
"connection-string": "@akv('my-connection-secret')"
}
}
Pada saat pemuatan konfigurasi, DAB menyelesaikan placeholder dan menggantinya dengan nilai rahasia, mirip dengan cara kerja @env('VAR_NAME'). Jika rahasia tidak dapat diambil, pemuatan konfigurasi gagal. Kesalahan termasuk hilangnya rahasia atau kegagalan otorisasi.
Struktur konfigurasi
Tambahkan bagian azure-key-vault di tingkat akar konfigurasi Anda:
{
"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
}
}
}
Karakteristik
| Harta benda | Diperlukan | Tipe | Description |
|---|---|---|---|
endpoint |
Ya jika menggunakan Key Vault | string | URL lengkap titik akhir Key Vault |
retry-policy |
Tidak. | objek | Mengambil alih perilaku coba lagi saat memanggil Key Vault |
Objek kebijakan coba lagi
| Bidang | Bawaan | Catatan |
|---|---|---|
mode |
exponential |
Nilai yang diizinkan: fixed atau exponential |
max-count |
3 | Harus lebih besar dari 0 |
delay-seconds |
1 | Harus lebih besar dari 0 |
max-delay-seconds |
60 | Harus lebih besar dari 0, batas maksimum untuk mundur eksponensial |
network-timeout-seconds |
60 | Harus lebih besar dari 0 |
Mode kebijakan coba lagi
| Pengaturan | Perilaku |
|---|---|
fixed |
Menunggu waktu tetap delay-seconds antara percobaan hingga max-count |
exponential |
Menggandakan penundaan hingga mencapai max-delay-seconds atau max-count |
Pengembangan lokal: File .akv
Untuk pengembangan tanpa Azure Key Vault, gunakan .akv file untuk mensimulasikan rahasia. Format adalah name=value per baris:
my-connection-secret=Server=.;Database=AppDb;User Id=app;Password=local-dev;
api-key=dev-api-key-123
Nota
Jika Anda menyediakan file lokal .akv untuk pengembangan, entrinya digunakan untuk memenuhi @akv(pencarian 'nama rahasia') tanpa melakukan panggilan jaringan ke Azure Key Vault.
Pedoman:
- Jauhkan
.akvdari kontrol sumber - Nama rahasia harus cocok dengan nama yang digunakan di
@akv('name')
Menambahkan pengaturan Azure Key Vault dengan CLI
Anda dapat mengonfigurasi pengaturan Key Vault menggunakan 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
Validasi:
- Bidang kebijakan pengulangan tanpa endpoint menyebabkan kegagalan validasi.
- Parameter coba lagi opsional harus bilangan bulat positif
Menggunakan @akv() dalam konfigurasi
Substitusi dasar
{
"data-source": {
"database-type": "mssql",
"connection-string": "@akv('primary-sql-connection')"
}
}
Dicampur dengan @env()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('sql-connection')"
},
"runtime": {
"rest": { "enabled": true }
}
}
Nota
Saat startup, @env() substitusi terjadi sebelum @akv() substitusi.
Parameter prosedur tersimpan
{
"entities": {
"RunJob": {
"source": {
"object": "dbo.RunJob",
"type": "stored-procedure",
"parameters": {
"apiKey": "@akv('job-runner-apikey')"
}
},
"permissions": [
{ "role": "anonymous", "actions": [ "execute" ] }
]
}
}
}
Troubleshooting
| Gejala | Steps |
|---|---|
| Rahasia tidak ditemukan | Memverifikasi nama, keberadaan di brankas, dan izin-izin identitas |
| Nilai coba lagi tidak valid | Gunakan bilangan bulat positif atau hapus untuk menggunakan default |
| Pembaruan konfigurasi gagal | Periksa log untuk kesalahan validasi |
@akv() tidak diganti |
Mengonfirmasi titik akhir, nama rahasia, dan resolusi rahasia tersebut diaktifkan |
| 401/403 dari Key Vault | Memeriksa penetapan identitas dan izin |
Konfigurasi contoh lengkap
{
"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" ] }
]
}
}
}
Contoh .akv file:
primary-sql-connection=Server=localhost;Database=BooksDb;User Id=app;Password=password;
Penting
Jangan memasukkan .akv file yang berisi rahasia. |
Referensi cepat
| Item | Ringkasan |
|---|---|
| Syntax | @akv('secret-name') |
| Titik akhir diperlukan | Yes |
| File simulasi |
.akv dengan name=value baris |
Mencampur dengan @env() |
Supported. |
Tinjauan
Gunakan @akv() untuk mengatasi rahasia dari Azure Key Vault. Konfigurasikan kebijakan pengulangan untuk keandalan, dan gunakan .akv file untuk mensimulasikan rahasia dalam pengembangan. Ini menjaga agar nilai sensitif tidak dimasukkan ke dalam file konfigurasi sambil mendukung alur kerja pengembangan dan produksi yang konsisten.