Megosztás a következőn keresztül:


JavaScript SDK használata Node.js ACL-ek kezeléséhez az Azure Data Lake Storage-ban

Ez a cikk bemutatja, hogyan használhatja a Node.js a címtárak és fájlok hozzáférés-vezérlési listájának lekérésére, beállítására és frissítésére.

Csomagminták (node Csomagkezelő) | – visszajelzés |

Előfeltételek

  • Azure-előfizetés – hozzon létre egyet ingyenesen.
  • A hierarchikus névtérrel (HNS) kompatibilis Azure Storage-fiók. Az alábbi utasításokat követve hozzon létre egyet.
  • Node.js LTS
  • Azure CLI-verzió 2.6.0 vagy újabb.
  • Az alábbi biztonsági engedélyek egyike:
    • Egy kiépített Microsoft Entra ID biztonsági tag , amely a Storage Blob Data Owner szerepkörhöz lett hozzárendelve, hatóköre a céltárolóra, tárfiókra, szülőerőforrás-csoportra vagy előfizetésre terjed ki.
    • Annak a céltárolónak vagy könyvtárnak a tulajdonosa, amelyre ACL-beállításokat kíván alkalmazni. Az ACL-ek rekurzív beállításához ez magában foglalja a céltárolóban vagy könyvtárban lévő összes gyermekelemet.
    • Tárfiókkulcs.

A projekt beállítása

Ez a szakasz végigvezeti egy projekt előkészítésén az Azure Data Lake Storage JavaScripthez készült ügyfélkódtárával való együttműködéshez.

Csomagok telepítése

Telepítse a csomagokat az Azure Data Lake Storage-hoz és az Azure Identity-ügyfélkódtárakhoz a npm install paranccsal. A @azure/identitáscsomagra az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz van szükség.

npm install @azure/storage-file-datalake
npm install @azure/identity

Modulok betöltése

Adja hozzá a következő kódot a fájl tetején a szükséges modulok betöltéséhez:

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

const { DefaultAzureCredential } = require('@azure/identity');

Csatlakozás a fiókhoz

A cikkben szereplő példakódok futtatásához létre kell hoznia egy DataLakeServiceClient-példányt , amely a tárfiókot jelöli. Az ügyfélobjektumot a Microsoft Entra-azonosító hitelesítő adataival vagy egy fiókkulcsmal engedélyezheti.

Az Azure Identity JavaScripthez készült ügyfélkódtárával hitelesítheti az alkalmazást a Microsoft Entra-azonosítóval.

Feljegyzés

Ha a Hozzáférés engedélyezéséhez Microsoft Entra-azonosítót használ, győződjön meg arról, hogy a biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásával és a módosításuk hatásaival kapcsolatos további információkért tekintse meg az Azure Data Lake Storage hozzáférés-vezérlési modelljét.

Először az alábbi Azure-szerepköralapú hozzáférés-vezérlési (Azure RBAC) szerepkörök egyikét kell hozzárendelnie a biztonsági taghoz:

Szerepkör ACL-beállítási képesség
Storage-blobadatok tulajdonosa A fiók összes könyvtára és fájlja.
Storage blobadat-közreműködő Csak a biztonsági tag tulajdonában lévő könyvtárak és fájlok.

Ezután hozzon létre egy DataLakeServiceClient-példányt , és adja át a DefaultAzureCredential osztály új példányát.

function GetDataLakeServiceClientAD(accountName) {

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

  return dataLakeServiceClient;
}

További információ az adatokhoz való hozzáférés engedélyezésérőlDefaultAzureCredential: Áttekintés: JavaScript-alkalmazások hitelesítése az Azure-ban az Azure SDK használatával.

Címtár ACL beolvasása és beállítása

Ez a példa lekéri, majd beállítja egy névvel ellátott könyvtár ACL-ét my-directory. Ez a példa olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, csak olvasási és végrehajtási engedélyeket ad a tulajdonoscsoportnak, és minden másnak olvasási hozzáférést biztosít.

Feljegyzés

Ha az alkalmazás a Microsoft Entra-azonosítóval engedélyezi a hozzáférést, győződjön meg arról, hogy az alkalmazás által a hozzáférés engedélyezéséhez használt biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásáról és a módosításuk hatásairól további információt az Azure Data Lake Storage hozzáférés-vezérlésével kapcsolatban talál.

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

A tároló gyökérkönyvtárának ACL-ét is lekérheti és beállíthatja. A gyökérkönyvtár lekéréséhez adjon át egy üres sztringet (/) a DataLakeFileSystemClient.getDirectoryClient metódusba.

Fájl ACL beolvasása és beállítása

Ez a példa lekéri, majd beállítja egy nevű fájl ACL-ét upload-file.txt. Ez a példa olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, csak olvasási és végrehajtási engedélyeket ad a tulajdonoscsoportnak, és minden másnak olvasási hozzáférést biztosít.

Feljegyzés

Ha az alkalmazás a Microsoft Entra-azonosítóval engedélyezi a hozzáférést, győződjön meg arról, hogy az alkalmazás által a hozzáférés engedélyezéséhez használt biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásáról és a módosításuk hatásairól további információt az Azure Data Lake Storage hozzáférés-vezérlésével kapcsolatban talál.

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

Lásd még