Bagikan melalui


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

Saat pengembang membuat aplikasi cloud, mereka biasanya men-debug dan menguji aplikasi di stasiun kerja lokal mereka. Saat aplikasi dijalankan di stasiun kerja pengembang selama pengembangan lokal, aplikasi masih harus mengautentikasi ke setiap layanan Azure yang digunakan oleh aplikasi. Artikel ini membahas cara menggunakan kredensial Azure pengembang untuk mengautentikasi aplikasi ke Azure selama pengembangan lokal.

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.

Agar aplikasi dapat mengautentikasi ke Azure selama pengembangan lokal menggunakan kredensial Azure pengembang, pengembang harus masuk ke Azure dari Azure CLI, Azure PowerShell, atau Azure Developer CLI. Azure SDK untuk Python dapat mendeteksi bahwa pengembang masuk dari salah satu alat ini dan kemudian mendapatkan kredensial yang diperlukan dari cache kredensial untuk mengautentikasi aplikasi ke Azure sebagai pengguna yang masuk.

Pendekatan ini paling mudah disiapkan untuk tim pengembangan karena memanfaatkan akun Azure pengembang yang ada. Namun, akun pengembang kemungkinan akan memiliki lebih banyak izin daripada yang diperlukan oleh aplikasi, oleh karena itu melebihi izin yang akan dijalankan aplikasi dalam produksi. Sebagai alternatif, Anda dapat membuat perwakilan layanan aplikasi untuk digunakan selama pengembangan lokal, yang dapat dilingkupkan agar hanya memiliki akses yang diperlukan oleh aplikasi.

1 - Membuat grup keamanan Microsoft Entra untuk pengembangan lokal

Karena hampir selalu ada beberapa pengembang yang mengerjakan aplikasi, disarankan untuk terlebih dahulu membuat grup keamanan Microsoft Entra untuk merangkum peran (izin) yang dibutuhkan aplikasi dalam pengembangan lokal. Pendekatan ini menawarkan keuntungan berikut.

  • Setiap pengembang diyakinkan untuk memiliki peran yang sama yang ditetapkan karena peran ditetapkan di tingkat grup.
  • Jika peran baru diperlukan untuk aplikasi, peran tersebut hanya perlu ditambahkan ke grup Microsoft Entra untuk aplikasi tersebut.
  • Jika pengembang baru bergabung dengan tim, mereka hanya harus ditambahkan ke grup Microsoft Entra yang benar untuk mendapatkan izin yang benar untuk bekerja di aplikasi.

Jika Anda memiliki grup keamanan Microsoft Entra yang sudah ada untuk tim pengembangan, Anda dapat menggunakan grup tersebut. Jika tidak, selesaikan langkah-langkah berikut untuk membuat grup keamanan Microsoft Entra.

Perintah az ad group create digunakan untuk membuat grup di ID Microsoft Entra. Parameter --display-name dan --main-nickname dihitung. Nama yang diberikan ke grup harus didasarkan pada nama aplikasi. Akan sangat berguna untuk menyertakan frasa seperti 'local-dev' dalam nama grup untuk menunjukkan tujuan grup.

az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"

Salin nilai id properti dalam output perintah. Ini adalah ID objek untuk grup. Anda membutuhkannya di langkah-langkah selanjutnya. Anda juga dapat menggunakan perintah az ad group show untuk mengambil properti ini.

Untuk menambahkan anggota ke grup, Anda memerlukan ID objek pengguna Azure. Gunakan daftar pengguna az ad untuk mencantumkan perwakilan layanan yang tersedia. Perintah parameter --filter menerima filter gaya OData dan dapat digunakan untuk memfilter daftar pada nama tampilan pengguna seperti yang ditunjukkan. Parameter --query membatasi output ke kolom yang diminati.

az ad user list \
    --filter "startswith(displayName, 'Bob')" \
    --query "[].{objectId:id, displayName:displayName}" \
    --output table

Perintah az ad group member add kemudian dapat digunakan untuk menambahkan anggota ke grup.

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

Selanjutnya, Anda perlu menentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan menetapkan peran tersebut ke aplikasi Anda. Dalam contoh ini, peran akan ditetapkan ke grup Microsoft Entra yang dibuat di langkah 1. Peran dapat ditetapkan di sumber daya, grup sumber daya, atau cakupan langganan. Contoh ini menunjukkan cara menetapkan peran di cakupan grup sumber daya karena sebagian besar aplikasi mengelompokkan semua sumber daya Azure mereka ke dalam 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 ID objeknya.

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 .

az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Misalnya, untuk mengizinkan anggota grup dengan ID 00000000-0000-0000-0000-000000000000 objek baca, tulis, dan hapus akses ke kontainer dan data blob Azure Storage di semua akun penyimpanan di grup sumber daya msdocs-python-sdk-auth-example dalam langganan dengan ID 11111111-1111-1111-1111-111111111111, Anda akan menetapkan peran Kontributor Data Blob Penyimpanan ke grup menggunakan perintah berikut.

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 \
    --scope /subscriptions/11111111-1111-1111-1111-111111111111/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

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 ke Azure, aplikasi Anda harus menggunakan DefaultAzureCredential kelas dari azure.identity paket. Dalam skenario ini, DefaultAzureCredential secara berurutan akan memeriksa untuk melihat apakah pengembang telah masuk ke Azure menggunakan Azure CLI, Azure PowerShell, atau CLI pengembang Azure. Jika pengembang masuk ke Azure menggunakan salah satu alat ini, kredensial yang digunakan untuk masuk ke alat akan digunakan oleh aplikasi untuk mengautentikasi ke Azure.

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 harus:

  1. DefaultAzureCredential Impor kelas dari azure.identity modul.
  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)