Použití sady JavaScript SDK v Node.js ke správě seznamů ACL ve službě Azure Data Lake Storage
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
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Účet úložiště Azure s povoleným hierarchickým oborem názvů (HNS). Postupujte podle těchto pokynů a vytvořte ho.
- Node.js LTS
- 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řazenou skupinu 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
Tato část vás provede přípravou projektu pro práci s klientskou knihovnou Azure Data Lake Storage pro JavaScript.
Instalace balíčků
Pomocí příkazu nainstalujte balíčky pro klientské knihovny npm install
Azure Data Lake Storage a Azure Identity. Balíček @azure/identity je potřeba pro připojení bez hesla ke službám Azure.
npm install @azure/storage-file-datalake
npm install @azure/identity
Načtení modulů
Do horní části souboru přidejte následující kód, který načte požadované moduly:
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Připojení k účtu
Pokud chcete spustit příklady kódu v tomto článku, musíte vytvořit instanci DataLakeServiceClient , která představuje účet úložiště. Klientský objekt můžete autorizovat pomocí přihlašovacích údajů Microsoft Entra ID nebo pomocí klíče účtu.
Klientskou knihovnu identit Azure pro JavaScript můžete použít k ověření aplikace pomocí Microsoft Entra ID.
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.
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 objektů blob úložiště | 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.
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.
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.
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);
}