Mengotorisasi akses ke data blob dengan identitas terkelola untuk sumber daya Azure

Azure Blob Storage mendukung autentikasi Azure Active Directory (Azure AD) dengan identitas terkelola untuk sumber daya Azure. Identitas terkelola untuk sumber daya Azure dapat memberi otorisasi akses ke data blob menggunakan info masuk Azure AD dari aplikasi yang berjalan di komputer virtual (VM) Azure, aplikasi fungsi, set skala mesin virtual, dan layanan lainnya. Dengan menggunakan identitas terkelola untuk sumber daya Azure bersama dengan autentikasi Microsoft Azure AD, Anda dapat menghindari penyimpanan informasi masuk dengan aplikasi yang berjalan di cloud.

Artikel ini menunjukkan cara memberi otorisasi akses ke data blob dari Azure VM menggunakan identitas terkelola untuk Azure Resources.

Mengaktifkan identitas terkelola di VM

Sebelum Anda dapat menggunakan identitas terkelola untuk Azure Resources untuk memberi otorisasi akses blob dari VM, Anda harus terlebih dahulu mengaktifkan identitas terkelola untuk Azure Resources di VM. Untuk mempelajari cara mengaktifkan identitas terkelola untuk Azure Resources, lihat salah satu artikel berikut ini:

Untuk informasi selengkapnya tentang identitas terkelola, lihat Identitas terkelola untuk sumber daya Azure.

Menetapkan peran RBAC ke identitas terkelola

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

Catatan

Saat membuat akun Azure Storage, Anda tidak secara otomatis diberi izin untuk mengakses data melalui Microsoft 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.

Menggunakan identitas terkelola untuk membuat blob blok di .NET

Pustaka klien Azure Identity menyederhanakan proses mendapatkan token akses OAuth 2.0 untuk otorisasi dengan Azure Active Directory (Azure AD) melalui SDK Azure. Saat Anda menggunakan pustaka klien Azure Identity untuk mendapatkan token akses, Anda dapat menggunakan kode yang sama untuk mendapatkan token baik aplikasi Anda berjalan di lingkungan pengembangan atau di Azure. Untuk informasi selengkapnya, lihat Menggunakan pustaka Azure Identity untuk mendapatkan token akses untuk otorisasi.

Untuk mendapatkan token yang dapat digunakan kode Anda untuk memberi otorisasi permintaan ke Azure Storage, buat instans kelas DefaultAzureCredential. Kemudian, Anda dapat menggunakan token untuk membuat objek klien layanan yang diotorisasi untuk melakukan operasi data di Azure Storage. Untuk informasi selengkapnya tentang menggunakan kelas DefaultAzureCredential untuk mengotorisasi identitas terkelola untuk mengakses Azure Storage, lihat pustaka klien Azure Identity untuk .NET.

Contoh kode berikut menunjukkan cara mendapatkan token akses dan menggunakannya untuk membuat objek klien layanan, kemudian gunakan klien layanan untuk mengunggah blob baru:

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

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

    try
    {
        // Create the container if it does not exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        string blobContents = "This is a block blob.";
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Catatan

Untuk memberi otorisasi permintaan terhadap data blob dengan Azure AD, Anda harus menggunakan HTTPS untuk permintaan tersebut.

Langkah berikutnya