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 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 opsi autentikasi berbasis identitas Azure Files untuk akses SMB.
Batasan
Azure Files OAuth melalui REST hanya mendukung API Data FileREST yang mendukung operasi pada file dan direktori. OAuth tidak didukung pada API sarana data FilesREST yang mengelola sumber daya FileService dan FileShare. API manajemen ini dipanggil menggunakan Kunci Akun Penyimpanan atau token SAS, dan diekspos melalui bidang data karena alasan warisan. Sebaiknya gunakan API sarana kontrol (penyedia sumber daya penyimpanan - Microsoft.Storage) yang mendukung OAuth untuk semua aktivitas manajemen yang terkait dengan sumber daya FileService dan FileShare.
Mengotorisasi operasi data file dengan ID Microsoft Entra hanya didukung untuk REST API versi 2022-11-02 dan yang lebih baru. Lihat Penerapan versi untuk Azure Storage.
Kasus penggunaan 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 Azure, PowerShell, dan CLI, AzCopy, dan Storage Explorer dapat mengelola data menggunakan identitas pengguna, menghilangkan kebutuhan untuk mengelola atau mendistribusikan kunci akses penyimpanan.
Identitas Terkelola
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 berbagi File Azure dengan hak istimewa 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 perwakilan layanan yang memanggil REST API dengan OAuth harus memiliki readFileBackupSemantics
tindakan atau writeFileBackupSemantics
yang ditetapkan ke peran yang 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.
Peran | Tindakan data |
---|---|
Pembaca Data File Penyimpanan Izin Khusus | Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action |
Storage File Data Privileged Reader | 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:
- Storage File Data Privileged Reader: Akses baca penuh pada semua data dalam berbagi untuk semua akun penyimpanan yang dikonfigurasi terlepas dari izin NTFS tingkat file/direktori yang ditetapkan.
- Kontributor Istimewa Data File Penyimpanan: Baca penuh, tulis, ubah ACL, hapus akses pada semua data dalam berbagi untuk semua akun penyimpanan yang dikonfigurasi terlepas dari izin NTFS tingkat file/direktori yang 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 berbagi file)
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.
Penting
Setiap kasus penggunaan kartubebas yang ditentukan untuk jalur Microsoft.Storage/storageAccounts/fileServices/*
atau cakupan yang lebih tinggi akan secara otomatis mewarisi akses dan izin tambahan yang diberikan melalui tindakan 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 penggunaan wildcard apa pun dengan izin eksplisit untuk memastikan manajemen 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. Pustaka klien Azure Identity menghasilkan token akses untuk prinsipal keamanan. Ketika kode Anda berjalan di Azure, prinsipal keamanan mungkin merupakan identitas terkelola untuk sumber daya Azure, prinsipal layanan, atau pengguna atau grup. Dalam lingkungan pengembangan, pustaka klien menyediakan token akses untuk pengguna atau prinsipal layanan untuk tujuan pengujian.
Token akses yang dihasilkan oleh pustaka klien Azure Identity dikemas dalam kredensial token. Anda kemudian dapat menggunakan kredensial token untuk mendapatkan objek klien layanan untuk digunakan dalam melakukan operasi resmi terhadap layanan Azure Files.
Berikut adalah beberapa kode sampel:
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 aadEndpoint = "";
string accountUri = "";
string connectionString = "";
string shareName = "test-share";
string directoryName = "testDirectory";
string fileName = "testFile";
ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName);
await sharedKeyShareClient.CreateIfNotExistsAsync();
TokenCredential tokenCredential = new ClientSecretCredential(
tenantId,
appId,
appSecret,
new TokenCredentialOptions()
{
AuthorityHost = new Uri(aadEndpoint)
});
ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);
// Set Allow Trailing Dot and Source Allow Trailing Dot.
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();
await sharedKeyShareClient.DeleteIfExistsAsync();
}
}
}
Mengotorisasi akses menggunakan API sarana data FileREST
Anda juga dapat mengotorisasi akses ke data file menggunakan portal Azure atau Azure PowerShell.
portal Azure dapat menggunakan akun Microsoft Entra atau kunci akses akun penyimpanan Anda untuk mengakses data file di akun penyimpanan Azure. Skema otorisasi yang digunakan portal Azure bergantung pada peran Azure yang ditetapkan untuk Anda.
Saat Anda mencoba mengakses data file, 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, maka portal Azure menggunakan kunci akun untuk mengakses data file melalui otorisasi kunci bersama. Jika Anda belum diberi peran dengan tindakan ini, maka portal Azure mencoba mengakses data menggunakan akun Microsoft Entra Anda.
Untuk mengakses data file dari portal 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 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 , tercakup ke 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 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 file di portal Azure.