Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan kepada Anda cara menggunakan Node.js untuk mendapatkan, mengatur, dan memperbarui daftar kontrol akses direktori dan file.
Paket (Manajer Paket Node) | Sampel | Beri Umpan Balik
Prasyarat
- Langganan Azure - membuat langganan secara gratis.
- Akun penyimpanan Azure yang mengaktifkan namespace hierarkis (HNS). Ikuti petunjuk berikut untuk membuatnya.
- Node.js LTS
- Azure CLI versi
2.6.0atau lebih tinggi. - Salah satu izin keamanan berikut:
- Prinsip keamanan MICROSOFT Entra ID yang disediakan yang telah ditetapkan peran Pemilik Data Blob Penyimpanan, dilingkupkan 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.
Menyiapkan proyek Anda
Bagian ini memandikan Anda menyiapkan proyek untuk bekerja dengan pustaka klien Azure Data Lake Storage untuk JavaScript.
Memasang paket
Instal paket untuk pustaka klien Azure Data Lake Storage dan Azure Identity menggunakan npm install perintah . Paket @azure/identitas diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.
npm install @azure/storage-file-datalake
npm install @azure/identity
Memuat modul
Tambahkan kode berikut di bagian atas file Anda untuk memuat modul yang diperlukan:
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Sambungkan ke akun
Untuk menjalankan contoh kode dalam artikel ini, Anda perlu membuat instans DataLakeServiceClient yang mewakili akun penyimpanan. Anda dapat mengotorisasi objek klien dengan kredensial ID Microsoft Entra atau dengan kunci akun.
Anda dapat menggunakan pustaka klien identitas Azure untuk JavaScript untuk mengautentikasi aplikasi Anda dengan ID Microsoft Entra.
Catatan
Jika Anda menggunakan ID Microsoft Entra untuk mengotorisasi akses, pastikan bahwa prinsip keamanan Anda telah diberi peran Pemilik Data Blob Penyimpanan. Untuk mempelajari selengkapnya tentang bagaimana izin ACL diterapkan dan efek mengubahnya, lihat Model kontrol akses di Azure Data Lake Storage.
Pertama, Anda harus menetapkan salah satu peran kontrol akses berbasis peran Azure (Azure RBAC) berikut ke prinsip keamanan Anda:
| Peran | Kapabilitas pengaturan ACL |
|---|---|
| Pemilik Data Blob Penyimpanan | Semua direktori dan file dalam akun tersebut. |
| Data blob penyimpanan kontributor | Hanya direktori dan file yang dimiliki oleh prinsipal keamanan. |
Selanjutnya, buat instans DataLakeServiceClient dan teruskan instans baru kelas DefaultAzureCredential .
function GetDataLakeServiceClientAD(accountName) {
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`,
new DefaultAzureCredential()
);
return dataLakeServiceClient;
}
Untuk mempelajari selengkapnya tentang menggunakan DefaultAzureCredential untuk mengotorisasi akses ke data, lihat Gambaran Umum: Mengautentikasi aplikasi JavaScript ke Azure menggunakan Azure SDK.
Dapatkan dan atur ACL direktori
Contoh ini mendapatkan lalu menetapkan ACL direktori dengan nama my-directory. Contoh ini memberi pengguna pemilik izin membaca, menulis, dan menjalankan, memberi grup pemilik hanya izin membaca dan menjalankan, dan memberi akses baca ke semua orang lain.
Catatan
Jika aplikasi Anda mengotorisasi akses dengan menggunakan ID Microsoft Entra, pastikan bahwa prinsip keamanan yang digunakan aplikasi Anda untuk mengotorisasi akses telah diberi peran Pemilik Data Blob Penyimpanan. Untuk mempelajari selengkapnya tentang bagaimana izin ACL diterapkan dan efek mengubahnya, lihat Kontrol akses di Azure Data Lake Storage.
async function ManageDirectoryACLs(fileSystemClient) {
const directoryClient = fileSystemClient.getDirectoryClient("my-directory");
const permissions = await directoryClient.getAccessControl();
console.log(permissions.acl);
const acl = [
{
accessControlType: "user",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: true
}
},
{
accessControlType: "group",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: false,
execute: true
}
},
{
accessControlType: "other",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: false
}
}
];
await directoryClient.setAccessControl(acl);
}
Anda juga bisa mendapatkan dan mengatur ACL direktori root kontainer. Untuk mendapatkan direktori akar, loloskan string kosong (/) ke dalam metode DataLakeFileSystemClient.getDirectoryClient.
Dapatkan dan atur file ACL
Contoh ini mendapatkan lalu menetapkan ACL file dengan nama upload-file.txt. Contoh ini memberi pengguna pemilik izin membaca, menulis, dan menjalankan, memberi grup pemilik hanya izin membaca dan menjalankan, dan memberi akses baca ke semua orang lain.
Catatan
Jika aplikasi Anda mengotorisasi akses dengan menggunakan ID Microsoft Entra, pastikan bahwa prinsip keamanan yang digunakan aplikasi Anda untuk mengotorisasi akses telah diberi peran Pemilik Data Blob Penyimpanan. Untuk mempelajari selengkapnya tentang bagaimana izin ACL diterapkan dan efek mengubahnya, lihat Kontrol akses di Azure Data Lake Storage.
async function ManageFileACLs(fileSystemClient) {
const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt");
const permissions = await fileClient.getAccessControl();
console.log(permissions.acl);
const acl = [
{
accessControlType: "user",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: true
}
},
{
accessControlType: "group",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: false,
execute: true
}
},
{
accessControlType: "other",
entityId: "",
defaultScope: false,
permissions: {
read: true,
write: true,
execute: false
}
}
];
await fileClient.setAccessControl(acl);
}