Tutorial: Mengakses Azure Storage dari aplikasi web

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 Azure Active Directory (Azure AD) memungkinkan Layanan Aplikasi untuk 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:

  • Buat 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. Di 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 Tambahkan.

  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. Biarkan bidang ini diatur ke nilai defaultnya:

    Bidang Nilai
    Model Penyebaran Resource Manager
    Performa Standard
    Jenis akun StorageV2 (general-purpose v2)
    Replikasi Penyimpanan lewah geo akses baca (RA-GRS)
    Tingkat penyimpanan Panas
  8. Pilih Tinjau + Buat untuk meninjau pengaturan akun penyimpanan Anda dan membuat akun.

  9. 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 layanan Blob, lalu pilih Kontainer.

  3. Pilih tombol + Kontainer.

  4. Ketikkan nama untuk kontainer baru Anda. Nama kontainer harus berhuruf kecil, harus diawali dengan huruf atau angka, dan hanya dapat menyertakan huruf, angka, dan karakter tanda hubung (-).

  5. Atur tingkat akses publik ke kontainer. Tingkat defaultnya adalah Privat (tanpa akses anonim) .

  6. Pilih OK 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.

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 TambahkanTambahkan penetapan peran untuk membuka halaman Tambahkan penetapan peran.

Tetapkan peran Kontributor Data Blob Penyimpanan ke App Service di cakupan langganan. Untuk langkah-langkah lebih detail, lihat Menetapkan peran Azure menggunakan portal Microsoft 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 Penyimpanan Blob dan pustaka klien Azure Identity untuk paket .NET NuGet untuk mengautentikasi dengan kredensial Azure AD. Instal pustaka klien dengan menggunakan antarmuka baris perintah .NET Core atau Package Manager Console di Visual Studio.

Baris perintah .NET Core

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 proyek atau solusi di Visual Studio, dan buka konsol dengan menggunakan perintah ToolsNuGet Package ManagerPackage 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

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat identitas terkelola yang ditetapkan sistem.
  • Membuat akun penyimpanan dan kontainer Penyimpanan Blob.
  • Akses penyimpanan dari aplikasi web dengan menggunakan identitas terkelola.