Tutorial: Membuat aplikasi fungsi yang terhubung ke layanan Azure menggunakan identitas, bukan rahasia
Tutorial ini menunjukkan kepada Anda cara mengonfigurasi aplikasi fungsi menggunakan identitas Microsoft Entra alih-alih rahasia atau string koneksi, jika memungkinkan. Menggunakan identitas membantu Anda menghindari kebocoran rahasia sensitif secara tidak sengaja dan dapat memberikan visibilitas yang lebih baik tentang cara data diakses. Untuk mempelajari selengkapnya tentang koneksi berbasis identitas, lihat mengonfigurasi koneksi berbasis identitas.
Meski prosedur yang ditampilkan umumnya berfungsi untuk semua bahasa, saat ini tutorial ini secara khusus mendukung fungsi pustaka kelas C # di Windows.
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat aplikasi fungsi di Azure menggunakan templat ARM
- Mengaktifkan identitas terkelola yang ditetapkan sistem dan yang ditetapkan pengguna di aplikasi fungsi
- Membuat penetapan peran yang memberikan izin ke sumber daya lain
- Memindahkan rahasia yang tidak dapat diganti dengan identitas ke Azure Key Vault
- Mengonfigurasi aplikasi untuk terhubung ke penyimpanan host default menggunakan identitas terkelola
Setelah Anda menyelesaikan tutorial ini, Anda harus menyelesaikan tutorial tindak lanjut yang menunjukkan cara [menggunakan koneksi berbasis identitas alih-alih rahasia dengan pemicu dan pengikatan].
Prasyarat
Akun Azure dengan langganan aktif. Buat akun secara gratis.
Azure Functions Core Tools versi 4.x.
Mengapa menggunakan identitas?
Mengelola rahasia dan kredensial adalah tantangan umum bagi tim dengan berbagai ukuran. Rahasia perlu diamankan terhadap pencurian atau pengungkapan yang tidak disengaja, dan mungkin perlu diputar secara berkala. Banyak layanan Azure memungkinkan Anda menggunakan identitas di ID Microsoft Entra untuk mengautentikasi klien dan memeriksa izin, yang dapat dimodifikasi dan dicabut dengan cepat. Melakukannya memungkinkan kontrol yang lebih besar atas keamanan aplikasi dengan overhead operasional yang lebih sedikit. Identitas bisa menjadi pengguna manusia, seperti pengembang aplikasi, atau aplikasi yang berjalan di Azure dengan identitas terkelola.
Karena beberapa layanan tidak mendukung autentikasi Microsoft Entra, aplikasi Anda mungkin masih memerlukan rahasia dalam kasus tertentu. Namun, rahasia ini dapat disimpan di Azure Key Vault, yang membantu menyederhanakan siklus hidup manajemen untuk rahasia Anda. Akses ke brankas kunci juga dikendalikan dengan identitas.
Dengan memahami cara menggunakan identitas alih-alih rahasia ketika Anda bisa, dan untuk menggunakan Key Vault saat tidak dapat, Anda mengurangi risiko, mengurangi overhead operasional, dan umumnya meningkatkan postur keamanan untuk aplikasi Anda.
Membuat aplikasi fungsi yang menggunakan Key Vault untuk rahasia yang diperlukan
Azure Files adalah contoh layanan yang belum mendukung autentikasi Microsoft Entra untuk berbagi file Blok Pesan Server (SMB). Azure Files adalah sistem file default untuk penyebaran Windows pada paket Premium dan Konsumsi. Meskipun kita dapat menghapus Azure Files sepenuhnya, melakukannya memperkenalkan batasan yang mungkin tidak Anda inginkan. Sebagai gantinya, Anda memindahkan string koneksi Azure Files ke Azure Key Vault. Dengan begitu dikelola secara terpusat, dengan akses yang dikontrol oleh identitas.
Membuat Azure Key Vault
Pertama, Anda memerlukan brankas kunci untuk menyimpan rahasia. Anda mengonfigurasinya untuk menggunakan kontrol akses berbasis peran Azure (RBAC) untuk menentukan siapa yang dapat membaca rahasia dari brankas.
Di portal Microsoft Azure, pilih Buat sumber daya(+).
Pada halaman Buat sumber daya, pilih Keamanan>Brankas Kunci.
Di halaman Dasar, gunakan tabel berikut untuk mengonfigurasi brankas kunci.
Opsi Nilai yang disarankan Deskripsi Langganan Langganan Anda Langganan sebagai dasar aplikasi fungsi baru ini dibuat. Grup Sumber Daya myResourceGroup Nama untuk grup sumber daya baru tempat Anda membuat aplikasi fungsi. Nama brankas kunci Nama unik secara global Nama yang mengidentifikasi brankas kunci baru. Nama vault hanya boleh berisi karakter alfanumerik dan tanda hubung dan tidak dapat dimulai dengan angka. Tingkatan harga Standard Opsi untuk penagihan. Standar sudah cukup untuk tutorial ini. Wilayah Wilayah pilihan Pilih wilayah di dekat Anda atau di dekat layanan lain yang diakses fungsi Anda. Gunakan pilihan default untuk bagian "Opsi pemulihan".
Catat nama yang Anda gunakan, untuk digunakan nanti.
Pilih Berikutnya: Kebijakan Akses untuk menavigasi ke tab Kebijakan Akses.
Di bawah Model izin, pilih Kontrol akses berbasis peran Azure
Pilih Tinjau + buat. Tinjau konfigurasi, lalu pilih Buat.
Menyiapkan identitas dan izin untuk aplikasi
Untuk menggunakan Azure Key Vault, aplikasi Anda harus memiliki identitas yang dapat diberikan izin untuk membaca rahasia. Aplikasi ini menggunakan identitas yang ditetapkan pengguna sehingga izin dapat disiapkan sebelum aplikasi bahkan dibuat. Untuk informasi selengkapnya tentang identitas terkelola untuk Azure Functions, lihat Cara menggunakan identitas terkelola di Azure Functions.
Di portal Microsoft Azure, pilih Buat sumber daya(+).
Pada halaman Buat sumber daya, pilih Identitas>Identitas Terkelola yang Ditetapkan Pengguna.
Di halaman Dasar, gunakan tabel berikut untuk mengonfigurasi identitas.
Opsi Nilai yang disarankan Deskripsi Langganan Langganan Anda Langganan sebagai dasar aplikasi fungsi baru ini dibuat. Grup Sumber Daya myResourceGroup Nama untuk grup sumber daya baru tempat Anda membuat aplikasi fungsi. Wilayah Wilayah pilihan Pilih wilayah di dekat Anda atau di dekat layanan lain yang diakses fungsi Anda. Nama Nama unik secara global Nama yang mengidentifikasi identitas baru yang ditetapkan pengguna Anda. Pilih Tinjau + buat. Tinjau konfigurasi, lalu pilih Buat.
Setelah dibuat, buka identitas di portal. Pilih Properti, dan catat ID Sumber Daya untuk digunakan nanti.
Pilih Penetapan Peran Azure, dan pilih Tambahkan penetapan peran (Pratinjau).
Di halaman Tambahkan penetapan peran (Pratinjau) , gunakan opsi seperti yang diperlihatkan dalam tabel berikut ini.
Opsi Nilai yang disarankan Deskripsi Cakupan Key Vault Cakupan adalah kumpulan sumber daya yang menerapkan penetapan peran. Cakupan memiliki tingkat yang diwariskan pada tingkat yang lebih rendah. Misalnya, jika Anda memilih cakupan langganan, penetapan peran berlaku untuk semua grup sumber daya dan sumber daya dalam langganan. Langganan Langganan Anda Langganan sebagai dasar aplikasi fungsi baru ini dibuat. Sumber daya Brankas kunci Anda Brankas kunci yang Anda buat sebelumnya. Peran Pengguna Rahasia Key Vault Peran adalah kumpulan izin yang diberikan. Pengguna Rahasia Key Vault memberikan izin untuk identitas guna membaca nilai-nilai rahasia dari brankas. Pilih Simpan. Mungkin diperlukan satu atau dua menit agar peran muncul saat Anda menyegarkan daftar penetapan peran untuk identitas.
Identitas sekarang dapat membaca rahasia yang disimpan di brankas kunci. Kemudian dalam tutorial, Anda menambahkan penetapan peran tambahan untuk tujuan yang berbeda.
Membuat templat untuk membuat aplikasi fungsi
Karena pengalaman portal untuk membuat aplikasi fungsi tidak berinteraksi dengan Azure Key Vault, Anda perlu membuat dan mengedit templat Azure Resource Manager. Anda kemudian dapat menggunakan templat ini untuk membuat aplikasi fungsi merujuk string koneksi Azure Files dari brankas kunci.
Penting
Jangan membuat aplikasi fungsi hingga Anda selesai mengedit templat ARM. Konfigurasi Azure Files perlu disiapkan pada waktu pembuatan aplikasi.
Di portal Microsoft Azure, pilih Buat sumber daya(+).
Di halaman Buat sumber daya, pilih Komputasi>Aplikasi Fungsi.
Di halaman Dasar, gunakan tabel berikut untuk mengonfigurasi aplikasi fungsi.
Opsi Nilai yang disarankan Deskripsi Langganan Langganan Anda Langganan sebagai dasar aplikasi fungsi baru ini dibuat. Grup Sumber Daya myResourceGroup Nama untuk grup sumber daya baru tempat Anda membuat aplikasi fungsi. Nama Aplikasi Fungsi Nama unik secara global Nama yang akan mengidentifikasi aplikasi fungsi baru Anda. Karakter yang valid a-z
(peka huruf besar dan kecil),0-9
, dan-
.Menerbitkan Kode Opsi untuk menerbitkan file kode atau kontainer Docker. Tumpukan runtime .NET Tutorial ini menggunakan .NET. Wilayah Wilayah pilihan Pilih wilayah di dekat Anda atau di dekat layanan lain yang diakses fungsi Anda. Pilih Tinjau + buat. Aplikasi Anda menggunakan nilai default pada halaman Hosting dan Pemantauan. Tinjau opsi default, yang disertakan dalam templat ARM yang Anda hasilkan.
Alih-alih membuat aplikasi fungsi Anda di sini, pilih Unduh template untuk otomatisasi yang ada di sebelah kanan tombol Berikutnya.
Di halaman templat, pilih Sebarkan, lalu di halaman Penyebaran kustom, pilih Edit templat.
Mengedit templat
Sekarang Anda mengedit templat untuk menyimpan string koneksi Azure Files di Key Vault dan mengizinkan aplikasi fungsi Anda untuk mereferensikannya. Pastikan Anda memiliki nilai-nilai berikut dari bagian sebelumnya sebelum melanjutkan:
- ID sumber daya identitas yang ditetapkan pengguna
- Nama brankas kunci Anda
Catatan
Jika membuat templat lengkap untuk otomatisasi, Anda perlu menyertakan definisi untuk sumber daya identitas dan penetapan peran, dengan klausa dependsOn
yang sesuai. Ini akan menggantikan langkah-langkah sebelumnya yang menggunakan portal. Konsultasikan panduan Azure Resource Manager dan dokumentasi untuk setiap layanan.
Di editor, temukan di mana array
resources
dimulai. Sebelum definisi aplikasi fungsi, tambahkan bagian berikut, yang menempatkan Azure Files string koneksi ke dalam Key Vault. Ganti "VAULT_NAME" dengan nama brankas kunci Anda.{ "type": "Microsoft.KeyVault/vaults/secrets", "apiVersion": "2016-10-01", "name": "VAULT_NAME/azurefilesconnectionstring", "properties": { "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]" }, "dependsOn": [ "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]" ] },
Dalam definisi untuk sumber daya aplikasi fungsi (dengan
type
diatur keMicrosoft.Web/sites
), tambahkanMicrosoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring
ke arraydependsOn
. Sekali lagi, ganti "VAULT_NAME" dengan nama brankas kunci Anda. Melakukannya mencegah aplikasi Anda dibuat sebelum rahasia ditentukan. ArraydependsOn
akan terlihat seperti contoh berikut:{ "type": "Microsoft.Web/sites", "apiVersion": "2018-11-01", "name": "[parameters('name')]", "location": "[parameters('location')]", "tags": null, "dependsOn": [ "microsoft.insights/components/idcxntut", "Microsoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring", "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]", "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]" ], // ... }
Tambahkan blok
identity
dari contoh berikut ke dalam definisi untuk sumber daya aplikasi fungsi Anda. Ganti "IDENTITY_RESOURCE_ID" untuk ID sumber daya identitas yang ditetapkan pengguna Anda.{ "apiVersion": "2018-11-01", "name": "[parameters('name')]", "type": "Microsoft.Web/sites", "kind": "functionapp", "location": "[parameters('location')]", "identity": { "type": "SystemAssigned,UserAssigned", "userAssignedIdentities": { "IDENTITY_RESOURCE_ID": {} } }, "tags": null, // ... }
Blok ini
identity
juga menyiapkan identitas yang ditetapkan sistem, yang Anda gunakan nanti dalam tutorial ini.keyVaultReferenceIdentity
Tambahkan properti keproperties
objek untuk aplikasi fungsi, seperti dalam contoh berikut. Ganti "IDENTITY_RESOURCE_ID" untuk ID sumber daya identitas yang ditetapkan pengguna Anda.{ // ... "properties": { "name": "[parameters('name')]", "keyVaultReferenceIdentity": "IDENTITY_RESOURCE_ID", // ... } }
Anda memerlukan konfigurasi ini karena aplikasi dapat memiliki konfigurasi beberapa identitas yang ditetapkan pengguna. Setiap kali Anda ingin menggunakan identitas yang ditetapkan pengguna, Anda harus menentukannya dengan ID. Identitas yang ditetapkan sistem tidak perlu ditentukan dengan cara ini, karena aplikasi hanya dapat memilikinya. Banyak fitur yang menggunakan identitas terkelola yang menganggap mereka harus menggunakan identitas yang ditetapkan sistem secara default.
Temukan objek JSON yang menentukan
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
pengaturan aplikasi, yang akan terlihat seperti contoh berikut:{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]" },
Ganti bidang
value
dengan referensi ke rahasia seperti yang ditampilkan pada contoh berikut. Ganti "VAULT_NAME" dengan nama brankas kunci Anda.{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', 'VAULT_NAME', 'azurefilesconnectionstring')).secretUri, ')')]" },
Pilih Simpan untuk menyimpan templat ARM yang diperbarui.
Menyebarkan templat yang dimodifikasi
Pastikan opsi buat Anda, termasuk Grup Sumber Daya, masih benar dan pilih Tinjau + buat.
Setelah templat Anda memvalidasi, catat Nama Akun Penyimpanan karena Anda akan menggunakan akun ini nanti. Terakhir, pilih Buat untuk membuat sumber daya Azure dan menyebarkan kode ke aplikasi fungsi.
Setelah penyebaran selesai, pilih Buka grup sumber daya lalu pilih aplikasi fungsi baru.
Selamat! Anda telah berhasil membuat aplikasi fungsi untuk mereferensikan string koneksi Azure Files dari Azure Key Vault.
Setiap kali aplikasi Anda perlu menambahkan referensi ke rahasia, Anda hanya perlu menentukan pengaturan aplikasi baru yang menunjuk ke nilai yang tersimpan di Key Vault. Untuk informasi selengkapnya, lihat Referensi Key Vault untuk Azure Functions.
Tip
String koneksi Application Insights dan kunci instrumentasi yang disertakan tidak dianggap rahasia dan dapat diambil dari App Insights menggunakan izin Pembaca. Anda tidak perlu memindahkannya ke Key Vault, meski Anda pasti bisa melakukannya.
Menggunakan identitas terkelola untuk AzureWebJobsStorage
Selanjutnya, Anda menggunakan identitas yang ditetapkan sistem yang Anda konfigurasikan di langkah-langkah sebelumnya untuk AzureWebJobsStorage
koneksi. AzureWebJobsStorage
digunakan oleh runtime Functions serta oleh beberapa pemicu dan ikatan untuk mengoordinasikan beberapa instans yang berjalan. Diperlukan agar aplikasi fungsi Anda beroperasi, dan seperti Azure Files, dikonfigurasi dengan string koneksi secara default saat Anda membuat aplikasi fungsi baru.
Memberikan akses identitas yang ditetapkan sistem ke akun penyimpanan
Mirip dengan langkah-langkah yang sebelumnya Anda ikuti dengan identitas yang ditetapkan pengguna dan brankas kunci, Anda sekarang membuat penetapan peran yang memberikan akses identitas yang ditetapkan sistem ke akun penyimpanan Anda.
Di portal Microsoft Azure, navigasikan ke akun penyimpanan yang telah dibuat dengan aplikasi fungsi Anda.
Pilih Kontrol Akses (IAM) . Halaman ini adalah tempat Anda dapat melihat dan mengonfigurasi siapa yang memiliki akses ke sumber daya.
Pilih Tambahkan dan pilih tambahkan penetapan peran.
Cari Pemilik Data Blob Penyimpanan, pilih, dan pilih Berikutnya
Pada tab Anggota, di bagian Tetapkan akses ke, pilih Identitas Terkelola
Pilih Pilih anggota untuk membuka panel Pilih identitas terkelola.
Konfirmasikan bahwa Langganan adalah tempat Anda sebelumnya membuat sumber daya.
Di pemilih Identitas terkelola, pilih Aplikasi Fungsi dari kategori Identitas terkelola yang ditetapkan sistem. Label Aplikasi Fungsi mungkin memiliki angka dalam tanda kurung di sampingnya, yang menunjukkan jumlah aplikasi dalam langganan dengan identitas yang ditetapkan sistem.
Aplikasi Anda akan muncul dalam daftar di bawah bidang input. Jika tidak melihatnya, Anda dapat menggunakan kotak Pilih untuk memfilter hasil dengan nama aplikasi Anda.
Pilih aplikasi Anda. Tindakan ini seharunsya pindah ke bagian Anggota yang dipilih. Memilih Pilih.
Pada layar Tambahkan penetapan peran, pilih Tinjau + tetapkan. Tinjau konfigurasi, lalu pilih Tinjau + tetapkan.
Tip
Jika Anda berniat menggunakan aplikasi fungsi untuk fungsi pemicu blob, Anda harus mengulangi langkah-langkah berikut untuk peran Kontributor Akun Penyimpanan dan Kontributor Penyimpanan Data Antrean atas akun yang digunakan oleh AzureWebJobsStorage. Untuk mempelajari selengkapnya, lihat Koneksi berbasis identitas pemicu blob.
Edit konfigurasi AzureWebJobsStorage
Selanjutnya Anda memperbarui aplikasi fungsi untuk menggunakan identitas yang ditetapkan sistem saat menggunakan layanan blob untuk penyimpanan host.
Penting
Konfigurasi AzureWebJobsStorage
ini digunakan oleh beberapa pemicu dan ikatan, serta ekstensi tersebut harus dapat menggunakan koneksi berbasis identitas juga. Aplikasi yang menggunakan pemicu blob atau pemicu hub peristiwa mungkin perlu memperbarui ekstensi tersebut. Belum ada kekhawatiran karena belum ada fungsi yang ditetapkan untuk aplikasi ini. Untuk mempelajari selengkapnya tentang persyaratan ini, lihat Menyambungkan ke penyimpanan host dengan identitas.
Demikian pula, AzureWebJobsStorage
digunakan untuk artefak penyebaran saat menggunakan build sisi server di Linux Consumption. Saat Anda mengaktifkan koneksi berbasis identitas untuk AzureWebJobsStorage
di Linux Consumption, Anda harus melakukan penyebaran melalui paket penyebaran eksternal.
Di portal Microsoft Azure, navigasikan ke aplikasi fungsi Anda.
Di aplikasi fungsi Anda, perluas Pengaturan, lalu pilih Variabel lingkungan.
Di tab Pengaturan aplikasi, pilih pengaturan aplikasi AzureWebJobsStorage , dan edit sesuai dengan tabel berikut ini:
Opsi Nilai yang disarankan Deskripsi Nama AzureWebJobsStorage__accountName Ubah nama dari AzureWebJobsStorage ke nama AzureWebJobsStorage__accountName
yang tepat . Pengaturan ini menginstruksikan host untuk menggunakan identitas alih-alih mencari rahasia yang disimpan. Pengaturan baru menggunakan garis bawah ganda (__
), yang merupakan karakter khusus dalam pengaturan aplikasi.Nilai Nama akun Anda Perbarui nama string koneksi menjadi StorageAccountName. Konfigurasi ini memberi tahu sistem untuk menggunakan identitas untuk menyambungkan ke sumber daya.
Pilih Terapkan, lalu pilih Terapkan dan Konfirmasi untuk menyimpan perubahan Anda dan memulai ulang fungsi aplikasi.
Anda sekarang telah menghapus persyaratan string koneksi penyimpanan untuk AzureWebJobsStorage dengan mengonfigurasi aplikasi Anda untuk terhubung ke blob menggunakan identitas terkelola.
Catatan
Sintaksis __accountName
khusus untuk koneksi AzureWebJobsStorage dan tidak dapat digunakan untuk koneksi penyimpanan lainnya. Untuk mempelajari cara menetapkan koneksi lainnya, lihat referensi untuk setiap pemicu dan pengikatan data yang digunakan aplikasi Anda.
Langkah berikutnya
Tutorial ini menunjukkan cara membuat aplikasi fungsi tanpa menyimpan rahasia dalam konfigurasinya.
Lanjutkan ke tutorial berikutnya untuk mempelajari cara menggunakan identitas dalam koneksi pemicu dan pengikatan.