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.
Kunci akses Functions adalah token autentikasi yang digunakan runtime Functions untuk mengamankan titik akhir yang dipicu HTTP. Saat pemanggil memanggil fungsi HTTP, pemanggil menyertakan kunci sebagai ?code= parameter kueri atau x-functions-key header. Runtime memvalidasi kunci dan mengotorisasi atau menolak permintaan.
Kunci akses tidak sama dengan rahasia tingkat aplikasi. Kunci akses melindungi siapa yang dapat memanggil fungsi Anda, sementara rahasia tingkat aplikasi melindungi apa yang terhubung dengan fungsi Anda.
Kapan menggunakan kunci akses
| Skenario | Mengapa kunci akses cocok |
|---|---|
| Webhook pihak ketiga | Penyedia seperti GitHub, Stripe, atau Twilio memanggil fungsi Anda melalui URL dan rahasia. Akses slot kunci langsung ke pola yang ?code= mereka harapkan. |
| Panggilan antar layanan | Layanan backend A memanggil Fungsi B melalui HTTP. Kunci bersama lebih sederhana daripada menyiapkan pendaftaran aplikasi Microsoft Entra untuk panggilan internal saja. |
| Langganan Event Grid | Event Grid memvalidasi dan memanggil titik akhir fungsi Anda menggunakan kunci sistem yang dikelola platform secara otomatis. |
| Autentikasi dev/test | Selama pengembangan, Anda memerlukan autentikasi dasar tanpa mengonfigurasi OAuth/OIDC penuh. Kunci akses menyediakan gerbang otentikasi yang efisien tanpa memerlukan konfigurasi identitas. |
| Kompatibilitas migrasi | Aplikasi Azure Functions yang ada sudah menggunakan kunci akses. Saat bermigrasi ke Container Apps, Anda memerlukan autentikasi berbasis kunci yang sama untuk mencegah gangguan pada pemanggil. |
Note
Untuk API yang menghadap pengguna, beban kerja zero-trust, atau skenario otorisasi per pengguna, gunakan Microsoft Entra ID / OAuth 2.0 alih-alih kunci akses. Kunci akses adalah rahasia yang dibagikan tanpa catatan audit tingkat identitas.
Prasyarat
- Sebuah akun Azure dengan langganan aktif. Buat akun secara gratis.
- Azure CLI versi 2.40.0 atau yang lebih tinggi.
- Aplikasi Azure Functions yang ada di Container Apps atau izin untuk membuatnya.
Jenis kunci akses
Runtime Functions mengelola empat jenis kunci:
| Jenis Kunci | Scope | Kegunaan |
|---|---|---|
Kunci master (_master) |
Seluruh fungsi aplikasi | Akses tingkat admin ke semua fungsi dan /admin/* titik akhir manajemen. Tidak dapat dicabut, hanya diputar. |
Kunci host (default + kustomisasi) |
Seluruh fungsi aplikasi | Otorisasi panggilan ke fungsi apa pun yang dipicu HTTP di aplikasi. |
Tombol fungsi (default + kustom) |
Fungsi tunggal | Otorisasi panggilan ke satu fungsi tertentu. Menyediakan kontrol yang lebih terperinci daripada kunci host. |
| Kunci sistem | Titik akhir ekstensi | Digunakan oleh ekstensi platform seperti langganan webhook Event Grid dan Durable Functions. Dikelola secara otomatis. |
Pilih backend penyimpanan
Atur variabel lingkungan AzureWebJobsSecretStorageType untuk mengontrol tempat runtime menyimpan kunci akses. Azure Container Apps mendukung tiga backend tingkat produksi.
| Backend | Nilai Setelan | Membuat kunci secara otomatis | Dependensi eksternal | Paling cocok untuk |
|---|---|---|---|---|
| Penyimpanan rahasia Container Apps | containerapps |
Tidak - Anda mengatur kunci sebagai rahasia dalam Container Apps | Tidak ada | Sebagian besar beban kerja (Disarankan) |
| Azure Key Vault | keyvault |
Tidak - buat pemicu secara manual | instansi Key Vault | Tata kelola terpusat, audit kepatuhan |
| Azure Blob Storage | blob |
Yes | Akun penyimpanan | Aplikasi warisan atau akun yang AzureWebJobsStorage sudah ada |
Ingat pertimbangan backend berikut:
- Runtime tidak secara otomatis memilih penyimpanan rahasia Container Apps. Jika Anda tidak mengatur
AzureWebJobsSecretStorageTypeatau mengaturnya ke nilai yang tidak dikenali, host Functions akan menggunakan Blob Storage saatAzureWebJobsStoragetersedia. - Tetap dikonfigurasi
AzureWebJobsStorageuntuk pemeriksaan kesehatan penyimpanan dan fitur yang bergantung pada penyimpanan. - Jangan atur
AzureWebJobsSecretStorageTypekefiles. Sistem file Container Apps bersifat sementara, sehingga kunci yang disimpan bersama backend ini hilang ketika aplikasi berskala ke nol, memulai ulang, atau melakukan revisi baru.
Pola nama rahasia
Konvensi penamaan untuk kunci yang disimpan tergantung pada backend penyimpanan.
Penyimpanan rahasia Container Apps menggunakan konvensi yang berbeda. Fungsi host membaca kunci dari file yang dipasang pada volume di /run/secrets/functions-keys/. Setiap file menggunakan nama dotted (misalnya, host.master), tetapi nama rahasia Container Apps hanya mengizinkan karakter alfanumerik huruf kecil dan tanda hubung. Saat memasang volume tersembunyi, Anda harus secara eksplisit menetapkan bidang path ke nama file bertitik yang diharapkan oleh host Functions (misalnya, secretRef: host-master → path: host.master). Platform tidak melakukan terjemahan nama otomatis apa pun.
| Jenis Kunci | Nama rahasia Container Apps (garis hubung) | Pemasangan volume path (titik) |
|---|---|---|
| Kunci master | host-master |
host.master |
| Kunci host default | host-function-default |
host.function.default |
| Kunci host kustom | host-function-<name> |
host.function.<name> |
| Kunci fungsi default untuk fungsi tertentu | functions-<functionname>-default |
functions.<functionName>.default |
| Kunci fungsi kustom untuk fungsi tertentu | functions-<functionname>-<keyname> |
functions.<functionName>.<keyName> |
| Kunci sistem | host-systemkey-<extension> |
host.systemKey.<extension> |
Petunjuk / Saran
Saat memecahkan masalah, cari pola ini di penyimpanan backend Anda untuk memverifikasi bahwa kunci dikonfigurasi dengan benar.
Mengonfigurasi penyimpanan rahasia Container Apps
Tempat penyimpanan rahasia Container Apps adalah backend yang direkomendasikan. Kunci tetap berada dalam platform Container Apps dan tidak memerlukan penyimpanan eksternal atau Key Vault. Azure Resource Manager aktivitas log melacak perubahan pada rahasia dan variabel lingkungan.
Dengan backend ini, host Functions membaca kunci dari file yang dipasang volume di /run/secrets/functions-keys/. Host tidak menghasilkan kunci secara otomatis. Anda harus membuat setiap kunci sebagai rahasia Aplikasi Kontainer, dan platform memasangnya sebagai file untuk dibaca host.
Important
Penyimpanan rahasia Container Apps bersifat hanya-dibaca dari perspektif host. Host membaca file kunci yang dipasang tetapi tidak pernah menulis ke file tersebut. Jika kunci yang diperlukan hilang, host tidak membuatnya secara otomatis.
Langkah 1: Atur jenis penyimpanan
Buka aplikasi kontainer Functions Anda di portal Azure.
Di bawah Pengaturan, pilih Variabel lingkungan.
Pilih Tambahkan, dan masukkan nilai berikut:
Property Nilai Name AzureWebJobsSecretStorageTypeNilai containerappsPilih Simpan, lalu pilih Terapkan untuk mengonfirmasi perubahan.
Langkah 2: Membuat dan menyimpan rahasia kunci akses
Buat nilai kunci dan simpan sebagai rahasia Container Apps. Minimal, Anda memerlukan kunci master dan kunci host default.
Di aplikasi kontainer Functions Anda, di bawah Pengaturan, pilih Rahasia.
Pilih Tambahkan dan masukkan nilai berikut:
Property Nilai Name host-masterType Rahasia Aplikasi Kontainer Nilai Nilai kunci yang dihasilkan secara acak. Pilih Tambahkan.
Ulangi untuk
host-function-defaultdengan nilai lain yang dihasilkan secara acak.Untuk menambahkan kunci per fungsi, tambahkan rahasia bernama
functions-<functionname>-default(semua huruf kecil).
Note
Nama rahasia Container Apps hanya mengizinkan karakter alfanumerik huruf kecil dan tanda hubung. Anda harus secara eksplisit mengatur bidang path dalam konfigurasi volume ke nama file bertitik yang diharapkan oleh host Functions (misalnya, secretRef: host-master → path: host.master). Tanpa instruksi eksplisit path, file pada disk mempertahankan nama berformat garis dan host Fungsi tidak akan menemukan kunci.
Langkah 3: Mengonfigurasi penyandian volume
Pasang rahasia sebagai file di /run/secrets/functions-keys/.
Di aplikasi kontainer Functions Anda, di bawah Aplikasi, pilih Revisi dan replika.
Pilih Buat revisi baru.
Di tab Skala dan volume , di bawah Volume, pilih Tambahkan.
Masukkan nilai berikut:
Property Nilai jenis Volume Rahasia Name functions-keysUntuk setiap secret, atur bidang Jalur ke nama file yang terdapat tanda titik yang diharapkan oleh host Functions (misalnya, atur
host-masterke jalurhost.master, danhost-function-defaultke jalurhost.function.default).Pilih Tambahkan.
Di tab Kontainer , pilih kontainer Anda lalu pilih Edit.
Pilih tab Pemasangan volume dan pilih Tambahkan.
Masukkan nilai berikut:
Property Nilai Nama volume functions-keysJalur penempatan /run/secrets/functions-keysPilih Simpan, lalu pilih Buat untuk menyebarkan revisi baru.
Langkah 4: Verifikasi
Setelah aplikasi dimulai ulang, konfirmasikan bahwa kunci berfungsi:
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
Anda juga dapat memeriksa log aplikasi untuk pesan Resolved secret storage provider ContainerAppsSecretsRepository, yang mengonfirmasi bahwa host menggunakan penyimpanan rahasia Container Apps.
Putar kunci
Untuk memutar kunci, perbarui rahasia Container Apps dan mulai ulang aplikasi:
NEW_KEY=$(openssl rand -hex 32)
az containerapp secret set \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--secrets "host-function-default=$NEW_KEY"
az containerapp revision restart \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--revision "<REVISION_NAME>"
Note
Semua replika berbagi rahasia yang dipasang sama. Setelah menghidupkan ulang, setiap replika mengambil nilai kunci yang diperbarui.
Konfigurasikan Key Vault atau Blob Storage sebagai store
Backend Key Vault menyimpan kunci akses sebagai rahasia Key Vault, menyediakan audit tingkat perusahaan dan kontrol akses.
Buat Key Vault (jika Anda tidak memilikinya):
az keyvault create \ --name "<KEYVAULT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --location "<LOCATION>"Aktifkan identitas terkelola pada aplikasi kontainer Anda (jika belum diaktifkan):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedBerikan peran Key Vault Secrets Officer ke identitas terkelola. Runtime memerlukan akses baca dan tulis untuk membuat dan mengelola kunci:
PRINCIPAL_ID=$(az containerapp show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --query identity.principalId \ --output tsv) KEYVAULT_ID=$(az keyvault show \ --name "<KEYVAULT_NAME>" \ --query id \ --output tsv) az role assignment create \ --role "Key Vault Secrets Officer" \ --assignee "$PRINCIPAL_ID" \ --scope "$KEYVAULT_ID"Atur jenis penyimpanan dan URI Key Vault:
Untuk identitas yang ditetapkan sistem:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net"Untuk identitas yang ditetapkan pengguna, atur juga ID klien:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net" \ "AzureWebJobsSecretStorageKeyVaultClientId=<USER_ASSIGNED_IDENTITY_CLIENT_ID>"Picu pembuatan kunci dengan mencantumkan kunci:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Mengelola kunci akses
Terlepas dari backend, gunakan perintah berikut untuk mencantumkan, membuat, dan menghapus kunci akses:
Note
Pastikan setidaknya satu replika berjalan untuk melakukan operasi manajemen kunci ini.
Daftar semua kunci host:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKeyDaftarkan kunci master:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type masterKeyBuat atau timpa kunci host khusus:
az containerapp function keys set \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-value "<YOUR_KEY_VALUE>" \ --key-type hostKeyTampilkan kunci tertentu:
az containerapp function keys show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "<KEY_NAME>" \ --key-type hostKeyHapus kunci host:
az containerapp function keys delete \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-type hostKey
Memanggil fungsi dengan kunci akses
Masukkan kunci sebagai parameter kueri atau header permintaan.
# Query parameter
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>?code=<HOST_KEY>"
# Header
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>" \
-H "x-functions-key: <HOST_KEY>"