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.
Azure Functions memungkinkan Anda menggunakan kunci rahasia untuk mempersulit akses titik akhir fungsi Anda. Artikel ini menjelaskan jenis kunci akses yang didukung Functions, dan cara bekerja dengan kunci akses.
Meskipun kunci akses menyediakan beberapa mitigasi terhadap akses yang tidak diinginkan, Anda harus mempertimbangkan opsi lain untuk mengamankan titik akhir HTTP dalam produksi. Misalnya, ini bukan praktik yang baik untuk mendistribusikan rahasia bersama di aplikasi publik. Jika fungsi Anda dipanggil dari klien publik, Anda harus mempertimbangkan untuk menerapkan mekanisme keamanan ini atau lainnya:
- Mengaktifkan Autentikasi/Otorisasi App Service
- Menggunakan Azure API Management (APIM) untuk mengautentikasi permintaan
- Menyebarkan aplikasi fungsi Anda ke jaringan virtual
- Meluncurkan aplikasi fungsi Anda dalam isolasi
Kunci akses memberikan dasar untuk otorisasi HTTP dalam fungsi yang dipicu HTTP. Untuk informasi selengkapnya, lihat Tingkat otorisasi.
Memahami kunci
Cakupan kunci akses dan tindakan yang didukungnya bergantung pada jenis kunci akses.
| Jenis Kunci | Nama kunci | Tingkat autentikasi HTTP | Deskripsi |
|---|---|---|---|
| Fungsi |
default atau didefinisikan oleh pengguna |
function |
Mengizinkan akses hanya ke titik akhir fungsi tertentu. |
| Tuan rumah |
default atau didefinisikan oleh pengguna |
function |
Memungkinkan akses ke semua titik akhir fungsi dalam aplikasi fungsi. |
| Manajemen | _master |
admin |
Kunci host khusus yang juga menyediakan akses administratif ke REST API runtime di aplikasi fungsi. Karena kunci master memberikan izin yang ditinggikan di aplikasi fungsi Anda, Anda tidak boleh berbagi kunci ini dengan pihak ketiga atau mendistribusikannya di aplikasi klien asli. |
| Sistem | Tergantung pada ekstensi | N/a | Ekstensi tertentu mungkin memerlukan kunci yang dikelola sistem untuk mengakses titik akhir webhook. Kunci sistem dirancang untuk titik akhir fungsi khusus ekstensi yang dipanggil oleh komponen internal. Misalnya, pemicu Event Grid mengharuskan langganan menggunakan kunci sistem saat memanggil titik akhir pemicu. Durable Functions juga menggunakan kunci sistem untuk memanggil API ekstensi Durable Task. Hanya ekstensi tertentu yang dapat membuat kunci sistem. Anda tidak dapat secara eksplisit mengatur nilainya. Seperti kunci lainnya, Anda dapat menghasilkan nilai baru untuk kunci melalui portal atau dengan menggunakan API kunci. |
Setiap kunci diberi nama untuk referensi. Ada kunci default (bernama default) di tingkat fungsi dan host. Kunci fungsi lebih diprioritaskan daripada kunci host. Ketika dua kunci didefinisikan dengan nama yang sama, kunci fungsi selalu digunakan.
Tabel berikut membandingkan penggunaan untuk berbagai jenis kunci akses:
| Perbuatan | Cakupan | Jenis Kunci |
|---|---|---|
| Menjalankan fungsi | Fungsi spesifik | Fungsi |
| Menjalankan fungsi | Fungsi apa pun | Fungsi atau tuan rumah |
admin Memanggil titik akhir |
Aplikasi Fungsi | Pengguna Tertentu Saja |
| Memanggil API perluasan Durable Task | Aplikasi fungsi* | Sistem |
| Memanggil Webhook khusus untuk ekstensi (internal) | Aplikasi fungsi* | sistem |
*Cakupan ditentukan oleh ekstensi.
Persyaratan utama
Dalam Functions, kunci akses dihasilkan secara acak dalam bentuk array 32-byte yang dikodekan sebagai string base-64 yang aman untuk URL. Meskipun Anda dapat membuat kunci akses Anda sendiri dan menggunakannya dengan Functions, kami sangat menyarankan Agar Anda mengizinkan Functions membuat semua kunci akses untuk Anda.
Kunci akses yang dihasilkan Functions mencakup nilai tanda tangan dan checksum khusus yang menunjukkan jenis kunci akses dan bahwa Azure Functions membuatnya. Memiliki komponen tambahan ini dalam kunci itu sendiri membuatnya jauh lebih mudah untuk menentukan sumber rahasia semacam ini yang terletak selama pemindaian keamanan dan proses otomatis lainnya.
Untuk mengizinkan Functions menghasilkan kunci untuk Anda, jangan berikan kunci value ke API apa pun yang dapat Anda gunakan untuk menghasilkan kunci.
Mengelola penyimpanan kunci
Kunci disimpan sebagai bagian dari aplikasi fungsi Anda di Azure dan dienkripsi saat istirahat. Secara default, kunci disimpan dalam kontainer penyimpanan Blob di akun yang disediakan oleh pengaturan AzureWebJobsStorage. Anda dapat menggunakan AzureWebJobsSecretStorageType pengaturan untuk mengambil alih perilaku default ini dan sebaliknya menyimpan kunci di salah satu lokasi alternatif ini:
| Lokasi | Nilai | Deskripsi |
|---|---|---|
| Akun penyimpanan kedua | blob |
Menyimpan kunci dalam penyimpanan Blob di akun penyimpanan yang berbeda dengan yang digunakan oleh runtime Functions. Akun dan kontainer tertentu yang digunakan ditentukan oleh URL tanda tangan akses bersama (SAS) yang diatur dalam AzureWebJobsSecretStorageSas pengaturan. Anda harus mempertahankan AzureWebJobsSecretStorageSas pengaturan saat URL SAS berubah. |
| Azure Key Vault | keyvault |
Penyetelan Key Vault di AzureWebJobsSecretStorageKeyVaultUri digunakan untuk menyimpan kunci. |
| Sistem file | files |
Kunci dipertahankan pada sistem file lokal, yang merupakan default dalam Functions v1.x. Penyimpanan sistem file tidak disarankan. |
| Rahasia Kubernetes | kubernetes |
Sumber daya yang diatur di AzureWebJobsKubernetesSecretName digunakan untuk menyimpan kunci. Hanya didukung saat aplikasi fungsi Anda disebarkan ke Kubernetes. Azure Functions Core Tools menghasilkan nilai secara otomatis saat Anda menggunakannya untuk menyebarkan aplikasi ke kluster Kubernetes. Rahasia yang tidak dapat diubah tidak didukung. |
| Rahasia Azure Container Apps | ContainerApps |
Kunci disimpan di penyimpanan rahasia Azure Container Apps. Didukung hanya saat aplikasi fungsi Anda disebarkan ke Azure Container Apps. |
Saat Anda menggunakan Key Vault untuk penyimpanan kunci, pengaturan aplikasi yang Anda butuhkan bergantung pada jenis identitas terkelola, baik yang ditetapkan sistem atau ditetapkan pengguna.
| Nama pengaturan | Ditugaskan oleh sistem | Ditetapkan pengguna | Pendaftaran aplikasi |
|---|---|---|---|
| AzureWebJobsSecretStorageKeyVaultUri | ✓ | ✓ | ✓ |
| AzureWebJobsSecretStorageKeyVaultClientId | X | ✓ | ✓ |
| AzureWebJobsSecretStorageKeyVaultClientSecret | X | X | ✓ |
| AzureWebJobsSecretStorageKeyVaultTenantId | X | X | ✓ |
Penting
Rahasia tidak dibatasi pada aplikasi fungsi individual melalui pengaturan AzureWebJobsSecretStorageKeyVaultUri. Jika beberapa aplikasi fungsi dikonfigurasi untuk menggunakan layanan Key Vault yang sama, mereka berbagi rahasia yang sama, yang dapat menyebabkan konflik atau penimpaan kunci. Untuk menghindari perilaku yang tidak diinginkan, kami sarankan Anda menggunakan instans Key Vault terpisah untuk setiap aplikasi fungsi.
Menggunakan kunci akses
Fungsi yang dipicu HTTP umumnya dapat dipanggil dengan menggunakan URL yang menyertakan nama fungsi. Ketika tingkat otorisasi fungsi tertentu ditetapkan sebagai nilai selain anonymous, Anda juga harus memberikan kunci akses dalam permintaan Anda. Kunci akses dapat disediakan di URL menggunakan ?code= string kueri atau di header permintaan (x-functions-key). Untuk informasi selengkapnya, lihat Otorisasi kunci akses.
Untuk mengakses REST API runtime (di bawah /admin/), Anda harus menyediakan kunci master (_master) di x-functions-key header permintaan. Anda dapat menghapus endpoint admin menggunakan functionsRuntimeAdminIsolationEnabled properti situs.
Dapatkan kunci akses fungsi Anda
Anda bisa mendapatkan kunci fungsi dan host secara terprogram dengan menggunakan API Azure Resource Manager ini:
Untuk mempelajari cara memanggil API Azure Resource Manager, lihat "Referensi Azure REST API".
Anda dapat menggunakan metode ini untuk mendapatkan kunci akses tanpa harus menggunakan REST API.
Masuk ke portal Microsoft Azure, lalu cari dan pilih Aplikasi Fungsi.
Pilih aplikasi fungsi yang ingin Anda kerjakan.
Di menu sebelah kiri, perluas Functions, lalu pilih Kunci aplikasi.
Halaman Kunci aplikasi muncul. Pada halaman ini kunci host ditampilkan, yang dapat digunakan untuk mengakses fungsi apa pun di aplikasi. Kunci sistem juga ditampilkan, yang memberi siapa pun akses tingkat administrator ke semua API aplikasi fungsi.
Anda juga dapat mempraktikkan hak istimewa paling sedikit dengan menggunakan kunci untuk fungsi tertentu. Anda bisa mendapatkan kunci khusus fungsi dari tab Kunci Fungsi dari fungsi spesifik yang dipicu oleh HTTP.
Petunjuk / Saran
Anda juga dapat memperoleh kunci akses untuk fungsi Anda dengan menggunakan perintah Azure Functions Core Tools func azure functionapp list-functions dengan opsi --show-keys. Untuk informasi selengkapnya, lihat referensi Azure Functions Core Tools.
Memperbarui atau membuat kunci akses
Saat memperbarui atau membuat nilai kunci akses, Anda harus mendistribusikan ulang nilai kunci yang diperbarui secara manual ke semua klien yang memanggil fungsi Anda.
Anda dapat memperbarui fungsi dan kunci host secara terprogram atau membuat kunci baru dengan menggunakan API Azure Resource Manager ini:
- Membuat atau Memperbarui Rahasia Fungsi
- Membuat atau Memperbarui Slot Rahasia Fungsi
- Membuat atau Memperbarui Rahasia Host
- Membuat atau Memperbarui Slot Rahasia Host
Untuk mempelajari cara memanggil API Azure Resource Manager, lihat "Referensi Azure REST API".
Anda dapat menggunakan metode ini untuk mendapatkan kunci akses tanpa harus membuat panggilan secara manual ke REST API.
Masuk ke portal Microsoft Azure, lalu cari dan pilih Aplikasi Fungsi.
Pilih aplikasi fungsi yang ingin Anda kerjakan.
Di menu sebelah kiri, perluas Functions, lalu pilih Kunci aplikasi.
Halaman Kunci aplikasi muncul. Pada halaman ini kunci host ditampilkan, yang dapat digunakan untuk mengakses fungsi apa pun di aplikasi. Kunci sistem juga ditampilkan, yang memberi siapa pun akses tingkat administrator ke semua API aplikasi fungsi.
Pilih Perbarui nilai kunci di samping kunci yang ingin Anda perbarui, lalu pilih Perbarui dan simpan.
Anda juga dapat memperbarui tombol fungsi pada tab Tombol fungsi dari fungsi spesifik yang dipicu oleh HTTP.
Menghapus kunci akses
Anda dapat menghapus kunci fungsi dan host secara terprogram dengan menggunakan API Azure Resource Manager ini:
Untuk mempelajari cara memanggil API Azure Resource Manager, lihat "Referensi Azure REST API".