Gunakan JavaScript SDK di Node.js untuk mengelola ACL di Azure Data Lake Storage Gen2

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. Untuk informasi selengkapnya, lihat Dapatkan uji coba gratis Azure.

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

  • Azure CLI versi 2.6.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.

Menyiapkan proyek Anda

Instal pustaka klien Data Lake untuk JavaScript dengan membuka jendela terminal, lalu ketik perintah berikut.

npm install @azure/storage-file-datalake

Impor storage-file-datalake paket dengan menempatkan pernyataan ini di bagian atas file kode Anda.

const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");

Sambungkan ke akun

Untuk menggunakan cuplikan dalam artikel ini, Anda harus membuat instance DataLakeServiceClient yang mewakili akun penyimpanan.

Koneksi dengan menggunakan 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 cara penerapan izin ACL dan efek mengubahnya, lihat Model kontrol akses di Azure Data Lake Storage Gen2.

Anda dapat menggunakan pustaka klien identitas Azure untuk JS untuk mengautentikasi aplikasi Anda dengan ID Microsoft Entra.

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.

Sambungkan dengan menggunakan kunci akun

Anda dapat mengotorisasi akses ke data menggunakan kunci akses akun Anda (Kunci Bersama). Contoh ini membuat instans DataLakeServiceClient yang diotorisasi dengan kunci akun.


function GetDataLakeServiceClient(accountName, accountKey) {

  const sharedKeyCredential =
     new StorageSharedKeyCredential(accountName, accountKey);

  const dataLakeServiceClient = new DataLakeServiceClient(
      `https://${accountName}.dfs.core.windows.net`, sharedKeyCredential);

  return dataLakeServiceClient;
}

Perhatian

Otorisasi dengan Kunci Bersama tidak disarankan karena mungkin kurang aman. Untuk keamanan optimal, nonaktifkan otorisasi melalui Kunci Bersama untuk akun penyimpanan Anda, seperti yang dijelaskan dalam Mencegah otorisasi Kunci Bersama untuk akun Azure Storage.

Penggunaan kunci akses dan string koneksi harus dibatasi pada bukti awal aplikasi konsep atau prototipe pengembangan yang tidak mengakses data produksi atau sensitif. Jika tidak, kelas autentikasi berbasis token yang tersedia di Azure SDK harus selalu disukai saat mengautentikasi ke sumber daya Azure.

Microsoft menyarankan agar klien menggunakan ID Microsoft Entra atau tanda tangan akses bersama (SAS) untuk mengotorisasi akses ke data di Azure Storage. Untuk informasi selengkapnya, lihat Mengotorisasi operasi untuk akses data.

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 cara penerapan izin ACL dan efek mengubahnya, lihat kontrol akses di Azure Data Lake Storage Gen2.

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 cara penerapan izin ACL dan efek mengubahnya, lihat kontrol akses di Azure Data Lake Storage Gen2.

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);
}

Baca juga