Mengotorisasi akses ke blob dengan menggunakan Microsoft Entra ID

Azure Storage mendukung penggunaan ID Microsoft Entra untuk mengotorisasi permintaan ke data blob. Dengan menggunakan Microsoft Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan, yang dapat menjadi pengguna, grup, atau perwakilan layanan aplikasi. MICROSOFT Entra ID mengautentikasi prinsip keamanan dan mengembalikan token OAuth 2.0. Gunakan token untuk mengotorisasi permintaan terhadap layanan Blob.

Anda dapat menggunakan otorisasi Microsoft Entra ID dengan semua akun penyimpanan tujuan umum dan Blob di semua wilayah publik dan cloud nasional. Hanya akun penyimpanan yang dibuat dengan menggunakan model penyebaran Azure Resource Manager yang mendukung otorisasi Microsoft Entra.

Penting

Untuk keamanan yang optimal, Microsoft merekomendasikan penggunaan ID Microsoft Entra dengan identitas terkelola untuk mengotorisasi permintaan terhadap data blob, antrean, dan tabel, jika memungkinkan. Otorisasi dengan ID Microsoft Entra dan identitas terkelola memberikan keamanan yang unggul dan kemudahan penggunaan melalui otorisasi Kunci Bersama. Untuk mempelajari selengkapnya tentang identitas terkelola, lihat Apa itu identitas terkelola untuk sumber daya Azure. Untuk contoh cara mengaktifkan dan menggunakan identitas terkelola untuk aplikasi .NET, lihat Mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure dengan .NET.

Untuk sumber daya yang dihosting di luar Azure, seperti aplikasi lokal, Anda dapat menggunakan identitas terkelola melalui Azure Arc. Misalnya, aplikasi yang berjalan di server dengan dukungan Azure Arc dapat menggunakan identitas terkelola untuk menyambungkan ke layanan Azure. Untuk mempelajari selengkapnya, lihat Mengautentikasi terhadap sumber daya Azure dengan server dengan dukungan Azure Arc.

Untuk skenario di mana tanda tangan akses bersama (SAS) digunakan, Microsoft merekomendasikan penggunaan SAS delegasi pengguna. SAS delegasi pengguna diamankan menggunakan kredensial Microsoft Entra, bukan kunci akun. Untuk mempelajari tentang signature akses bersama, lihat Memberikan akses terbatas ke data dengan signature akses bersama. Untuk contoh cara membuat dan menggunakan SAS delegasi pengguna dengan .NET, lihat Membuat SAS delegasi pengguna untuk blob dengan .NET.

Gambaran umum ID Microsoft Entra untuk blob

Ketika prinsip keamanan (pengguna, grup, atau aplikasi) mencoba mengakses sumber daya blob, permintaan harus diotorisasi, kecuali blob tersedia untuk akses anonim. Dengan menggunakan Microsoft Entra ID, akses ke sumber daya adalah proses dua langkah:

  1. Pertama, identitas prinsipal keamanan diautentikasi, dan token OAuth 2.0 dikembalikan.

    Langkah autentikasi mengharuskan aplikasi untuk meminta token akses OAuth 2.0 pada saat runtime. Jika aplikasi dijalankan dari dalam entitas Azure seperti Azure VM, sekumpulan skala mesin virtual, atau aplikasi Azure Functions, aplikasi dapat menggunakan identitas terkelola untuk mengakses data blob.

  2. Selanjutnya, token diteruskan sebagai bagian dari permintaan ke layanan Blob dan layanan menggunakannya untuk mengotorisasi akses ke sumber daya yang ditentukan.

    Langkah otorisasi mengharuskan satu atau beberapa peran RBAC Azure ditetapkan ke prinsipal keamanan yang mengajukan permintaan. Untuk informasi lebih lanjut, lihat Menetapkan peran Azure untuk hak akses.

Menggunakan akun Microsoft Entra dengan portal, PowerShell, atau Azure CLI

Untuk mempelajari tentang cara mengakses data di portal Azure dengan menggunakan akun Microsoft Entra, lihat akses Data dari portal Azure. Untuk mempelajari cara memanggil perintah Azure PowerShell atau Azure CLI dengan menggunakan akun Microsoft Entra, lihat akses Data dari PowerShell atau Azure CLI.

Menggunakan ID Microsoft Entra untuk mengotorisasi akses dalam kode aplikasi

Untuk mengotorisasi akses ke Azure Storage dengan menggunakan Microsoft Entra ID, gunakan salah satu pustaka klien berikut untuk memperoleh token OAuth 2.0:

Pustaka klien Azure Identity

Pustaka klien Azure Identity menyederhanakan proses mendapatkan token akses OAuth 2.0 untuk otorisasi dengan menggunakan Microsoft Entra ID melalui Azure SDK. Versi terbaru pustaka klien Azure Storage untuk .NET, Java, Python, JavaScript, dan Go terintegrasi dengan pustaka identitas Azure untuk setiap bahasa tersebut untuk menyediakan cara yang sederhana dan aman untuk 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. Saat kode Anda berjalan di Azure, prinsip keamanan dapat menjadi identitas terkelola untuk sumber daya Azure, perwakilan layanan, atau pengguna atau grup. Dalam lingkungan pengembangan, pustaka klien menyediakan token akses untuk pengguna atau prinsipal layanan untuk tujuan pengujian.

Token akses yang dikembalikan oleh pustaka klien Azure Identity dibungkus dalam kredensial token. Anda kemudian dapat menggunakan kredensial token untuk mendapatkan objek klien layanan yang digunakan dalam melakukan operasi terautentikasi pada Azure Storage. Cara sederhana untuk mendapatkan token akses dan kredensial token adalah dengan menggunakan kelas DefaultAzureCredential yang disediakan pustaka klien Azure Identity. DefaultAzureCredential mencoba mendapatkan kredensial token dengan secara berurutan mencoba beberapa jenis kredensial yang berbeda. DefaultAzureCredential berfungsi di lingkungan pengembangan dan di Azure.

Tabel berikut menunjuk ke informasi tambahan untuk mengotorisasi akses ke data dalam berbagai skenario:

Bahasa .NET Java JavaScript Phyton Ayo pergi
Gambaran umum autentikasi dengan MICROSOFT Entra ID Cara mengautentikasi aplikasi .NET dengan layanan Azure Autentikasi Azure dengan Java dan Azure Identity Mengautentikasi aplikasi JavaScript ke Azure menggunakan Azure SDK Mengautentikasi aplikasi Python ke Azure menggunakan Azure SDK
Autentikasi menggunakan service principal pengembang Mengautentikasi aplikasi .NET ke layanan Azure selama pengembangan lokal menggunakan prinsipal layanan Autentikasi Azure dengan perwakilan layanan Aplikasi JS autentikasi ke layanan Azure dengan perwakilan layanan Mengautentikasi aplikasi Python ke layanan Azure selama pengembangan lokal menggunakan prinsipal layanan Autentikasi Azure SDK for Go dengan perwakilan layanan
Autentikasi menggunakan akun pengembang atau pengguna Mengautentikasi aplikasi .NET ke layanan Azure selama pengembangan lokal menggunakan akun pengembang Autentikasi Azure dengan kredensial pengguna Mengautentikasi aplikasi JS ke layanan Azure dengan akun pengembang Mengautentikasi aplikasi Python ke layanan Azure selama pengembangan lokal menggunakan akun pengembang Autentikasi Azure dengan Azure SDK for Go
Autentikasi dari aplikasi yang dihosting Azure Mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure dengan Azure SDK untuk .NET Mengautentikasi aplikasi Java yang dihosting Azure Mengautentikasi aplikasi JavaScript yang dihosting Azure ke sumber daya Azure dengan Azure SDK for JavaScript Mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure dengan Azure SDK for Python Autentikasi dengan Azure SDK for Go menggunakan identitas terkelola
Autentikasi dari aplikasi lokal Mengautentikasi ke sumber daya Azure dari aplikasi .NET yang dihosting secara lokal Mengautentikasi aplikasi JavaScript lokal ke sumber daya Azure Mengautentikasi ke sumber daya Azure dari aplikasi Python yang dihosting secara lokal
Gambaran umum pustaka identitas klien Pustaka klien Azure Identity untuk .NET Pustaka klien Azure Identity untuk Java Pustaka klien Azure Identity untuk JavaScript Perpustakaan klien Azure Identity untuk Python Perpustakaan klien Azure Identity untuk Go

Pustaka Autentikasi Microsoft (MSAL)

Meskipun Microsoft merekomendasikan penggunaan pustaka klien Azure Identity jika memungkinkan, pustaka MSAL mungkin sesuai untuk digunakan dalam skenario lanjutan tertentu. Untuk informasi selengkapnya, lihat Pelajari tentang MSAL.

Saat Anda menggunakan MSAL untuk memperoleh token OAuth untuk akses ke Azure Storage, Anda perlu memberikan ID sumber daya Microsoft Entra. ID sumber daya Microsoft Entra menunjukkan audiens yang tokennya dikeluarkan dapat digunakan untuk menyediakan akses ke sumber daya Azure. Dalam kasus Azure Storage, ID sumber daya mungkin khusus untuk satu akun penyimpanan, atau mungkin berlaku untuk akun penyimpanan apa pun.

Saat Anda memberikan ID sumber daya yang khusus untuk satu akun penyimpanan dan layanan, ID sumber daya digunakan untuk memperoleh token untuk mengotorisasi permintaan ke akun dan layanan yang ditentukan saja. Tabel berikut mencantumkan nilai yang akan digunakan untuk ID sumber daya, berdasarkan cloud yang sedang Anda kerjakan. Ganti <account-name> dengan nama akun penyimpanan Anda.

Awan ID Sumber Daya
Azure Global https://<account-name>.blob.core.windows.net
Azure Government https://<account-name>.blob.core.usgovcloudapi.net
Azure Tiongkok 21Vianet https://<account-name>.blob.core.chinacloudapi.cn

Anda juga dapat memberikan ID sumber daya yang berlaku untuk akun penyimpanan apa pun, seperti yang ditunjukkan dalam tabel berikut. ID sumber daya ini sama untuk semua cloud publik dan berdaulat, dan digunakan untuk memperoleh token untuk mengotorisasi permintaan ke akun penyimpanan apa pun.

Awan ID Sumber Daya
Azure Global
Azure Government
Azure Tiongkok 21Vianet
https://storage.azure.com/

Menetapkan peran Azure untuk hak akses

Microsoft Entra mengotorisasi hak akses ke sumber daya aman melalui Azure RBAC. Azure Storage mendefinisikan set peran RBAC bawaan yang mencakup set izin umum yang digunakan untuk mengakses data blob. Anda juga dapat menentukan peran khusus untuk akses ke data blob. Untuk mempelajari selengkapnya tentang menetapkan peran Azure untuk akses blob, lihat Menetapkan peran Azure untuk akses ke data blob.

Perwakilan keamanan Microsoft Entra dapat berupa pengguna, grup, perwakilan layanan aplikasi, atau identitas terkelola untuk sumber daya Azure. Peran RBAC yang Anda tetapkan ke entitas keamanan menentukan izin yang dimiliki entitas tersebut untuk sumber daya yang ditentukan.

Untuk mempelajari tentang cara menetapkan peran Azure untuk akses blob, lihat Tugaskan peran Azure untuk akses ke data blob.

Dalam beberapa kasus, Anda mungkin perlu mengaktifkan akses yang lebih rinci ke sumber daya blob atau menyederhanakan izin ketika Anda memiliki banyak penetapan peran untuk sumber daya penyimpanan. Gunakan kontrol akses berbasis atribut Azure (Azure ABAC) untuk mengonfigurasi kondisi pada penetapan peran. Anda dapat menggunakan ketentuan dengan peran kustom atau memilih peran bawaan. Untuk informasi lebih lanjut tentang mengonfigurasi kondisi untuk sumber daya penyimpanan Azure dengan ABAC, lihat Mengotorisasi akses ke blob menggunakan kondisi penetapan peran Azure (pratinjau). Untuk detail tentang kondisi yang didukung untuk operasi data blob, lihat Tindakan dan atribut untuk kondisi penetapan peran Azure di Azure Storage (pratinjau).

Catatan

Saat membuat akun Azure Storage, Anda tidak secara otomatis diberi izin untuk mengakses data melalui Microsoft Entra ID. Anda harus secara eksplisit menetapkan sendiri peran Azure untuk akses ke Blob Storage. Anda dapat menetapkannya di tingkat langganan, grup sumber daya, akun penyimpanan, atau kontainer.

Cakupan sumber daya

Sebelum Anda menetapkan peran Azure RBAC ke perwakilan keamanan, tentukan cakupan akses yang harus dimiliki perwakilan keamanan. Selalu berikan hanya cakupan sesempit mungkin. Peran Azure RBAC yang ditentukan pada cakupan yang lebih luas diwariskan oleh sumber daya di bawahnya.

Anda dapat menjangkau akses ke sumber daya blob Azure di tingkat berikut, dimulai dengan cakupan tersempit:

  • Kontainer tunggal. Pada cakupan ini, penetapan peran berlaku untuk semua blob dalam kontainer, serta properti dan metadata kontainer.
  • Akun penyimpanan. Pada cakupan ini, penetapan peran berlaku untuk semua kontainer dan blobnya.
  • Grup sumber daya. Pada cakupan ini, penetapan peran berlaku untuk semua kontainer di semua akun penyimpanan di grup sumber daya.
  • Langganan. Pada cakupan ini, penetapan peran berlaku untuk semua kontainer di semua akun penyimpanan pada semua grup sumber daya dalam langganan.
  • Grup manajemen. Pada cakupan ini, penetapan peran berlaku untuk semua kontainer di semua akun penyimpanan di semua grup sumber daya pada semua langganan di grup manajemen.

Untuk informasi selengkapnya tentang cakupan penetapan peran Azure RBAC, lihat Memahami cakupan untuk Azure RBAC.

Peran bawaan Azure untuk blob

Azure RBAC menyediakan beberapa peran bawaan untuk mengotorisasi akses ke data blob dengan menggunakan Microsoft Entra ID dan OAuth. Beberapa contoh peran yang menyediakan izin ke sumber daya data di Azure Storage meliputi:

Untuk mempelajari cara menetapkan peran bawaan Azure ke prinsip keamanan, lihat Menetapkan peran Azure untuk akses ke data blob. Untuk mempelajari cara mencantumkan peran RBAC Azure dan izinnya, lihat Definisi peran List Azure.

Untuk informasi selengkapnya tentang penentuan peran bawaan Azure Storage, lihat Memahami definisi peran. Untuk informasi tentang membuat peran kustom Azure, lihat Peran kustom Azure.

Hanya peran yang secara eksplisit ditentukan untuk akses data yang mengizinkan prinsipal keamanan mengakses data blob. Peran bawaan seperti Pemilik, Kontributor, dan Kontributor Akun Penyimpanan mengizinkan prinsip keamanan untuk mengelola akun penyimpanan, tetapi tidak menyediakan akses ke data blob dalam akun tersebut melalui ID Microsoft Entra. Namun, jika peran menyertakan Microsoft. Storage/storageAccounts/listKeys/action, lalu pengguna yang perannya ditetapkan dapat mengakses data di akun penyimpanan melalui otorisasi Kunci Bersama dengan menggunakan kunci akses akun. Untuk informasi selengkapnya, lihat Memilih cara memberi otorisasi akses ke data blob di portal Microsoft Azure.

Untuk informasi terperinci tentang peran bawaan Azure untuk Azure Storage untuk layanan data dan layanan manajemen, lihat bagian Penyimpanan di peran bawaan Azure untuk Azure RBAC. Selain itu, untuk informasi tentang berbagai jenis peran yang menyediakan izin di Azure, lihat Peran Azure, peran Microsoft Entra, dan peran administrator langganan klasik.

Penting

Azure penetapan peran dapat memakan waktu hingga 30 menit untuk disebarluaskan.

Izin akses untuk operasi data

Untuk detail tentang izin yang diperlukan untuk memanggil operasi Blob service tertentu, lihat Izin untuk memanggil operasi data.

Penundaan propagasi penugasan peran untuk akses data blob

Saat Anda menetapkan peran atau menghapus penetapan peran, diperlukan waktu hingga 10 menit agar perubahan diterapkan. Jika Anda menetapkan peran di cakupan grup manajemen, itu bisa memakan waktu lebih lama.

Anda dapat menetapkan peran bawaan dengan tindakan data di cakupan grup manajemen. Namun, dalam skenario yang jarang terjadi, mungkin ada penundaan yang signifikan (hingga 12 jam) sebelum izin tindakan data efektif untuk jenis sumber daya tertentu. Izin akhirnya diterapkan. Untuk peran bawaan dengan tindakan data, menambahkan atau menghapus penetapan peran di cakupan grup manajemen tidak dianjurkan untuk skenario yang memerlukan aktivasi atau pencabutan izin secara tepat waktu, seperti pada Microsoft Entra Privileged Identity Management (PIM).

Jika Anda mengatur izin yang sesuai untuk mengakses data melalui Microsoft Entra ID tetapi tidak dapat mengakses data tersebut, misalnya Anda mendapatkan kesalahan "AuthorizationPermissionMismatch", pastikan Anda memberikan cukup waktu agar perubahan izin yang Anda buat di Microsoft Entra ID dapat direplikasi. Selain itu, pastikan Anda tidak memiliki tugas penolakan yang memblokir akses Anda. Untuk informasi selengkapnya, lihat Memahami penetapan penolakan Azure.

Mengakses data dengan akun Microsoft Entra

Anda dapat mengotorisasi akses ke data blob melalui portal Azure, PowerShell, atau Azure CLI baik dengan menggunakan akun Microsoft Entra Anda atau dengan menggunakan kunci akses akun (otorisasi Kunci Bersama).

Perhatian

Otorisasi dengan Kunci Bersama tidak disarankan karena mungkin kurang aman. Untuk keamanan optimal, nonaktifkan otorisasi melalui Kunci Bersama untuk akun penyimpanan Anda, seperti yang dijelaskan dalam Mencegah otorisasi Kunci Bersama untuk akun Azure Storage.

Penggunaan kunci akses dan string koneksi harus dibatasi pada bukti awal aplikasi konsep atau prototipe pengembangan yang tidak mengakses data produksi atau sensitif. Jika tidak, kelas autentikasi berbasis token yang tersedia di Azure SDK harus selalu disukai saat mengautentikasi ke sumber daya Azure.

Microsoft menyarankan agar klien menggunakan ID Microsoft Entra atau tanda tangan akses bersama (SAS) untuk mengotorisasi akses ke data di Azure Storage. Untuk informasi selengkapnya, lihat Mengotorisasi operasi untuk akses data.

Akses data dari portal Azure

portal Azure dapat menggunakan akun Microsoft Entra atau kunci akses akun Anda untuk mengakses data blob di akun penyimpanan Azure. Skema otorisasi yang digunakan portal Azure bergantung pada peran Azure yang ditetapkan untuk Anda.

Saat Anda mencoba mengakses data blob, portal Azure terlebih dahulu memeriksa apakah Anda telah diberi peran Azure dengan Microsoft. Storage/storageAccounts/listkeys/action. Jika Anda telah diberi peran dengan tindakan ini, portal Azure menggunakan kunci akun untuk mengakses data blob melalui otorisasi Kunci Bersama. Jika Anda tidak diberi peran dengan tindakan ini, portal Azure mencoba mengakses data dengan menggunakan akun Microsoft Entra Anda.

Untuk mengakses data blob dari portal Azure dengan menggunakan akun Microsoft Entra, Anda memerlukan izin untuk mengakses data blob, dan Anda juga memerlukan izin untuk menavigasi melalui sumber daya akun penyimpanan di portal Azure. Peran bawaan yang disediakan oleh Azure Storage memberikan akses ke sumber daya blob, tetapi tidak memberikan izin ke sumber daya akun penyimpanan. Untuk alasan ini, akses ke portal juga memerlukan penugasan peran Azure Resource Manager seperti peran Reader (Pembaca) yang tercakup ke tingkat akun penyimpanan atau yang lebih tinggi. Peran Pembaca memberi izin yang paling terbatas, tetapi peran Azure Resource Manager lain yang memberi akses ke sumber daya manajemen akun penyimpanan juga dapat diterima. Untuk mempelajari selengkapnya tentang cara menetapkan izin kepada pengguna untuk akses data di portal Azure dengan akun Microsoft Entra, lihat Menetapkan peran Azure untuk akses ke data blob.

Portal Azure menunjukkan skema otorisasi yang digunakan saat Anda membuka kontainer. Untuk informasi selengkapnya tentang akses data di portal, lihat Memilih cara mengotorisasi akses ke data blob di portal Azure.

Akses data dari PowerShell atau Azure CLI

Azure CLI dan PowerShell mendukung masuk dengan kredensial Microsoft Entra. Setelah Anda masuk, sesi Anda berjalan di bawah kredensial tersebut. Untuk mempelajari lebih lanjut, lihat salah satu artikel berikut:

Dukungan fitur

Dukungan untuk fitur ini mungkin terpengaruh dengan mengaktifkan Data Lake Storage Gen2, protokol Network File System (NFS) 3.0, atau SSH File Transfer Protocol (SFTP). Jika Anda telah mengaktifkan salah satu kemampuan ini, lihat Dukungan fitur Blob Storage di akun Azure Storage untuk menilai dukungan untuk fitur ini.

Mengotorisasi operasi data blob dengan MICROSOFT Entra ID hanya didukung untuk REST API versi 2017-11-09 dan yang lebih baru. Untuk informasi selengkapnya, lihat Pengelolaan versi untuk layanan Azure Storage.

Langkah berikutnya