Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak pomocí Node.js získat, nastavit a aktualizovat seznamy řízení přístupu adresářů a souborů.
Balíček (Node Package Manager) | Ukázky | 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.0Azure CLI nebo vyšší. - Jedno z následujících oprávnění zabezpečení:
- Zřízený bezpečnostní objekt Microsoft Entra ID, kterému byla přiřazena role Vlastník dat objektu blob služby Storage, a rozsah působnosti této role je vymezen na cílový kontejner, účet úložiště, nadřazenou skupinu prostředků nebo předplatné.
- Uživatel, který vlastní cílový kontejner nebo adresář, na který plánujete použít nastavení seznamu řízení přístupu (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 služby Storage Blob. 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 | Schopnost nastavení ACL |
|---|---|
| Vlastník dat v objektech blob služby Storage | Všechny adresáře a soubory v účtu. |
| Přispěvatel dat úložiště Blob | Pouze adresáře a soubory vlastněné zabezpečovacím subjektem. |
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 přístupových práv (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 principál zabezpečení, který vaše aplikace používá k autorizaci přístupu, má přiřazen roli Storage Blob Data Owner. 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 .
Nastavení a získání ACL souboru
Tento příklad nejprve získá a potom nastaví 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 principál zabezpečení, který vaše aplikace používá k autorizaci přístupu, má přiřazen roli Storage Blob Data Owner. 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);
}