Otorisasi dengan Azure Active Directory

Azure Storage menyediakan integrasi dengan Azure Active Directory (Azure AD) untuk otorisasi permintaan berbasis identitas ke layanan Blob, Antrean, dan Tabel. Dengan Azure AD, Anda dapat menggunakan kontrol akses berbasis peran (RBAC) untuk memberikan akses ke sumber daya blob, antrean, dan tabel kepada pengguna, grup, atau aplikasi. Anda dapat memberikan izin yang terlingkup ke tingkat kontainer, antrean, atau tabel individual.

Untuk mempelajari selengkapnya tentang integrasi Azure AD di Azure Storage, lihat Mengotorisasi akses ke blob dan antrean Azure menggunakan Azure Active Directory.

Untuk informasi selengkapnya tentang keuntungan menggunakan Azure Active Directory di aplikasi Anda, lihat Mengintegrasikan dengan Azure Active Directory.

Tip

Mengotorisasi akses ke data blob, antrean, dan tabel dengan Azure AD memberikan keamanan yang unggul dan kemudahan penggunaan melalui opsi otorisasi lainnya. Saat Anda menggunakan Microsoft Azure AD untuk memberikan otorisasi permintaan yang dibuat dari aplikasi Anda, Anda tidak perlu menyimpan kunci akses akun Anda dengan kode Anda, seperti yang Anda lakukan dengan otorisasi Kunci Bersama. Meskipun Anda dapat terus menggunakan otorisasi Kunci Bersama dengan aplikasi blob, antrean, dan tabel Anda, Microsoft merekomendasikan untuk pindah ke Azure AD jika memungkinkan. Untuk informasi selengkapnya tentang integrasi Azure AD di Azure Storage, lihat Mengotorisasi akses ke blob dan antrean Azure menggunakan Azure Active Directory.

Menggunakan token akses OAuth untuk autentikasi

Azure Storage menerima token akses OAuth 2.0 dari penyewa Azure AD yang terkait dengan langganan yang berisi akun penyimpanan. Azure Storage menerima token akses untuk:

  • Pengguna
  • Perwakilan layanan
  • Identitas yang dikelola untuk sumber daya Azure
  • Aplikasi yang menggunakan izin yang didelegasikan oleh pengguna

Azure Storage mengekspos cakupan delegasi tunggal bernama user_impersonation yang memungkinkan aplikasi untuk mengambil tindakan apa pun yang diizinkan oleh pengguna.

Untuk meminta token untuk Azure Storage, tentukan nilai https://storage.azure.com/ untuk ID Sumber Daya.

Untuk informasi selengkapnya tentang meminta token akses dari Azure Active Directory untuk pengguna dan perwakilan layanan, lihat Skenario autentikasi untuk Azure Active Directory.

Untuk informasi selengkapnya tentang meminta token akses untuk sumber daya yang dikonfigurasi dengan identitas terkelola, lihat Cara menggunakan identitas terkelola untuk sumber daya Azure di Azure VM untuk memperoleh token akses.

Memanggil operasi penyimpanan dengan token OAuth

Untuk memanggil operasi layanan Blob, Antrean, dan Tabel menggunakan token akses OAuth, teruskan token akses di header Otorisasi menggunakan skema Pembawa , dan tentukan versi layanan 2017-11-09 atau lebih tinggi, seperti yang ditunjukkan dalam contoh berikut:

Request:
GET /container/file.txt
x-ms-version: 2017-11-09
Authorization: Bearer eyJ0eXAiO...V09ccgQ
User-Agent: PostmanRuntime/7.6.0
Accept: */*
Host: sampleoautheast2.blob.core.windows.net
accept-encoding: gzip, deflate

Response:
HTTP/1.1 200
status: 200
Content-Length: 28
Content-Type: text/plain
Content-MD5: dxG7IgOBzApXPcGHxGg5SA==
Last-Modified: Wed, 30 Jan 2019 07:21:32 GMT
Accept-Ranges: bytes
ETag: "0x8D686838F9E8BA7"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 09f31964-e01e-00a3-8066-d4e6c2000000
x-ms-version: 2017-11-09
x-ms-creation-time: Wed, 29 Aug 2018 04:22:47 GMT
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
x-ms-server-encrypted: true
Date: Wed, 06 Mar 2019 21:50:50 GMT
Welcome to Azure Storage!!

Tantangan Pembawa

Tantangan pembawa adalah bagian dari protokol OAuth RFC 6750 dan digunakan untuk penemuan otoritas. Untuk permintaan anonim, atau permintaan dengan token pembawa OAuth yang tidak valid, server akan mengembalikan kode status 401 (Tidak Sah) dengan penyedia identitas dan informasi sumber daya. Lihat tautan tentang cara menggunakan nilai-nilai ini selama autentikasi dengan Azure AD.

Azure Storage layanan Blob dan Antrean mengembalikan tantangan pembawa untuk versi 2019-12-12 dan yang lebih baru. layanan Azure Storage Table mengembalikan tantangan pembawa dari versi 2020-12-06. Azure Data Lake Storage Gen2 mengembalikan tantangan pembawa untuk versi 2017-11-09 dan yang lebih baru.

Berikut ini adalah contoh respons tantangan pembawa ketika permintaan klien tidak menyertakan token pembawa dalam permintaan blob unduhan anonim:

Request:
GET /container/file.txt
x-ms-version: 2019-12-12
Host: sampleoautheast2.blob.core.windows.net

Response:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer authorization_uri=https://login.microsoftonline.com/<tenant_id>/oauth2/authorize resource_uri=https://storage.azure.com

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>NoAuthenticationInformation</Code>
    <Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:ec4f02d7-1003-0006-21f9-c55bc8000000
Time:2020-01-08T08:01:46.2063459Z</Message>
</Error>
Parameter Deskripsi
authorization_uri URI (titik akhir fisik) server otorisasi. Nilai ini juga digunakan sebagai kunci pencarian untuk mendapatkan informasi selengkapnya tentang server dari titik akhir penemuan. Klien harus memvalidasi bahwa server otorisasi dipercaya. Ketika sumber daya dilindungi oleh Azure AD, cukup untuk memverifikasi bahwa URL dimulai dengan https://login.microsoftonline.com atau nama host lain yang Azure AD dukung. Sumber daya khusus penyewa harus selalu mengembalikan URI otorisasi khusus penyewa.
resource_id Mengembalikan pengidentifikasi unik sumber daya. Aplikasi klien dapat menggunakan pengidentifikasi ini sebagai nilai parameter sumber daya saat meminta token akses untuk sumber daya. Penting bagi aplikasi klien untuk memverifikasi nilai ini, jika tidak, layanan berbahaya mungkin dapat menginduksi serangan elevasi. Strategi yang direkomendasikan untuk mencegah serangan adalah memverifikasi bahwa resource_id cocok dengan dasar URL API web yang diakses. https://storage.azure.comadalah ID sumber daya Azure Storage yang umum digunakan.

Mengelola hak akses dengan RBAC

Azure AD menangani otorisasi akses ke sumber daya aman melalui RBAC. Dengan menggunakan RBAC, Anda dapat menetapkan peran kepada pengguna, grup, atau perwakilan layanan. Setiap peran mencakup sekumpulan izin untuk sumber daya. Setelah peran ditetapkan ke pengguna, grup, atau perwakilan layanan, mereka memiliki akses ke sumber daya tersebut. Anda dapat menetapkan hak akses menggunakan portal Azure, alat baris perintah Azure, dan API Manajemen Azure. Untuk informasi selengkapnya tentang RBAC, lihat Mulai menggunakan Role-Based Access Control.

Untuk Azure Storage, Anda dapat memberikan akses ke data dalam kontainer atau antrean di akun penyimpanan. Azure Storage menawarkan peran RBAC bawaan ini untuk digunakan dengan Azure AD:

Untuk informasi selengkapnya tentang bagaimana peran bawaan ditentukan untuk Azure Storage, lihat Memahami definisi peran untuk sumber daya Azure.

Anda juga dapat menentukan peran kustom untuk digunakan dengan penyimpanan Blob dan Azure Queues. Untuk informasi selengkapnya, lihat Membuat peran kustom untuk Azure Role-Based Access Control.

Izin untuk memanggil operasi data

Tabel berikut ini menjelaskan izin yang diperlukan untuk pengguna, grup, atau perwakilan layanan Azure AD untuk memanggil operasi Azure Storage tertentu. Untuk memungkinkan klien menghubungi operasi tertentu, pastikan bahwa peran RBAC yang ditetapkan klien menawarkan izin yang memadai untuk operasi tersebut.

Izin untuk operasi blob service

Operasi Blob service Tindakan RBAC
Mencantumkan Kontainer Microsoft. Storage/storageAccounts/blobServices/containers/read (tercakup ke akun penyimpanan atau di atasnya)
Mengatur Properti Blob Service Microsoft.Storage/storageAccounts/blobServices/write
Mendapatkan Properti Blob Service Microsoft.Storage/storageAccounts/blobServices/read
Permintaan Blob Preflight Anonim
Dapatkan Statistik Blob Service Microsoft.Storage/storageAccounts/blobServices/read
Dapatkan Informasi Akun Tidak didukung
Dapatkan Kunci Delegasi Pengguna Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
Buat Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/write
Mendapatkan Properti Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/read
Mendapatkan Metadata Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/read
Mengatur Metadata Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/write
Mendapatkan ACL Kontainer Tidak didukung
Atur ACL Kontainer Tidak didukung
Menyewa Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/write
Hapus Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/delete
Memulihkan Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/write
Mencantumkan blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Menemukan Blob menurut Tag di Kontainer Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
Put Blob Untuk membuat atau mengganti: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Untuk membuat blob baru: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Letakkan Blob dari URL Untuk membuat atau mengganti: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Untuk membuat blob baru: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Get Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Get Properti Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set properti Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Get Metadata Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Set Metadata Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Dapatkan Tag Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
Atur Tag Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Temukan Blob menurut Tag Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
Blob Sewa Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Snapshot Blob Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write atau
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
Copy Blob Untuk blob tujuan: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write atau Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action (saat menulis blob baru ke tujuan)
Untuk blob sumber di akun penyimpanan yang sama: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Untuk blob sumber di akun penyimpanan yang berbeda: Tersedia sebagai anonim, atau sertakan token SAS yang valid
Salin Blob Dari URL Untuk blob tujuan: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write atau Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action (saat menulis blob baru ke tujuan)
Untuk blob sumber di akun penyimpanan yang sama: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Untuk blob sumber di akun penyimpanan yang berbeda: Tersedia sebagai anonim, atau sertakan token SAS yang valid
Batalkan Menyalin Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Menghapus blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
Membatalkan penghapusan Blob Microsoft.Storage/storageAccounts/blobServices/containers/write
Set Tingkat Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Blob Batch Permintaan induk: Microsoft. Storage/storageAccounts/blobServices/containers/write
Sub-permintaan: Lihat izin untuk jenis permintaan tersebut.
Mengatur Kebijakan Imutabilitas Microsoft.Storage/storageAccounts/blobServices/containers/write
Menghapus Kebijakan Imutabilitas Microsoft.Storage/storageAccounts/blobServices/containers/write
Mengatur Penahanan Legal Blob Microsoft.Storage/storageAccounts/blobServices/containers/write
Put Blok Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Blok dari URL Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Daftar Blokir Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Dapatkan Daftar Blokir Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Konten Blob Kueri Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Put Halaman Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Put Halaman dari URL Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
Dapatkan Rentang Halaman Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Copy Blob Bertahap Untuk blob tujuan: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write
Untuk blob sumber: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/read
Untuk blob baru: Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Append Blok Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write atau Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Tambahkan Blok Dari URL Microsoft. Storage/storageAccounts/blobServices/containers/blobs/write atau Microsoft. Storage/storageAccounts/blobServices/containers/blobs/add/action
Mengatur Kedaluwarsa Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Izin untuk operasi layanan Antrean

Operasi layanan antrean Tindakan RBAC
Daftar Antrean Microsoft. Storage/storageAccounts/queueServices/queues/read (tercakup ke akun penyimpanan atau di atasnya)
Mengatur Properti Layanan Antrean Microsoft.Storage/storageAccounts/queueServices/read
Mendapatkan Properti Layanan Antrean Microsoft.Storage/storageAccounts/queueServices/read
Permintaan Antrean Preflight Anonim
Dapatkan Statistik Layanan Antrean Microsoft.Storage/storageAccounts/queueServices/read
Buat Antrean Microsoft.Storage/storageAccounts/queueServices/queues/write
Hapus Antrean Microsoft.Storage/storageAccounts/queueServices/queues/delete
Dapatkan Metadata Antrean Microsoft.Storage/storageAccounts/queueServices/queues/read
Mengatur Metadata Antrean Microsoft.Storage/storageAccounts/queueServices/queues/write
Dapatkan ACL Antrean Tidak tersedia melalui OAuth
Atur ACL Antrean Tidak tersedia melalui OAuth
Letakkan Pesan Microsoft. Storage/storageAccounts/queueServices/queues/messages/add/action atau Microsoft. Storage/storageAccounts/queueServices/queues/messages/write
Dapatkan Pesan Microsoft. Storage/storageAccounts/queueServices/queues/messages/process/action atau (Microsoft.Storage /storageAccounts/queueServices/queues/messages/delete dan Microsoft. Storage/storageAccounts/queueServices/queues/messages/read)
Mengintip Pesan Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Hapus Pesan Microsoft. Storage/storageAccounts/queueServices/queues/messages/process/action atau Microsoft. Storage/storageAccounts/queueServices/queues/messages/delete
Hapus Pesan Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Perbarui Pesan Microsoft.Storage/storageAccounts/queueServices/queues/messages/write

Izin untuk operasi layanan Tabel

Operasi layanan tabel Tindakan RBAC
Mengatur Properti Layanan Tabel Microsoft.Storage/storageAccounts/tableServices/write
Mendapatkan Properti Layanan Tabel Microsoft.Storage/storageAccounts/tableServices/read
Permintaan Tabel Preflight Anonim
Dapatkan Statistik Layanan Tabel Microsoft.Storage/storageAccounts/tableServices/read
Melakukan Transaksi Grup Entitas Sub-operasi mengotorisasi secara terpisah
Tabel Kueri Microsoft. Storage/storageAccounts/tableServices/tables/read (tercakup ke akun penyimpanan atau di atasnya)
Create Table Microsoft.Storage/storageAccounts/tableServices/tables/write
Hapus Tabel Microsoft.Storage/storageAccounts/tableServices/tables/delete
Dapatkan ACL Tabel Tidak tersedia melalui OAuth
Atur ACL Tabel Tidak tersedia melalui OAuth
Entitas Kueri Microsoft.Storage/storageAccounts/tableServices/tables/entities/read
Sisipkan Entitas Microsoft. Storage/storageAccounts/tableServices/tables/entities/write atau Microsoft. Storage/storageAccounts/tableServices/tables/entities/add/action
Sisipkan atau Gabungkan Entitas Microsoft. Storage/storageAccounts/tableServices/tables/entities/write atau (Microsoft.Storage /storageAccounts/tableServices/tables/entities/add/action dan Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action)
Sisipkan atau Ganti Entitas Microsoft. Storage/storageAccounts/tableServices/tables/entities/write atau (Microsoft.Storage /storageAccounts/tableServices/tables/entities/add/action dan Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action)
Perbarui Entitas Microsoft. Storage/storageAccounts/tableServices/tables/entities/write atau Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action
Entitas Penggabungan Microsoft. Storage/storageAccounts/tableServices/tables/entities/write atau Microsoft. Storage/storageAccounts/tableServices/tables/entities/update/action
Hapus Entitas Microsoft.Storage/storageAccounts/tableServices/tables/entities/delete

Lihat juga