Bagikan melalui


Mengautentikasi aplikasi Python ke layanan Azure selama pengembangan lokal menggunakan akun pengembang

Saat mengembangkan aplikasi cloud, pengembang biasanya membangun, menguji, dan men-debug kode mereka secara lokal sebelum menyebarkannya ke Azure. Namun, bahkan selama pengembangan lokal, aplikasi perlu mengautentikasi dengan layanan Azure apa pun yang berinteraksi dengannya, seperti Key Vault, Storage, atau database.

Artikel ini memperlihatkan cara mengonfigurasi aplikasi Anda untuk menggunakan kredensial Azure pengembang untuk autentikasi selama pengembangan lokal. Pendekatan ini memungkinkan pengalaman pengembangan yang mulus dan aman tanpa menyematkan rahasia atau menulis logika khusus lingkungan.

Gambaran umum autentikasi pengembangan lokal menggunakan akun pengembang

Saat mengembangkan aplikasi yang menggunakan pustaka Azure Identity untuk Python, Anda dapat mengautentikasi ke layanan Azure selama pengembangan lokal menggunakan akun Azure pengembang. Pendekatan ini seringkali merupakan cara paling sederhana untuk mengautentikasi ke layanan Azure selama pengembangan lokal karena tidak memerlukan pembuatan dan pengelolaan perwakilan layanan atau rahasia.

Diagram yang menunjukkan bagaimana aplikasi Python selama pengembangan lokal menggunakan kredensial pengembang untuk terhubung ke Azure dengan mendapatkan kredensial tersebut dari alat pengembangan yang diinstal secara lokal.

Untuk mengaktifkan aplikasi untuk mengautentikasi ke Azure selama pengembangan lokal menggunakan kredensial Azure pengembang sendiri, pengembang harus terlebih dahulu masuk menggunakan salah satu alat baris perintah yang didukung:

  • Azure CLI (az login)
  • Azure Developer CLI (azd login)
  • Azure PowerShell (Connect-AzAccount)

Setelah masuk, pustaka Azure Identity untuk Python dapat secara otomatis mendeteksi sesi aktif dan mengambil token yang diperlukan dari cache kredensial. Kemampuan ini memungkinkan aplikasi untuk mengautentikasi ke layanan Azure sebagai pengguna yang masuk, tanpa memerlukan konfigurasi tambahan atau rahasia yang dikodekan secara permanen.

Perilaku ini diaktifkan saat menggunakan DefaultAzureCredential, yang secara transparan kembali ke kredensial berbasis CLI di lingkungan lokal.

Menggunakan kredensial Azure yang sudah masuk dari pengembang adalah cara yang paling mudah untuk pengembangan lokal. Ini memanfaatkan akun Azure setiap anggota tim yang ada, memungkinkan akses tanpa hambatan ke layanan Azure tanpa memerlukan konfigurasi tambahan.

Namun, akun pengembang biasanya memiliki izin yang lebih luas daripada yang harus dimiliki aplikasi dalam produksi. Izin yang lebih luas ini dapat menyebabkan inkonsistensi dalam pengujian atau secara tidak sengaja memungkinkan operasi bahwa aplikasi tidak akan diizinkan untuk melakukan di lingkungan produksi. Untuk mencerminkan izin produksi secara dekat dan meningkatkan sikap keamanan, Anda dapat membuat principal layanan khusus aplikasi untuk pengembangan lokal. Identitas ini:

  • Hanya dapat ditetapkan peran dan izin yang dibutuhkan aplikasi
  • Dukung prinsip hak istimewa seminimal mungkin
  • Menawarkan pengujian perilaku terkait akses yang konsisten di seluruh lingkungan

Pengembang dapat mengonfigurasi lingkungan lokal untuk menggunakan principal layanan melalui variabel lingkungan, dan DefaultAzureCredential mendeteksinya secara otomatis. Untuk informasi selengkapnya, lihat artikel Mengautentikasi aplikasi Python ke layanan Azure selama pengembangan lokal menggunakan perwakilan layanan.

1 - Membuat grup keamanan Microsoft Entra untuk pengembangan lokal

Dalam sebagian besar skenario pengembangan, beberapa pengembang berkontribusi pada aplikasi yang sama. Untuk menyederhanakan kontrol akses dan memastikan izin yang konsisten di seluruh tim, kami sarankan Anda terlebih dahulu membuat grup keamanan Microsoft Entra khusus untuk kebutuhan pengembangan lokal aplikasi.

Menetapkan peran Azure di tingkat grup—bukan kepada pengguna individual—menawarkan beberapa manfaat utama:

  • Penetapan Peran yang Konsisten

    Semua pengembang dalam grup secara otomatis mewarisi peran dan izin yang sama, memastikan lingkungan pengembangan yang seragam.

  • Manajemen Peran yang Disederhanakan

    Ketika aplikasi memerlukan peran baru, Anda hanya perlu menambahkannya sekali ke grup. Anda tidak perlu memperbarui izin pengguna individual.

  • Onboarding Mudah

    Pengembang baru dapat diberikan izin yang diperlukan hanya dengan menambahkannya ke grup. Tidak diperlukan penetapan peran manual.

Jika organisasi Anda sudah memiliki grup keamanan Microsoft Entra yang sesuai untuk tim pengembangan, Anda dapat menggunakannya kembali. Jika tidak, Anda dapat membuat grup baru khusus untuk aplikasi.

Untuk membuat grup keamanan di ID Microsoft Entra, gunakan perintah az ad group createe Azure CLI.

Perintah ini memerlukan parameter berikut:

--display-name: Nama yang mudah digunakan untuk grup

--mail-nickname: Pengidentifikasi unik yang digunakan untuk email dan referensi internal

Kami menyarankan agar Anda mendasarkan nama grup pada nama aplikasi dan menyertakan akhiran seperti -local-dev untuk menunjukkan tujuannya dengan jelas.

#!/bin/bash
az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"
# PowerShell syntax
az ad group create `
    --display-name MyDisplay `
    --mail-nickname MyDisplay `
    --description "<group-description>"

Setelah menjalankan az ad group create perintah, salin nilai id properti dari output perintah. Anda memerlukan Object ID grup keamanan Microsoft Entra untuk menetapkan peran di langkah selanjutnya dalam artikel ini. Untuk mengambil Object ID lagi nanti, gunakan perintah az ad group show berikut: az ad group show --group "my-app-local-dev" --query id --output tsv.

Untuk menambahkan pengguna ke grup, Anda harus terlebih dahulu mendapatkan Object ID akun pengguna Azure yang ingin Anda tambahkan. Gunakan perintah az ad user list dengan --filter parameter untuk mencari pengguna tertentu menurut nama tampilan. Parameter --query membantu membatasi output ke bidang yang relevan:

#!/bin/bash
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:id, displayName:displayName}" \
--output table
# PowerShell syntax
az ad user list `
    --filter "startswith(displayName, 'Bob')" `
    --query "[].{objectId:id, displayName:displayName}" `
    --output table

Setelah memiliki Object ID pengguna, Anda dapat menambahkannya ke grup menggunakan perintah az ad group member add .

#!/bin/bash
az ad group member add \
    --group <group-name> \
    --member-id <object-id>
# PowerShell syntax
az ad group member add `
    --group <group-name> `
    --member-id <object-id>

Catatan

Secara default, pembuatan grup keamanan Microsoft Entra terbatas pada peran istimewa tertentu dalam direktori. Jika Anda tidak dapat membuat grup, hubungi administrator untuk direktori Anda. Jika Anda tidak dapat menambahkan anggota ke grup yang sudah ada, hubungi pemilik grup atau administrator direktori. Untuk mempelajari selengkapnya, lihat Mengelola grup Microsoft Entra dan keanggotaan grup.

2 - Menetapkan peran ke grup Microsoft Entra

Setelah membuat grup keamanan Microsoft Entra dan menambahkan anggota, langkah selanjutnya adalah menentukan peran (izin) apa yang diperlukan aplikasi Anda, dan menetapkan peran tersebut ke grup pada cakupan yang sesuai.

  • Menentukan Peran yang Diperlukan

    Identifikasi peran yang perlu difungsikan aplikasi Anda. Contoh umum meliputi:

    • Pengguna Sekret Key Vault – untuk mengakses sekret dari Azure Key Vault
    • Kontributor Data Antrean Penyimpanan – untuk mengirim pesan ke Azure Queue Storage

    Lihat definisi peran bawaan untuk opsi lainnya.

  • Pilih Cakupan untuk Penetapan Peran

    Peran dapat ditetapkan pada cakupan yang berbeda:

    • Tingkat sumber daya (misalnya, satu akun Key Vault atau Storage)
    • Tingkat grup sumber daya (direkomendasikan untuk sebagian besar aplikasi)
    • Tingkat langganan (gunakan dengan hati-hati—akses terluas)

Dalam contoh ini, kami menetapkan peran di cakupan grup sumber daya, yang khas ketika semua sumber daya aplikasi dikelompokkan di bawah satu grup sumber daya.

Pengguna, grup, atau perwakilan layanan aplikasi diberi peran di Azure menggunakan perintah az role assignment create . Anda dapat menentukan grup dengan Object ID.

#!/bin/bash
az role assignment create --assignee <objectId> \
    --scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> \
    --role "<roleName>" 
# PowerShell syntax
az role assignment create `
    --assignee <objectId> `
    --scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> `
    --role "<roleName>"

Untuk mendapatkan nama peran yang dapat ditetapkan, gunakan perintah az role definition list .

#!/bin/bash
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
# PowerShell syntax
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Untuk memberikan akses baca, tulis, dan hapus ke kontainer dan data blob Azure Storage untuk semua akun penyimpanan dalam grup sumber daya tertentu, tetapkan peran Kontributor Data Blob Penyimpanan ke grup keamanan Microsoft Entra Anda.

#!/bin/bash
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example \
    --role "Storage Blob Data Contributor"
# PowerShell syntax
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc `
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example `
    --role "Storage Blob Data Contributor"

Untuk informasi tentang menetapkan izin di tingkat sumber daya atau langganan menggunakan Azure CLI, lihat artikel Menetapkan peran Azure menggunakan Azure CLI.

3 - Masuk ke Azure menggunakan Azure CLI, Azure PowerShell, Azure Developer CLI, atau di browser

Untuk mengautentikasi dengan akun Azure Anda, pilih salah satu metode berikut:

Buka terminal di stasiun kerja pengembang Anda dan masuk ke Azure dari Azure CLI.

az login

4 - Menerapkan DefaultAzureCredential di aplikasi Anda

Untuk mengautentikasi objek klien Azure SDK dengan Azure, aplikasi Anda harus menggunakan DefaultAzureCredential kelas dari azure-identity paket. Ini adalah metode autentikasi yang direkomendasikan untuk pengembangan lokal dan penyebaran produksi.

Dalam skenario pengembangan lokal, DefaultAzureCredential bekerja dengan memeriksa sumber autentikasi yang tersedia secara berurutan. Secara khusus, sistem mencari sesi aktif di alat-alat berikut:

  • Azure CLI (az login)
  • Azure PowerShell (Connect-AzAccount)
  • Azure Developer CLI (azd auth login)

Jika pengembang masuk ke Azure menggunakan salah satu alat ini, DefaultAzureCredential secara otomatis mendeteksi sesi dan menggunakan kredensial tersebut untuk mengautentikasi aplikasi dengan layanan Azure. Ini memungkinkan pengembang untuk mengautentikasi dengan aman tanpa menyimpan rahasia atau memodifikasi kode untuk lingkungan yang berbeda.

Mulailah dengan menambahkan paket azure.identity ke aplikasi Anda.

pip install azure-identity

Selanjutnya, untuk kode Python apa pun yang membuat objek klien Azure SDK di aplikasi, Anda ingin:

  1. Impor kelas DefaultAzureCredential dari modul azure.identity.
  2. Buat objek DefaultAzureCredential.
  3. Teruskan DefaultAzureCredential objek ke konstruktor objek klien Azure SDK.

Contoh langkah-langkah ini ditampilkan di segmen kode berikut.

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

# Acquire a credential object
token_credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
        account_url="https://<my_account_name>.blob.core.windows.net",
        credential=token_credential)