Mengakses Azure Storage dari aplikasi web menggunakan identitas terkelola

Pelajari cara mengakses Azure Storage untuk aplikasi web (bukan pengguna masuk) yang berjalan di Azure App Service dengan menggunakan identitas terkelola.

Diagram that shows how to access storage.

Anda ingin menambahkan akses ke bidang data Azure (Penyimpanan Azure, Azure SQL Database, Azure Key Vault, atau layanan lainnya) dari aplikasi web Anda. Anda dapat menggunakan kunci bersama, tetapi kemudian Anda harus khawatir tentang keamanan operasional siapa yang dapat membuat, menyebarkan, dan mengelola rahasia. Ada kemungkinan juga bahwa kunci dapat diperiksa ke GitHub, yang peretas tahu cara memindainya. Cara yang lebih aman untuk memberi aplikasi web Anda akses ke data adalah dengan menggunakan identitas terkelola.

Identitas terkelola dari MICROSOFT Entra ID memungkinkan App Service mengakses sumber daya melalui kontrol akses berbasis peran (RBAC), tanpa memerlukan kredensial aplikasi. Setelah menetapkan identitas terkelola ke aplikasi web Anda, Azure mengurus pembuatan dan distribusi sertifikat. Orang tidak perlu khawatir mengelola rahasia atau kredensial aplikasi.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat identitas terkelola yang ditetapkan sistem di aplikasi web.
  • Buat akun penyimpanan dan wadah Azure Blob Storage.
  • Akses penyimpanan dari aplikasi web dengan menggunakan identitas terkelola.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

Mengaktifkan identitas terkelola pada aplikasi

Jika Anda membuat dan memublikasikan aplikasi web melalui Visual Studio, identitas terkelola diaktifkan di aplikasi untuk Anda. Di layanan aplikasi Anda, pilih Identitas di panel kiri, lalu pilih Sistem yang ditetapkan. Verifikasikan bahwa Status diatur ke Aktif. Jika tidak, pilih Simpan lalu pilih Ya untuk mengaktifkan identitas terkelola yang ditetapkan sistem. Ketika identitas terkelola diaktifkan, status diatur ke Aktif dan ID objek tersedia.

Screenshot that shows the System assigned identity option.

Langkah ini membuat ID objek baru, berbeda dari ID aplikasi yang dibuat di panel Autentikasi/Otorisasi. Salin ID objek identitas terkelola yang ditetapkan sistem. Anda akan membutuhkannya nanti.

Membuat akun penyimpanan dan kontainer Penyimpanan Blob

Sekarang Anda siap untuk membuat akun penyimpanan dan kontainer Penyimpanan Blob.

Setiap akun penyimpanan harus termasuk dalam grup sumber daya Azure. Grup sumber daya adalah kontainer logis untuk mengelompokkan layanan Azure Anda. Saat membuat akun penyimpanan, Anda memiliki opsi untuk membuat grup sumber daya baru atau menggunakan grup sumber daya yang sudah ada. Artikel ini memperlihatkan cara membuat grup sumber daya baru.

Akun penyimpanan v2 tujuan umum menyediakan akses ke semua layanan Penyimpanan Azure: blob, file, antrian, tabel, dan disk. Langkah-langkah yang diuraikan di sini membuat akun penyimpanan v2 tujuan umum, tetapi langkah-langkah untuk membuat semua jenis akun penyimpanan serupa.

Blob di Azure Storage diatur ke dalam kontainer. Sebelum Anda dapat mengunggah blob nanti dalam tutorial ini, Anda harus terlebih dahulu membuat wadah.

Untuk membuat akun penyimpanan v2 tujuan umum di portal Microsoft Azure, ikuti langkah-langkah ini.

  1. Pada menu portal Microsoft Azure, pilih Semua layanan. Pada daftar sumber daya, masukkan Akun Penyimpanan. Saat Anda mulai mengetik, daftar akan memfilter berdasarkan input Anda. Pilih Akun Penyimpanan.

  2. Di jendela Akun Penyimpanan yang muncul, pilih Buat.

  3. Pilih langganan untuk membuat akun penyimpanan.

  4. Di bawah bidang Grup sumber daya, pilih grup sumber daya yang berisi aplikasi web Anda dari menu turun bawah.

  5. Selanjutnya, masukkan nama untuk akun penyimpanan Anda. Nama yang Anda pilih harus unik di seluruh Azure. Nama ini juga harus memiliki panjang 3 dan 24 karakter, dan dapat menyertakan angka dan huruf kecil saja.

  6. Pilih lokasi untuk akun penyimpanan Anda, atau gunakan lokasi default.

  7. Untuk Performa, pilih opsi Standar .

  8. Untuk Redundansi, pilih opsi Penyimpanan redundan lokal (LRS) dari menu dropdown.

  9. Pilih Tinjau untuk meninjau pengaturan akun penyimpanan Anda dan membuat akun.

  10. Pilih Buat.

Untuk membuat kontainer Penyimpanan Blob di Azure Storage, ikuti langkah-langkah ini.

  1. Buka akun penyimpanan baru Anda di portal Microsoft Azure.

  2. Di menu sebelah kiri untuk akun penyimpanan, gulir ke bagian Penyimpanan data, lalu pilih Penampung.

  3. Pilih tombol + Kontainer.

  4. Ketik Nama untuk kontainer baru Anda. Nama kontainer harus huruf kecil, harus dimulai dengan huruf atau angka, dan hanya boleh menyertakan huruf, angka, dan karakter tanda hubung (-).

  5. Tetapkan tingkat akses publik ke kontainer. Tingkat default adalah Privat (tidak ada akses anonim).

  6. Pilih Buat untuk membuat kontainer.

Memberikan akses ke akun penyimpanan

Anda perlu memberikan akses aplikasi web ke akun penyimpanan sebelum dapat membuat, membaca, atau menghapus blob. Pada langkah sebelumnya, Anda mengonfigurasi aplikasi web yang berjalan di App Service dengan identitas terkelola. Menggunakan Azure RBAC, Anda dapat memberikan akses identitas terkelola ke sumber daya lain, sama seperti prinsip keamanan lainnya. Peran Kontributor Data Blob Penyimpanan memberi aplikasi web (diwakili oleh identitas terkelola yang ditetapkan sistem) membaca, menulis, dan menghapus akses ke kontainer dan data blob.

Catatan

Beberapa operasi pada kontainer blob privat tidak didukung oleh Azure RBAC, seperti melihat blob atau menyalin blob antar akun. Kontainer blob dengan tingkat akses privat memerlukan token SAS untuk operasi apa pun yang tidak diotorisasi oleh Azure RBAC. Untuk informasi selengkapnya, lihat Kapan menggunakan tanda tangan akses bersama.

Di portal Microsoft Azure, masuk ke akun penyimpanan Anda untuk memberikan akses aplikasi web Anda. Pilih Kontrol akses (IAM) di panel kiri, lalu pilih Penetapan peran. Anda akan melihat daftar siapa yang memiliki akses ke akun penyimpanan. Sekarang Anda ingin menambahkan penetapan peran ke robot, layanan aplikasi yang membutuhkan akses ke akun penyimpanan. Pilih Tambahkan>Tambahkan penetapan peran untuk membuka halaman Tambahkan penetapan peran.

  1. Di tab Jenis penugasan, pilih Jenis fungsi pekerjaan lalu Berikutnya.

  2. Di tab Peran , pilih Peran Kontributor Data Blob Penyimpanan dari menu dropdown lalu pilih Berikutnya.

  3. Di tab Anggota, pilih Tetapkan akses ke identitas terkelola> lalu pilih Anggota ->Pilih anggota. Di jendela Pilih identitas terkelola, temukan dan pilih identitas terkelola yang dibuat untuk App Service Anda di menu dropdown Identitas terkelola. Pilih tombol Pilih.

  4. Pilih Tinjau dan tetapkan lalu pilih Tinjau dan tetapkan sekali lagi.

Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

Aplikasi web Anda sekarang memiliki akses ke akun penyimpanan Anda.

Akses Blob Storage

Kelas DefaultAzureCredential digunakan untuk mendapatkan kredensial token untuk kode Anda untuk mengotorisasi permintaan ke Azure Storage. Buat contoh kelas DefaultAzureCredential, yang menggunakan identitas terkelola untuk mengambil token dan melampirkannya ke klien layanan. Contoh kode berikut mendapatkan kredensial token terautentikasi dan menggunakannya untuk membuat objek klien layanan, yang mengunggah blob baru.

Untuk melihat kode ini sebagai bagian dari aplikasi sampel, lihat sampel di GitHub.

Instal paket pustaka klien

Instal paket Blob Storage NuGet untuk bekerja dengan Blob Storage dan pustaka klien Azure Identity untuk paket NuGet .NET untuk mengautentikasi dengan kredensial Microsoft Entra. Instal pustaka klien dengan menggunakan antarmuka baris perintah .NET (CLI) atau Konsol Manajer Paket di Visual Studio.

.NET CLI

Buka baris perintah, dan beralih ke direktori yang memuat file proyek Anda.

Jalankan perintah instalasi.

dotnet add package Azure.Storage.Blobs

dotnet add package Azure.Identity

Konsol Manajer Paket

Buka project atau solusi di Visual Studio, dan buka konsol dengan menggunakan perintah Alat>NuGet Package Manager>Package Manager Console.

Jalankan perintah instalasi.

Install-Package Azure.Storage.Blobs

Install-Package Azure.Identity

Contoh

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // 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 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.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Membersihkan sumber daya

Jika Anda sudah selesai dengan tutorial ini dan tidak lagi memerlukan aplikasi web atau sumber daya terkait, bersihkan sumber daya yang Anda buat.

Langkah berikutnya