Bagikan melalui


Bekerja dengan kunci akses di Azure Functions

Azure Functions memungkinkan Anda menggunakan kunci rahasia untuk mempersulit akses titik akhir fungsi Anda. Artikel ini menjelaskan berbagai jenis kunci akses yang didukung oleh 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:

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 pengguna yang ditentukan function Mengizinkan akses hanya ke titik akhir fungsi tertentu.
Host default atau pengguna yang ditentukan 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. Kunci ini tidak dapat dicabut. 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.
Log 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.
Kunci sistem hanya dapat dibuat oleh ekstensi tertentu, dan Anda tidak dapat secara eksplisit mengatur nilainya. Seperti kunci lainnya, Anda dapat menghasilkan nilai baru untuk kunci dari portal atau dengan menggunakan API utama.

Setiap kunci diberi nama untuk referensi, dan 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 any Fungsi atau host
admin Memanggil titik akhir Aplikasi Fungsi Master-saja
Memanggil API ekstensi Durable Task Aplikasi fungsi* Sistem
Memanggil Webhook khusus ekstensi (internal) Aplikasi fungsi* sistem

*Cakupan ditentukan oleh ekstensi.

Persyaratan utama

Di Functions, kunci akses dihasilkan secara acak array 32 byte yang dikodekan sebagai string base-64 url-safe. 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 itu dihasilkan oleh Azure Functions. 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 Brankas kunci yang diatur digunakan AzureWebJobsSecretStorageKeyVaultUri 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.

Saat 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 Ditetapkan sistem Ditetapkan pengguna Pendaftaran aplikasi
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Menggunakan kunci akses

Fungsi HTTP yang dipicu secara umum dapat dipanggil dengan menggunakan URL dengan format: https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Ketika tingkat otorisasi fungsi tertentu ditetapkan 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 titik akhir admin menggunakan functionsRuntimeAdminIsolationEnabled properti situs.

Dapatkan fungsi kunci akses 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.

  1. Masuk ke portal Microsoft Azure, lalu cari dan pilih Aplikasi Fungsi.

  2. Pilih aplikasi fungsi yang ingin Anda kerjakan.

  3. Di panel 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 Tombol fungsi dari fungsi tertentu yang dipicu HTTP.

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:

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.

  1. Masuk ke portal Microsoft Azure, lalu cari dan pilih Aplikasi Fungsi.

  2. Pilih aplikasi fungsi yang ingin Anda kerjakan.

  3. Di panel 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.

  4. Pilih Perbarui nilai kunci di samping kunci yang ingin Anda perbarui, lalu pilih Perbarui dan simpan.

Anda juga dapat memperbarui kunci fungsi di tab Tombol fungsi dari fungsi tertentu yang dipicu 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.