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:
- Pemilik Data Blob Penyimpanan
- Kontributor Data Blob Penyimpanan
- Pembaca Data Blob Penyimpanan.
- Delegator Bloob Penyimpanan
- Kontributor Data Antrean Penyimpanan
- Kontributor Data Antrean Penyimpanan
- Pemroses Pesan Data Antrean Penyimpanan
- Storage Queue Data Message Sender
- Pembaca Data Tabel Penyimpanan
- Kontributor Data Tabel Penyimpanan
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 |