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