Memigrasikan aplikasi untuk menggunakan koneksi tanpa kata sandi dengan Azure Event Hubs
Artikel
Permintaan aplikasi ke layanan Azure harus diautentikasi menggunakan konfigurasi seperti kunci akses akun atau koneksi tanpa kata sandi. Namun, Anda harus memprioritaskan koneksi tanpa kata sandi di aplikasi jika memungkinkan. Metode autentikasi tradisional yang menggunakan kata sandi atau kunci rahasia menciptakan risiko dan komplikasi keamanan. Kunjungi koneksi tanpa kata sandi untuk hub layanan Azure untuk mempelajari selengkapnya tentang keuntungan pindah ke koneksi tanpa kata sandi.
Tutorial berikut menjelaskan cara memigrasikan aplikasi yang ada untuk terhubung menggunakan koneksi tanpa kata sandi. Langkah-langkah migrasi yang sama ini harus berlaku apakah Anda menggunakan kunci akses, string koneksi, atau pendekatan berbasis rahasia lainnya.
Mengonfigurasi lingkungan pengembangan lokal Anda
Koneksi tanpa kata sandi dapat dikonfigurasi agar berfungsi untuk lingkungan lokal dan yang dihosting Azure. Di bagian ini, Anda menerapkan konfigurasi untuk memungkinkan pengguna individual mengautentikasi ke Azure Event Hubs untuk pengembangan lokal.
Tetapkan peran pengguna
Saat mengembangkan secara lokal, pastikan bahwa akun pengguna yang mengakses Azure Event Hubs memiliki izin yang benar. Anda memerlukan peran Penerima Data Azure Event Hubs dan Pengirim Data Azure Event Hubs untuk membaca dan menulis data pesan. Untuk menetapkan sendiri peran ini, Anda harus diberi peran Administrator Akses Pengguna, atau peran lain yang menyertakan tindakan Microsoft.Authorization/roleAssignments/write . Anda dapat menetapkan peran Azure RBAC kepada pengguna menggunakan portal Azure, Azure CLI, atau Azure PowerShell. Pelajari selengkapnya tentang cakupan yang tersedia untuk penetapan peran di halaman gambaran umum cakupan .
Contoh berikut menetapkan peran Pengirim Data Azure Event Hubs dan Penerima Data Azure Event Hubs ke akun pengguna Anda. Peran ini memberikan akses baca dan tulis ke pesan pusat aktivitas.
Di portal Azure, temukan pusat aktivitas Anda menggunakan bilah pencarian utama atau navigasi kiri.
Pada halaman gambaran umum pusat aktivitas, pilih Kontrol akses (IAM) dari menu sebelah kiri.
Di halaman Kontrol akses (IAM), pilih tab Penetapan peran.
Pilih + Tambahkan dari menu atas lalu Tambahkan penetapan peran dari menu drop-down yang dihasilkan.
Gunakan kotak pencarian untuk memfilter hasil ke peran yang diinginkan. Untuk contoh ini, cari Pengirim Data Azure Event Hubs dan pilih hasil yang cocok lalu pilih Berikutnya.
Di bagian Tetapkan akses ke, pilih Pengguna, grup, atau perwakilan layanan, lalu pilih + Pilih anggota.
Dalam dialog, cari nama pengguna Microsoft Entra Anda (biasanya alamat email user@domain Anda) lalu pilih Pilih di bagian bawah dialog.
Pilih Tinjau + tetapkan untuk masuk ke halaman akhir, lalu Tinjau + tetapkan lagi untuk menyelesaikan proses.
Ulangi langkah-langkah ini untuk peran Penerima Data Azure Event Hubs untuk memungkinkan akun mengirim dan menerima pesan.
Untuk menetapkan peran di tingkat sumber daya menggunakan Azure CLI, Anda harus terlebih dahulu mengambil ID sumber daya menggunakan az eventhubs eventhub show perintah . Anda dapat memfilter properti output menggunakan parameter --query.
az eventhubs eventhub show \
--resource-group '<your-resource-group-name>' \
--namespace-name '<your-event-hubs-namespace>' \
--name '<your-event-hub-name>' \
--query id
Salin output Id dari perintah sebelumnya. Anda kemudian dapat menetapkan peran menggunakan perintah az role di Azure CLI.
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Receiver" \
--scope "<your-resource-id>"
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Sender" \
--scope "<your-resource-id>"
Untuk menetapkan peran di tingkat sumber daya menggunakan Azure PowerShell, Anda harus terlebih dahulu mengambil ID sumber daya menggunakan Get-AzResource perintah .
Dalam kebanyakan kasus, akan memakan waktu satu atau dua menit agar penetapan peran disebarluaskan di Azure, tetapi dalam kasus yang jarang terjadi mungkin perlu waktu hingga delapan menit. Jika Anda menerima kesalahan autentikasi saat pertama kali menjalankan kode, tunggu beberapa saat dan coba lagi.
Masuk ke Azure secara lokal
Untuk pengembangan lokal, pastikan Anda diautentikasi dengan akun Microsoft Entra yang sama dengan yang Anda tetapkan perannya. Anda dapat mengautentikasi melalui alat pengembangan populer, seperti Azure CLI atau Azure PowerShell. Alat pengembangan yang dapat Anda autentikasi bervariasi di seluruh bahasa.
Masuk ke Azure melalui Azure CLI menggunakan perintah berikut:
az login
Pilih tombol Masuk di kanan atas Visual Studio.
Masuk menggunakan akun Microsoft Entra yang Anda tetapkan perannya sebelumnya.
Anda harus menginstal Azure CLI untuk bekerja dengan DefaultAzureCredential melalui Visual Studio Code.
Di menu utama Visual Studio Code, buka Terminal > Terminal Baru.
Masuk ke Azure melalui Azure CLI menggunakan perintah berikut:
az login
Masuk ke Azure menggunakan PowerShell melalui perintah berikut:
Connect-AzAccount
Memperbarui kode aplikasi untuk menggunakan koneksi tanpa kata sandi
Pustaka klien Azure Identity, untuk setiap ekosistem berikut, menyediakan kelas yang menangani autentikasi DefaultAzureCredential tanpa kata sandi ke Azure:
DefaultAzureCredential mendukung beberapa metode autentikasi. Metode yang digunakan ditentukan pada runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan. Lihat tautan sebelumnya untuk pesanan dan lokasi di mana DefaultAzureCredential mencari kredensial.
Untuk digunakan DefaultAzureCredential dalam aplikasi .NET, instal Azure.Identity paket:
dotnet add package Azure.Identity
Di bagian atas file Anda, tambahkan kode berikut:
using Azure.Identity;
Identifikasi lokasi dalam kode Anda yang membuat EventHubProducerClient objek atau EventProcessorClient untuk menyambungkan ke Azure Event Hubs. Perbarui kode berikut agar sesuai dengan contoh berikut:
Identifikasi lokasi dalam kode Anda yang membuat ProducerClient instans atau ConsumerClient untuk menyambungkan ke Azure Event Hubs. Perbarui kode berikut agar sesuai dengan contoh berikut:
Identifikasi lokasi dalam kode Anda yang membuat EventHubProducerClient objek atau EventProcessorClient untuk menyambungkan ke Azure Event Hubs. Perbarui kode berikut agar sesuai dengan contoh berikut:
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.build();
String eventHubNamespace = "https://" + namespace + ".servicebus.windows.net";
// Event Hubs producer
EventHubProducerClient producerClient = new EventHubClientBuilder()
.credential(eventHubNamespace, eventHubName, credential)
.buildProducerClient();
// Event Hubs processor
EventProcessorClient processorClient = new EventProcessorClientBuilder()
.consumerGroup(consumerGroupName)
.credential(eventHubNamespace, eventHubName, credential)
.checkpointStore(new SampleCheckpointStore())
.processEvent(eventContext -> {
System.out.println(
"Partition ID = " +
eventContext.getPartitionContext().getPartitionId() +
" and sequence number of event = " +
eventContext.getEventData().getSequenceNumber());
})
.processError(errorContext -> {
System.out.println(
"Error occurred while processing events " +
errorContext.getThrowable().getMessage());
})
.buildEventProcessorClient();
Untuk digunakan DefaultAzureCredential dalam aplikasi Node.js, instal @azure/identity paket:
npm install --save @azure/identity
Di bagian atas file Anda, tambahkan kode berikut:
import { DefaultAzureCredential } from "@azure/identity";
Identifikasi lokasi dalam kode Anda yang membuat EventHubProducerClient objek atau EventHubConsumerClient untuk menyambungkan ke Azure Event Hubs. Perbarui kode berikut agar sesuai dengan contoh berikut:
Untuk digunakan DefaultAzureCredential dalam aplikasi Python, instal azure-identity paket:
pip install azure-identity
Di bagian atas file Anda, tambahkan kode berikut:
from azure.identity import DefaultAzureCredential
Identifikasi lokasi dalam kode Anda yang membuat EventHubProducerClient objek atau EventHubConsumerClient untuk menyambungkan ke Azure Event Hubs. Perbarui kode berikut agar sesuai dengan contoh berikut:
Pastikan untuk memperbarui namespace layanan pusat aktivitas di URI objek atau EventProcessorClient AndaEventHubProducerClient. Anda dapat menemukan nama namespace layanan di halaman gambaran umum portal Azure.
Menjalankan aplikasi secara lokal
Setelah menerapkan perubahan kode ini, jalankan aplikasi Anda secara lokal. Konfigurasi baru akan mengambil kredensial lokal Anda, seperti Azure CLI, Visual Studio, atau IntelliJ. Peran yang Anda tetapkan kepada pengguna di Azure memungkinkan aplikasi Anda tersambung ke layanan Azure secara lokal.
Mengonfigurasikan lingkungan hosting Azure
Setelah aplikasi Anda dikonfigurasi untuk menggunakan koneksi tanpa kata sandi dan berjalan secara lokal, kode yang sama dapat mengautentikasi ke layanan Azure setelah disebarkan ke Azure. Bagian yang mengikuti menjelaskan cara mengonfigurasi aplikasi yang disebarkan untuk menyambungkan ke Azure Event Hubs menggunakan identitas terkelola. Identitas terkelola memberikan identitas terkelola secara otomatis di Microsoft Entra ID untuk digunakan aplikasi saat menyambung ke sumber daya yang mendukung autentikasi Microsoft Entra. Pelajari selengkapnya tentang identitas terkelola:
Anda dapat membuat identitas terkelola yang ditetapkan pengguna menggunakan portal Azure atau Azure CLI. Aplikasi Anda menggunakan identitas untuk mengautentikasi ke layanan lain.
az identity create --name MigrationIdentity --resource-group <your-resource-group>
Mengaitkan identitas terkelola dengan aplikasi web Anda
Anda perlu mengonfigurasi aplikasi web untuk menggunakan identitas terkelola yang Anda buat. Tetapkan identitas ke aplikasi Anda menggunakan portal Azure atau Azure CLI.
Selesaikan langkah-langkah berikut di portal Azure untuk mengaitkan identitas dengan aplikasi Anda. Langkah-langkah yang sama ini berlaku untuk layanan Azure berikut ini:
Azure Spring Apps
Azure Container Apps
Komputer virtual Azure
Azure Kubernetes Service
Navigasi ke halaman gambaran umum aplikasi web Anda.
Pilih Identitas dari navigasi kiri.
Pada halaman Identitas , beralihlah ke tab Pengguna yang ditetapkan.
Pilih + Tambahkan untuk membuka flyout Tambahkan identitas terkelola yang ditetapkan pengguna.
Pilih langganan yang Anda gunakan sebelumnya untuk membuat identitas.
Cari MigrationIdentity menurut nama dan pilih dari hasil pencarian.
Pilih Tambahkan untuk mengaitkan identitas dengan aplikasi Anda.
Gunakan perintah Azure CLI berikut untuk mengaitkan identitas dengan aplikasi Anda:
Ambil ID identitas terkelola yang Anda buat menggunakan perintah az identity show . Salin nilai output yang akan digunakan di langkah berikutnya.
az identity show --name MigrationIdentity -g <your-identity-resource-group-name> --query id
az vm identity assign \
--resource-group <resource-group-name> \
--name <virtual-machine-name>
--identities <managed-identity-id>
Anda dapat menetapkan identitas terkelola ke instans Azure Kubernetes Service (AKS) dengan perintah az aks update .
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity <managed-identity-id> \
--assign-kubelet-identity <managed-identity-id>
Anda dapat menggunakan Konektor Layanan untuk membuat koneksi antara lingkungan hosting komputasi Azure dan layanan target menggunakan Azure CLI. Perintah Konektor Layanan CLI secara otomatis menetapkan peran yang tepat ke identitas Anda. Anda dapat mempelajari selengkapnya tentang Konektor Layanan dan skenario mana yang didukung di halaman gambaran umum.
Ambil ID klien identitas terkelola yang Anda buat menggunakan az identity show perintah . Salin nilai untuk digunakan nanti.
az identity show \
--name MigrationIdentity \
--resource-group <your-resource-group> \
--query clientId
Gunakan perintah CLI yang sesuai untuk membuat koneksi layanan:
Selanjutnya, Anda perlu memberikan izin ke identitas terkelola yang Anda buat untuk mengakses pusat aktivitas Anda. Berikan izin dengan menetapkan peran ke identitas terkelola, seperti yang Anda lakukan dengan pengguna pengembangan lokal Anda.
Navigasi ke halaman gambaran umum pusat aktivitas Anda dan pilih Kontrol Akses (IAM) dari navigasi kiri.
Pilih Tambahkan penetapan peran
Dalam kotak pencarian Peran , cari Pengirim Data Azure Event Hubs, yang merupakan peran umum yang digunakan untuk mengelola operasi data untuk antrean. Anda dapat menetapkan peran apa pun yang sesuai untuk kasus penggunaan Anda. Pilih Pengirim Data Azure Event Hubs dari daftar dan pilih Berikutnya.
Di layar Tambahkan penetapan peran, untuk opsi Tetapkan akses ke, pilih Identitas terkelola. Lalu, pilih +Pilih anggota.
Di flyout, cari identitas terkelola yang Anda buat berdasarkan nama dan pilih dari hasilnya. Pilih Pilih untuk menutup menu flyout.
Pilih Berikutnya beberapa kali hingga Anda dapat memilih Tinjau + tetapkan untuk menyelesaikan penetapan peran.
Ulangi langkah-langkah ini untuk peran Penerima Data Azure Event Hub.
Untuk menetapkan peran di tingkat sumber daya menggunakan Azure CLI, Anda harus terlebih dahulu mengambil ID sumber daya menggunakan az eventhubs eventhub show perintah tampilkan. Anda dapat memfilter properti output menggunakan parameter --query.
az eventhubs eventhub show \
--resource-group '<your-resource-group-name>' \
--namespace-name '<your-event-hubs-namespace>' \
--name '<your-event-hub-name>' \
--query id
Salin output ID dari perintah sebelumnya. Anda kemudian dapat menetapkan peran menggunakan perintah penetapan peran az dari Azure CLI.
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Receiver" \
--scope "<your-resource-id>"
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Sender" \
--scope "<your-resource-id>"
Jika Anda menyambungkan layanan menggunakan Konektor Layanan, Anda tidak perlu menyelesaikan langkah ini. Konfigurasi peran yang diperlukan ditangani untuk Anda saat Anda menjalankan perintah Service Connector CLI.
Memperbarui kode aplikasi
Anda perlu mengonfigurasi kode aplikasi untuk mencari identitas terkelola tertentu yang Anda buat saat disebarkan ke Azure. Dalam beberapa skenario, secara eksplisit mengatur identitas terkelola untuk aplikasi juga mencegah identitas lingkungan lain terdeteksi dan digunakan secara otomatis.
Pada halaman gambaran umum identitas terkelola, salin nilai ID klien ke clipboard Anda.
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId(managedIdentityClientId)
.build();
Buat DefaultAzureCredentialClientIdOptions objek dengan properti managedIdentityClientId yang diatur ke ID klien. Teruskan objek tersebut ke DefaultAzureCredential konstruktor.
const credential = new DefaultAzureCredential({
managedIdentityClientId
});
Atur DefaultAzureCredential parameter managed_identity_client_id konstruktor ke ID klien.
Sebarkan ulang kode Anda ke Azure setelah melakukan perubahan ini agar pembaruan konfigurasi diterapkan.
Menguji aplikasi
Setelah menyebarkan kode yang diperbarui, telusuri ke aplikasi yang dihosting di browser. Aplikasi Anda harus berhasil terhubung ke pusat aktivitas. Perlu diingat bahwa perlu waktu beberapa menit agar penetapan peran disebarluaskan melalui lingkungan Azure Anda. Aplikasi Anda kini dikonfigurasikan untuk berjalan baik secara lokal maupun di lingkungan produksi tanpa pengembang harus mengelola rahasia dalam aplikasi itu sendiri.
Langkah berikutnya
Dalam tutorial ini, Anda belajar cara memigrasikan aplikasi ke koneksi tanpa kata sandi.
Anda dapat membaca sumber daya berikut untuk menjelajahi konsep yang dibahas dalam artikel ini secara lebih mendalam: