Použití sady JavaScript SDK v Node.js ke správě seznamů ACL ve službě Azure Data Lake Storage Gen2

V tomto článku se dozvíte, jak pomocí Node.js získat, nastavit a aktualizovat seznamy řízení přístupu adresářů a souborů.

Ukázky | balíčku (node Správce balíčků) | Poskytnout zpětnou vazbu

Předpoklady

  • Předplatné Azure. Další informace najdete v tématu Získání bezplatné zkušební verze Azure.

  • Účet úložiště s povoleným hierarchickým oborem názvů (HNS). Postupujte podle těchto pokynů a vytvořte ho.

  • Verze 2.6.0 Azure CLI nebo vyšší.

  • Jedno z následujících oprávnění zabezpečení:

    • Zřízený objekt zabezpečení Microsoft Entra ID, který má přiřazenou roli Vlastník dat objektu blob služby Storage, vymezený cílový kontejner, účet úložiště, nadřazená skupina prostředků nebo předplatné.

    • Vlastníkem cílového kontejneru nebo adresáře, u kterého plánujete použít nastavení seznamu ACL. Pokud chcete seznamy ACL nastavit rekurzivně, zahrnuje to všechny podřízené položky v cílovém kontejneru nebo adresáři.

    • Klíč účtu úložiště.

Nastavení projektu

Nainstalujte klientskou knihovnu Data Lake pro JavaScript otevřením okna terminálu a zadáním následujícího příkazu.

npm install @azure/storage-file-datalake

Importujte storage-file-datalake balíček tak, že tento příkaz umístíte do horní části souboru kódu.

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

Připojení k účtu

Pokud chcete použít fragmenty kódu v tomto článku, budete muset vytvořit instanci DataLakeServiceClient , která představuje účet úložiště.

Připojení pomocí ID Microsoft Entra

Poznámka:

Pokud k autorizaci přístupu používáte MICROSOFT Entra ID, ujistěte se, že je vašemu objektu zabezpečení přiřazena role Vlastník dat objektu blob služby Storage. Další informace o tom, jak se použijí oprávnění seznamu ACL a vliv jejich změny, najdete v tématu Model řízení přístupu ve službě Azure Data Lake Storage Gen2.

Klientskou knihovnu identit Azure pro JS můžete použít k ověření vaší aplikace pomocí Microsoft Entra ID.

Nejprve budete muset k objektu zabezpečení přiřadit jednu z následujících rolí řízení přístupu na základě role v Azure (Azure RBAC ):

Role Funkce nastavení seznamu ACL
Vlastník dat v objektech blob služby Storage Všechny adresáře a soubory v účtu.
Přispěvatel dat v objektech blob služby Storage Objekt zabezpečení vlastní pouze adresáře a soubory.

Dále vytvořte instanci DataLakeServiceClient a předejte novou instanci DefaultAzureCredential třídy.

function GetDataLakeServiceClientAD(accountName) {

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

  return dataLakeServiceClient;
}

Další informace o použití DefaultAzureCredential k autorizaci přístupu k datům najdete v tématu Přehled: Ověřování javascriptových aplikací v Azure pomocí sady Azure SDK.

Připojení pomocí klíče účtu

Přístup k datům můžete autorizovat pomocí přístupových klíčů k účtu (sdílený klíč). Tento příklad vytvoří instanci DataLakeServiceClient , která je autorizovaná pomocí klíče účtu.


function GetDataLakeServiceClient(accountName, accountKey) {

  const sharedKeyCredential =
     new StorageSharedKeyCredential(accountName, accountKey);

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

  return dataLakeServiceClient;
}

Upozornění

Autorizace pomocí sdíleného klíče se nedoporučuje, protože může být méně zabezpečená. Pokud chcete zajistit optimální zabezpečení, zakažte autorizaci prostřednictvím sdíleného klíče pro váš účet úložiště, jak je popsáno v části Zabránění autorizaci sdíleného klíče pro účet služby Azure Storage.

Použití přístupových klíčů a připojovací řetězec by mělo být omezené na počáteční testování konceptů aplikací nebo prototypů vývoje, které nepřistupují k produkčním nebo citlivým datům. Jinak by se při ověřování prostředků Azure měly vždy upřednostňovat třídy ověřování založené na tokenech, které jsou dostupné v sadě Azure SDK.

Microsoft doporučuje, aby klienti k autorizaci přístupu k datům ve službě Azure Storage používali buď ID Microsoft Entra, nebo sdílený přístupový podpis (SAS). Další informace najdete v tématu Autorizace operací pro přístup k datům.

Získání a nastavení seznamu ACL adresáře

Tento příklad získá a potom nastaví seznam ACL adresáře s názvem my-directory. Tento příklad dává vlastnící uživateli oprávnění ke čtení, zápisu a spouštění, dává vlastnící skupině oprávnění jen ke čtení a spouštění a dává všem ostatním přístup pro čtení.

Poznámka:

Pokud vaše aplikace autorizuje přístup pomocí Microsoft Entra ID, ujistěte se, že objekt zabezpečení, který vaše aplikace používá k autorizaci přístupu, má přiřazenou roli Vlastník dat objektu blob služby Storage. Další informace o tom, jak se použijí oprávnění seznamu ACL a vliv jejich změny, najdete v tématu Řízení přístupu ve službě 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);
}

Můžete také získat a nastavit seznam ACL kořenového adresáře kontejneru. Kořenový adresář získáte předáním prázdného řetězce (/) do metody DataLakeFileSystemClient.getDirectoryClient .

Získání a nastavení seznamu ACL souboru

Tento příklad získá a potom nastaví seznam ACL souboru s názvem upload-file.txt. Tento příklad dává vlastnící uživateli oprávnění ke čtení, zápisu a spouštění, dává vlastnící skupině oprávnění jen ke čtení a spouštění a dává všem ostatním přístup pro čtení.

Poznámka:

Pokud vaše aplikace autorizuje přístup pomocí Microsoft Entra ID, ujistěte se, že objekt zabezpečení, který vaše aplikace používá k autorizaci přístupu, má přiřazenou roli Vlastník dat objektu blob služby Storage. Další informace o tom, jak se použijí oprávnění seznamu ACL a vliv jejich změny, najdete v tématu Řízení přístupu ve službě 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);
}

Viz také