Gunakan Azure CLI untuk mengelola ACL di Azure Data Lake Storage Gen2

Artikel ini menunjukkan cara menggunakan Azure CLI untuk mendapatkan, mengatur, dan memperbarui daftar kontrol akses direktori dan file.

Pewarisan ACL sudah tersedia untuk item anak baru yang dibuat di bawah direktori induk. Namun Anda juga dapat menambahkan, memperbarui, dan menghapus ACL secara berulang pada item anak yang ada dari direktori induk tanpa harus melakukan perubahan ini satu per satu untuk setiap item anak.

Referensi | Sampel | Memberikan umpan balik

Prasyarat

  • Langganan Azure. Untuk informasi selengkapnya, lihat Dapatkan uji coba gratis Azure.

  • Akun penyimpanan dengan namespace hierarkis aktif. Ikuti petunjuk berikut untuk membuatnya.

  • Azure CLI versi 2.14.0 atau lebih tinggi.

  • Salah satu izin keamanan berikut ini:

    • Perwakilan keamanan MICROSOFT Entra ID yang disediakan yang telah ditetapkan peran Pemilik Data Blob Penyimpanan, terlingkup ke kontainer target, akun penyimpanan, grup sumber daya induk, atau langganan..

    • Pengguna pemilik kontainer target atau direktori tempat Anda berencana menerapkan pengaturan ACL. Untuk mengatur ACL secara berulang, ini mencakup semua item anak dalam kontainer atau direktori target.

    • Kunci akun penyimpanan.

Pastikan Anda menginstal versi Azure CLI yang benar

  1. Buka Azure Cloud Shell, atau jika Anda telah menginstal Azure CLI secara lokal, buka aplikasi konsol perintah seperti Windows PowerShell.

  2. Pastikan bahwa versi Azure CLI yang telah diinstal adalah versi 2.14.0 atau lebih tinggi dengan menggunakan perintah berikut.

     az --version
    

    Jika versi Azure CLI Anda lebih rendah dari 2.14.0, maka instal versi yang lebih baru. Untuk informasi selengkapnya, lihat Menginstal Azure CLI.

Sambungkan ke akun

  1. Jika Anda menggunakan Azure CLI secara lokal, jalankan perintah login.

    az login
    

    Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.

    Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda. Masuk menggunakan kredensial akun Anda di browser.

    Untuk mempelajari selengkapnya tentang metode autentikasi yang berbeda, lihat Otorisasi akses ke data blob atau antrean dengan Azure CLI.

  2. Jika identitas Anda dikaitkan dengan lebih dari satu langganan, maka atur langganan aktif ke langganan akun penyimpanan yang akan menghosting situs web statik Anda.

    az account set --subscription <subscription-id>
    

    Ganti nilai placeholder <subscription-id> dengan ID langganan Anda.

Catatan

Contoh yang disajikan dalam artikel ini memperlihatkan otorisasi Microsoft Entra. Untuk mempelajari selengkapnya tentang metode otorisasi, lihat Mengotorisasi akses ke data blob atau antrean dengan Azure CLI.

Dapatkan ACL

Dapatkan ACL dari direktori dengan menggunakan perintah az storage fs access show.

Contoh ini mendapatkan ACL dari directory, lalu mencetak ACL ke konsol.

az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Dapatkan izin akses file dengan menggunakan perintah az storage fs access show.

Contoh ini mendapatkan ACL dari sebuah file dan kemudian mencetak ACL ke konsol.

az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

Gambar berikut menunjukkan output setelah mendapatkan ACL direktori.

Get ACL output

Dalam contoh ini, pengguna pemilik mempunyai izin membaca, menulis, dan menjalankan. Grup pemilik hanya memiliki izin membaca dan menjalankan. Untuk informasi selengkapnya tentang daftar kontrol akses, lihat Kontrol akses di Azure Data Lake Storage Gen2.

Atur ACL

Saat Anda mengatur ACL, Anda mengganti seluruh ACL termasuk semua entrinya. Jika Anda ingin mengubah tingkat izin prinsipal keamanan atau menambahkan prinsipal keamanan baru ke ACL tanpa memengaruhi entri lain yang sudah ada, Anda harus memperbarui ACL sebagai gantinya. Untuk memperbarui ACL alih-alih menggantinya, lihat bagian Memperbarui ACL dari artikel ini.

Jika Anda memilih untuk mengatur ACL, Anda harus menambahkan entri untuk pengguna pemilik, entri untuk grup pemilik, dan entri untuk semua pengguna lain. Untuk mempelajari selengkapnya tentang pengguna yang memiliki, grup pemilik, dan semua pengguna lainnya, lihat Pengguna dan identitas.

Bagian ini memperlihatkan kepada Anda cara:

  • Mengatur ACL
  • Menetapkan ACL secara rekursif

Mengatur ACL

Gunakan perintah az storage fs access set untuk menyetel ACL direktori.

Contoh ini mengatur ACL pada directory untuk pengguna pemilik, grup pemilik, atau pengguna lain, lalu mencetak ACL ke konsol.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Contoh ini mengatur ACL default pada direktori untuk pengguna pemilik, grup pemilik, atau pengguna lain, dan kemudian mencetak ACL ke konsol.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Gunakan perintah az storage fs access set untuk menyetel acl file.

Contoh ini mengatur ACL pada file untuk pengguna pemilik, grup pemilik, atau pengguna lain, lalu mencetak ACL ke konsol.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

Catatan

Untuk mengatur ACL grup atau pengguna tertentu, gunakan ID objek masing-masing. Misalnya, untuk mengatur ACL grup, gunakan group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Untuk mengatur ACL pengguna, gunakan user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Gambar berikut menunjukkan output setelah mengatur ACL file.

Get ACL output 2

Dalam contoh ini, pengguna pemilik dan grup pemilik hanya memiliki izin membaca dan menulis. Semua pengguna lain memiliki izin menulis dan menjalankan. Untuk informasi selengkapnya tentang daftar kontrol akses, lihat Kontrol akses di Azure Data Lake Storage Gen2.

Menetapkan ACL secara rekursif

Atur ACL secara rekursif dengan menggunakan perintah az storage fs access set-recursive.

Contoh ini mengatur ACL direktori dengan nama my-parent-directory. Entri ACL memberi pengguna pemilik izin membaca, menulis, dan menjalankan, memberi grup pemilik hanya izin membaca dan menjalankan, dan tidak memberi akses ke semua orang lain. Entri ACL terakhir dalam contoh ini memberikan pengguna tertentu ID objek "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" izin membaca dan menjalankan.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Catatan

Jika Anda ingin mengatur entri ACL default, tambahkan prefiks default: ke setiap entri. Misalnya, default:user::rwx atau default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Perbarui ACL

Saat memperbarui ACL, Anda mengubah ACL, dan bukan mengganti ACL. Misalnya, Anda dapat menambahkan perwakilan keamanan baru ke ACL tanpa memengaruhi perwakilan keamanan lain yang tercantum dalam ACL. Untuk mengganti ACL alih-alih memperbaruinya, lihat bagian Atur ACL di artikel ini.

Untuk memperbarui ACL, buat objek ACL baru dengan entri ACL yang ingin Anda perbarui, lalu gunakan objek tersebut dalam operasi pembaruan ACL. Jangan ambil ACL yang ada, cukup sediakan entri ACL yang akan diperbarui.

Bagian ini memperlihatkan kepada Anda cara:

  • Perbarui ACL
  • Perbarui ACL secara berulang

Perbarui ACL

Perbarui ACL file dengan menggunakan perintah az storage fs access update-recursive .

Contoh ini memperbarui entri ACL dengan izin tulis.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

Untuk mengatur ACL grup atau pengguna tertentu, gunakan ID objek masing-masing. Misalnya, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx atau user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Catatan

Memperbarui ACL satu direktori tanpa memperbarui ACL item anak tidak didukung oleh Azure CLI. Untuk memperbarui ACL direktori tanpa memodifikasi ACL semua item turunan di direktori tersebut, gunakan salah satu alat dan SDK lain yang didukung. Lihat Cara mengatur ACL.

Perbarui ACL secara berulang

Atur ACL secara rekursif dengan menggunakan perintah az storage fs access set-recursive.

Contoh ini memperbarui entri ACL dengan izin tulis.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Catatan

Jika Anda ingin mengatur entri ACL default, tambahkan awalan default: ke setiap entri. Contohnya, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Hapus entri ACL secara rekursif

Anda dapat menghapus satu entri ACL atau lebih secara berulang. Untuk menghapus entri ACL, buat objek ACL baru untuk entri ACL yang akan dihapus, lalu gunakan objek tersebut untuk menghapus operasi ACL. Jangan ambil ACL yang ada, cukup sediakan entri ACL yang akan dihapus.

Hapus entri ACL dengan menggunakan perintah az storage fs access remove-recursive.

Contoh ini menghapus entri ACL dari direktori akar kontainer.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Catatan

Jika Anda ingin menghapus entri ACL default, tambahkan prefiks default: ke setiap entri. Contohnya, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Memulihkan dari kegagalan

Anda mungkin mengalami kesalahan runtime atau izin saat memodifikasi ACL secara berulang. Untuk kesalahan runtime, mulai ulang proses dari awal. Kesalahan izin dapat terjadi jika perwakilan keamanan tidak memiliki izin yang memadai untuk mengubah ACL direktori atau file yang ada dalam hierarki direktori yang sedang dimodifikasi. Atasi masalah izin, lalu pilih untuk melanjutkan proses dari titik kegagalan menggunakan token kelanjutan, atau mulai ulang proses dari awal. Anda tidak perlu menggunakan token kelanjutan jika Anda lebih memilih memulai ulang dari awal. Anda dapat menerapkan ulang entri ACL tanpa dampak negatif.

Jika terjadi kegagalan, Anda dapat mengembalikan token kelanjutan dengan mengatur parameter --continue-on-failure ke false. Setelah Anda mengatasi kesalahan, Anda dapat melanjutkan proses dari titik kegagalan dengan menjalankan perintah lagi, lalu mengatur --continuation parameter ke token kelanjutan.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Jika Anda ingin proses selesai tanpa gangguan oleh kesalahan izin, Anda bisa menentukannya.

Untuk memastikan bahwa proses selesai tanpa gangguan, atur parameter --continue-on-failure ke true.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Praktik Terbaik

Bagian ini menyediakan beberapa panduan praktik terbaik untuk mengatur ACL secara rekursif.

Menangani kesalahan runtime bahasa umum

Kesalahan runtime dapat terjadi karena berbagai alasan (Misalnya: ketidaktersediaan atau masalah konektivitas klien). Jika Anda mengalami kesalahan runtime, mulai ulang proses ACL rekursif. ACL dapat diterapkan kembali ke item tanpa menyebabkan dampak negatif.

Menangani kesalahan izin (403)

Jika Anda menemukan pengecualian kontrol akses saat menjalankan proses ACL rekursif, prinsip keamanan AD Anda mungkin tidak memiliki izin yang memadai untuk menerapkan ACL ke satu atau beberapa item anak dalam hierarki direktori. Ketika kesalahan izin terjadi, proses berhenti dan token kelanjutan disediakan. Perbaiki masalah izin, lalu gunakan token kelanjutan untuk memproses himpunan data yang tersisa. Direktori dan file yang telah berhasil diproses tidak perlu diproses lagi. Anda juga dapat memilih untuk memulai ulang proses ACL rekursif. ACL dapat diterapkan kembali ke item tanpa menyebabkan dampak negatif.

Kredensial

Kami menyarankan agar Anda menyediakan perwakilan keamanan Microsoft Entra yang telah ditetapkan peran Pemilik Data Blob Penyimpanan dalam cakupan akun penyimpanan target atau kontainer.

Performa

Untuk mengurangi latensi, kami menyarankan Anda menjalankan proses ACL rekursif di Azure Virtual Machine (VM) yang terletak di wilayah yang sama dengan akun penyimpanan Anda.

Batas ACL

Jumlah maksimum ACL yang dapat Anda terapkan ke direktori atau file adalah 32 ACL akses dan 32 ACL default. Untuk informasi selengkapnya, lihat Kontrol akses di Azure Data Lake Storage Gen2.

Baca juga