Bagikan melalui


Mengakses berbagi file Azure menggunakan ID Microsoft Entra dengan Azure Files OAuth melalui REST

Azure Files OAuth melalui REST memungkinkan akses baca dan tulis tingkat admin ke berbagi file Azure untuk pengguna dan aplikasi melalui protokol autentikasi OAuth , menggunakan ID Microsoft Entra untuk akses berbasis REST API. Pengguna, grup, layanan pihak pertama seperti portal Microsoft Azure, dan layanan dan aplikasi pihak ketiga yang menggunakan antarmuka REST sekarang dapat menggunakan autentikasi dan otorisasi OAuth dengan akun Microsoft Entra untuk mengakses data di berbagi file Azure. Cmdlet PowerShell dan perintah Azure CLI yang memanggil REST API juga dapat menggunakan OAuth untuk mengakses berbagi file Azure. Anda harus memanggil REST API menggunakan header eksplisit untuk menunjukkan niat Anda untuk menggunakan hak istimewa tambahan. Ini juga berlaku untuk akses Azure PowerShell dan Azure CLI.

Penting

Artikel ini menjelaskan cara mengaktifkan akses tingkat admin ke berbagi file Azure untuk kasus penggunaan pelanggan tertentu. Jika Anda mencari artikel yang lebih umum tentang autentikasi berbasis identitas untuk pengguna akhir, lihat Gambaran Umum autentikasi berbasis identitas Azure Files untuk akses SMB.

Berlaku pada

Model manajemen Model tagihan Peringkat media Pemborosan Usaha Kecil dan Menengah (UKM) Network File System (NFS)
Microsoft.Storage Versi 2 yang telah disediakan HDD (standar) Lokal (LRS) Ya Tidak
Microsoft.Storage Versi 2 yang telah disediakan HDD (standar) Zona (ZRS) Ya Tidak
Microsoft.Storage Versi 2 yang telah disediakan HDD (standar) Geo (GRS) Ya Tidak
Microsoft.Storage Versi 2 yang telah disediakan HDD (standar) GeoZone (GZRS) Ya Tidak
Microsoft.Storage Versi 1 yang telah disediakan SSD (kelas atas) Lokal (LRS) Ya Ya
Microsoft.Storage Versi 1 yang telah disediakan SSD (kelas atas) Zona (ZRS) Ya Ya
Microsoft.Storage Bayar per penggunaan HDD (standar) Lokal (LRS) Ya Tidak
Microsoft.Storage Bayar per penggunaan HDD (standar) Zona (ZRS) Ya Tidak
Microsoft.Storage Bayar per penggunaan HDD (standar) Geo (GRS) Ya Tidak
Microsoft.Storage Bayar per penggunaan HDD (standar) GeoZone (GZRS) Ya Tidak

Keterbatasan

Mengotorisasi operasi data file dengan ID Microsoft Entra hanya didukung untuk REST API versi 2022-11-02 dan yang lebih baru.

Dukungan Azure Files OAuth melalui REST untuk API sarana data REST Azure Files yang mengelola sumber daya FileService dan FileShare tersedia dengan REST API versi 2024-11-04 dan yang lebih baru.

Lihat Versioning untuk Azure Storage.

Studi kasus pelanggan

Autentikasi dan otorisasi OAuth dengan Azure Files melalui antarmuka REST API dapat menguntungkan pelanggan dalam skenario berikut.

Pengembangan aplikasi dan integrasi layanan

Autentikasi dan otorisasi OAuth memungkinkan pengembang untuk membangun aplikasi yang mengakses REST API Azure Storage menggunakan identitas pengguna atau aplikasi dari ID Microsoft Entra.

Pelanggan dan mitra juga dapat memungkinkan layanan pihak pertama dan pihak ketiga untuk mengonfigurasi akses yang diperlukan dengan aman dan transparan ke akun penyimpanan pelanggan.

Alat DevOps seperti portal Microsoft Azure, PowerShell, dan CLI, AzCopy, dan Storage Explorer dapat mengelola data menggunakan identitas pengguna, menghilangkan kebutuhan untuk mengelola atau mendistribusikan kunci akses penyimpanan.

Identitas yang dikelola

Pelanggan dengan aplikasi dan identitas terkelola yang memerlukan akses ke data berbagi file untuk tujuan pencadangan, pemulihan, atau audit dapat memperoleh manfaat dari autentikasi dan otorisasi OAuth. Memberlakukan izin tingkat file dan direktori untuk setiap identitas menambah kompleksitas dan mungkin tidak kompatibel dengan beban kerja tertentu. Misalnya, pelanggan mungkin ingin mengotorisasi layanan solusi cadangan untuk mengakses berbagi file Azure dengan akses baca-saja ke semua file tanpa memperhatikan izin khusus file.

Penggantian kunci akun penyimpanan

MICROSOFT Entra ID menyediakan keamanan yang unggul dan kemudahan penggunaan melalui akses kunci bersama. Anda dapat mengganti akses kunci akun penyimpanan dengan autentikasi dan otorisasi OAuth untuk mengakses Azure File Share dengan hak baca-semua/tulis-semua. Pendekatan ini juga menawarkan audit yang lebih baik dan melacak akses pengguna tertentu.

Akses istimewa dan izin akses untuk operasi data

Untuk menggunakan fitur Azure Files OAuth melalui REST, ada izin tambahan yang harus disertakan dalam peran RBAC yang ditetapkan untuk pengguna, grup, atau perwakilan layanan. Dua tindakan data baru diperkenalkan sebagai bagian dari fitur ini:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Pengguna, grup, atau prinsipal layanan yang memanggil REST API dengan OAuth harus memiliki tindakan readFileBackupSemantics atau writeFileBackupSemantics yang ditetapkan ke peran untuk memungkinkan akses data. Ini adalah persyaratan untuk menggunakan fitur ini. Untuk detail tentang izin yang diperlukan untuk memanggil operasi layanan File tertentu, lihat Izin untuk memanggil operasi data.

Fitur ini menyediakan dua peran bawaan baru yang menyertakan tindakan baru ini.

Peranan Tindakan data
Pembaca Data File Penyimpanan dengan Hak Istimewa Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Kontributor dengan Hak Istimewa File Data Penyimpanan Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Peran baru ini mirip dengan peran bawaan Storage File Data SMB Share Reader dan Storage File Data SMB Share Elevated Contributor yang ada, tetapi ada beberapa perbedaan:

  • Peran baru berisi tindakan data tambahan yang diperlukan untuk akses OAuth.

  • Saat pengguna, grup, atau perwakilan layanan yang diberi peran Storage File Data Privileged Reader atau Storage File Data Privileged Contributor memanggil FilesREST Data API menggunakan OAuth, pengguna, grup, atau perwakilan layanan akan memiliki:

    • Pembaca Istimewa Data File Penyimpanan: Akses baca penuh pada semua data dalam share untuk semua akun penyimpanan yang sudah dikonfigurasi tanpa memperhatikan izin NTFS pada tingkat file/direktori yang ditetapkan.
    • Kontributor Berhak Istimewa Data File Penyimpanan: Akses baca penuh, tulis, ubah ACL, dan hapus pada semua data di dalam share untuk semua akun penyimpanan yang dikonfigurasi, terlepas dari izin NTFS di tingkat file/direktori yang telah ditetapkan.
  • Dengan izin dan peran khusus ini, sistem akan melewati izin tingkat file/direktori apa pun dan memungkinkan akses ke data berbagi file.

Dengan peran baru dan tindakan data, fitur ini akan memberikan hak istimewa di seluruh akun penyimpanan yang menggantikan semua izin pada file dan folder di bawah semua berbagi file di akun penyimpanan. Namun, peran baru hanya berisi izin untuk mengakses layanan data. Mereka tidak menyertakan izin apa pun untuk mengakses layanan manajemen berbagi file (tindakan pada berbagi file). Untuk menggunakan fitur ini, pastikan Anda memiliki izin untuk mengakses:

  • akun penyimpanan
  • layanan manajemen berbagi file
  • layanan data (data dalam berkas yang dibagikan)

Ada banyak peran bawaan yang menyediakan akses ke layanan manajemen. Anda juga dapat membuat peran kustom dengan izin yang sesuai. Untuk mempelajari selengkapnya tentang kontrol akses berbasis peran, lihat Azure RBAC. Untuk informasi selengkapnya tentang bagaimana peran bawaan ditentukan, lihat Memahami definisi peran.

Perlu diingat bahwa untuk jenis sumber daya berbagi file, cakupan RBAC yang sesuai digunakan shares dalam sarana kontrol (operasi manajemen), tetapi menggunakan fileshares dalam bidang data (operasi data). Jika Anda mencoba menggunakan ID sumber daya berbagi file yang berisi shares dalam cakupan RBAC atau string tindakan data, itu tidak akan berfungsi. Anda harus menggunakan fileshares dalam cakupan penugasan RBAC, misalnya:

  • /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/fileServices/default/fileshares/<share-name>

Penting

Setiap kasus penggunaan kartu bebas yang dinyatakan untuk jalur Microsoft.Storage/storageAccounts/fileServices/* atau cakupan yang lebih tinggi akan secara otomatis mewarisi akses serta izin tambahan yang diberikan melalui aksi data baru ini. Untuk mencegah akses yang tidak diinginkan atau terlalu istimewa ke Azure Files, kami telah menerapkan pemeriksaan tambahan yang mengharuskan pengguna dan aplikasi untuk secara eksplisit menunjukkan niat mereka untuk menggunakan hak istimewa tambahan. Selain itu, kami sangat menyarankan agar pelanggan meninjau penetapan peran RBAC pengguna mereka dan mengganti setiap penggunaan wildcard dengan izin yang spesifik untuk memastikan pengelolaan akses data yang tepat.

Mengotorisasi akses ke data file dalam kode aplikasi

Pustaka klien Azure Identity menyederhanakan proses mendapatkan token akses OAuth 2.0 untuk otorisasi dengan ID Microsoft Entra melalui Azure SDK. Versi terbaru pustaka klien Azure Storage untuk .NET, Java, Python, JavaScript, dan Go terintegrasi dengan pustaka Azure Identity untuk masing-masing bahasa tersebut untuk menyediakan cara sederhana dan aman untuk memperoleh token akses untuk otorisasi permintaan dari layanan file Azure.

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. Perpustakaan klien Azure Identity mengembalikan token akses untuk prinsipal keamanan. Saat kode Anda berjalan di Azure, prinsip keamanan mungkin merupakan identitas terkelola untuk sumber daya Azure, perwakilan layanan, atau pengguna atau grup. Di lingkungan pengembangan, pustaka klien menyediakan token akses untuk pengguna atau perwakilan layanan untuk tujuan pengujian.

Token akses yang dikembalikan oleh perpustakaan klien Azure Identity terbungkus dalam kredensial token. Anda kemudian dapat menggunakan kredensial token untuk mendapatkan objek klien layanan untuk digunakan dalam melakukan operasi resmi terhadap layanan Azure Files.

Contoh kode berikut menunjukkan cara mengotorisasi objek klien menggunakan ID Microsoft Entra dan melakukan operasi di tingkat direktori dan file. Contoh ini mengasumsikan bahwa berbagi file sudah ada.

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string entraEndpoint = "";
            string accountUri = "https://<storage-account-name>.file.core.windows.net/";
            string shareName = "test-share";
            string directoryName = "test-directory";
            string fileName = "test-file";  

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(entraEndpoint)
                });

            // Set client options
            ShareClientOptions clientOptions = new ShareClientOptions();
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients
            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;

            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
        }
    }
}

Mengotorisasi akses menggunakan API sarana data FileREST

Anda juga dapat mengotorisasi akses ke data file menggunakan portal Microsoft Azure, Azure PowerShell, atau Azure CLI.

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

Saat Anda mencoba mengakses data file, portal Microsoft 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 Microsoft Azure menggunakan kunci akun untuk mengakses data file melalui otorisasi kunci bersama. Jika Anda belum diberi peran dengan tindakan ini, portal Microsoft Azure mencoba mengakses data menggunakan akun Microsoft Entra Anda.

Untuk mengakses data file dari portal Microsoft Azure menggunakan akun Microsoft Entra, Anda memerlukan izin untuk mengakses data file, dan Anda juga memerlukan izin untuk menavigasi melalui sumber daya akun penyimpanan di portal Microsoft Azure. Peran bawaan yang disediakan oleh Azure memberikan akses ke sumber daya file, tetapi tidak memberikan izin ke sumber daya akun penyimpanan. Untuk alasan ini, akses ke portal juga memerlukan penetapan peran Azure Resource Manager (ARM), seperti peran Pembaca yang mencakup tingkat akun penyimpanan atau yang lebih tinggi. Peran Pembaca memberikan izin yang paling ketat, tetapi peran ARM apa pun yang memberikan akses ke sumber daya manajemen akun penyimpanan dapat diterima.

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

Lihat juga