Menggunakan pustaka Azure Identity untuk mendapatkan token akses untuk autorisasi

Pustaka klien Azure Identity menyederhanakan proses mendapatkan token akses OAuth 2.0 untuk otorisasi dengan Azure Active Directory (Azure AD) melalui SDK Azure. Versi terbaru pustaka klien Azure Storage untuk .NET, Java, Python, JavaScript, dan Go terintegrasi dengan pustaka Azure Identity untuk setiap bahasa tersebut guna menyediakan cara yang sederhana dan aman dalam memperoleh token akses untuk otorisasi permintaan Azure Storage.

Keuntungan dari pustaka klien Azure Identity adalah memungkinkan Anda menggunakan kode yang sama untuk memperoleh token akses apakah aplikasi Anda berjalan di lingkungan pengembangan atau di Azure. Pustaka klien Azure Identity menghasilkan token akses untuk prinsipal keamanan. Ketika kode Anda berjalan di Azure, prinsipal keamanan mungkin merupakan identitas terkelola untuk sumber daya Azure, prinsipal layanan, atau pengguna atau grup. Dalam lingkungan pengembangan, pustaka klien menyediakan token akses untuk pengguna atau prinsipal layanan untuk tujuan pengujian.

Token akses yang dihasilkan oleh pustaka klien Azure Identity dikemas dalam kredensial token. Anda kemudian dapat menggunakan kredensial token untuk mendapatkan objek klien layanan untuk digunakan dalam melakukan operasi resmi dari Azure Storage. Cara sederhana untuk mendapatkan token akses dan kredensial token adalah dengan menggunakan kelas DefaultAzureCredential yang disediakan oleh pustaka klien Azure Identity. Instans kelas ini mencoba untuk mendapatkan kredensial token dalam berbagai cara umum, dan instans ini bekerja di lingkungan pengembangan dan di Azure.

Untuk informasi selengkapnya tentang pustaka klien Azure Identity untuk bahasa Anda, lihat salah satu artikel berikut:

Menetapkan peran Azure untuk akses ke data

Saat prinsipal keamanan Azure AD mencoba mengakses data di akun Azure Storage, prinsipal keamanan tersebut harus memiliki izin ke sumber daya data. Baik perwakilan layanan adalah identitas terkelola di Azure maupun akun pengguna Azure AD yang menjalankan kode di lingkungan pengembangan, prinsipal keamanan harus diberi peran Azure yang memberi akses data di Azure Storage. Untuk informasi tentang menetapkan izin untuk akses data melalui Azure RBAC, lihat salah satu artikel berikut:

Catatan

Saat membuat akun Azure Storage, Anda tidak secara otomatis diberi izin untuk mengakses data melalui Azure AD. Anda harus secara eksplisit menetapkan peran Azure untuk Azure Storage ke diri Anda sendiri. Anda dapat menetapkannya di tingkat langganan, grup sumber daya, akun penyimpanan, atau kontainer, antrean, atau tabel.

Mengautentikasi pengguna di lingkungan pengembangan

Saat kode Anda berjalan di lingkungan pengembangan, autentikasi dapat ditangani secara otomatis atau mungkin memerlukan login browser, tergantung pada alat yang Anda gunakan. Misalnya, Microsoft Visual Studio dan Microsoft Visual Studio Code mendukung akses menyeluruh (SSO), sehingga akun pengguna Azure AD yang aktif secara otomatis digunakan untuk autentikasi. Untuk informasi selengkapnya tentang SSO, lihat Akses menyeluruh ke aplikasi.

Anda juga dapat membuat perwakilan layanan dan mengatur variabel lingkungan yang dapat dibaca oleh lingkungan pengembangan saat runtime.

Mengautentikasi perwakilan layanan di lingkungan pengembangan

Jika lingkungan pengembangan tidak mendukung akses menyeluruh atau login melalui browser web, maka Anda dapat menggunakan perwakilan layanan untuk mengautentikasi dari lingkungan pengembangan. Setelah Anda membuat pokok layanan, tambahkan nilai yang dikembalikan untuk perwakilan layanan ke variabel lingkungan.

Membuat perwakilan layanan

Untuk membuat perwakilan layanan dengan Azure CLI dan menetapkan peran Azure, panggil perintah az ad sp create-for-rbac. Berikan peran akses data Azure Storage untuk ditetapkan ke perwakilan layanan baru. Selain itu, berikan cakupan untuk penetapan peran. Untuk informasi selengkapnya tentang peran bawaan yang diberikan untuk Azure Storage, lihat Peran bawaan Azure.

Jika Anda tidak memiliki izin yang memadai untuk menetapkan peran ke perwakilan layanan, Anda mungkin perlu meminta pemilik akun atau administrator untuk melakukan penetapan peran.

Contoh berikut ini menggunakan Azure CLI untuk membuat perwakilan layanan baru dan menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan tersebut dengan cakupan akun:

az ad sp create-for-rbac \
    --name <service-principal> \
    --role "Storage Blob Data Contributor" \
    --scopes /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

Perintah az ad sp create-for-rbac mengembalikan daftar properti perwakilan layanan dalam format JSON. Salin nilai-nilai ini sehingga dapat Anda gunakan untuk membuat variabel lingkungan yang diperlukan di langkah berikutnya.

{
    "appId": "generated-app-ID",
    "displayName": "service-principal-name",
    "name": "http://service-principal-uri",
    "password": "generated-password",
    "tenant": "tenant-ID"
}

Untuk informasi selengkapnya tentang cara membuat perwakilan layanan, lihat salah satu artikel berikut:

Penting

Penetapan peran Azure mungkin membutuhkan waktu hingga 30 menit untuk disebarluaskan.

Atur variabel lingkungan

Pustaka klien Azure Identity membaca nilai dari tiga variabel lingkungan pada runtime untuk mengautentikasi perwakilan layanan. Tabel berikut menjelaskan nilai yang akan ditetapkan untuk setiap variabel lingkungan.

Variabel lingkungan Nilai
AZURE_CLIENT_ID ID aplikasi untuk perwakilan layanan
AZURE_TENANT_ID ID penyewa Microsoft Azure AD perwakilan layanan
AZURE_CLIENT_SECRET Kata sandi yang dihasilkan untuk perwakilan layanan

Penting

Setelah Anda mengatur variabel lingkungan, tutup dan buka kembali jendela konsol Anda. Jika Anda menggunakan Visual Studio atau lingkungan pengembangan lain, Anda mungkin perlu memulai ulang lingkungan pengembangan untuk mendaftarkan variabel lingkungan baru.

Untuk informasi selengkapnya, lihat Membuat identitas untuk aplikasi Azure di portal.

Dapatkan token akses untuk autorisasi

Pustaka klien Azure Identity menyediakan kelas yang dapat Anda gunakan untuk mendapatkan token akses untuk mengizinkan permintaan dengan Azure AD. Pustaka klien Azure Storage mencakup konstruktor untuk objek klien layanan yang menggunakan kredensial token sebagai parameter. Anda dapat menggunakan keduanya bersama-sama agar dapat dengan mudah mengautorisasi permintaan Azure Storage dengan kredensial Azure AD.

Menggunakan kelas DefaultAzureCredential direkomendasikan untuk sebagian besar skenario sederhana di mana aplikasi Anda perlu mendapatkan token akses baik di lingkungan pengembangan maupun di Azure. Berbagai jenis kredensial token juga tersedia untuk skenario lain.

Contoh berikut menunjukkan cara menggunakan DefaultAzureCredential untuk mendapatkan token di .NET. Aplikasi kemudian menggunakan token untuk membuat klien layanan baru, yang kemudian digunakan untuk membuat kontainer blob. Meskipun contoh ini menggunakan .NET dan layanan Blob Storage, kelas DefaultAzureCredential berperilaku sama dengan bahasa lain dan dengan layanan Azure lainnya.

static void CreateBlobContainer(string accountName, string containerName)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a token credential and create a service client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                  new DefaultAzureCredential());

    // Create the container if it does not exist.
    containerClient.CreateIfNotExists();
}

Untuk informasi selengkapnya tentang menggunakan kelas DefaultAzureCredential guna mengautorisasi identitas terkelola untuk mengakses Azure Storage, lihat pustaka klien Azure Identity untuk .NET.

Lihat juga