Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du använder Node.js för att hämta, ange och uppdatera åtkomstkontrollistor med kataloger och filer.
Paket (Node Package Manager) | Exempel | Ge återkoppling
Prerequisites
- Azure-prenumeration – skapa en kostnadsfritt.
- Azure Storage-konto med hierarkisk namnrymd (HNS) aktiverat. Följ dessa instruktioner för att skapa en.
- Node.js LTS
- Azure CLI-version
2.6.0eller senare. - En av följande säkerhetsbehörigheter:
- Ett provisionerat säkerhetsobjekt för Microsoft Entra ID som har tilldelats rollen Lagringsblobdataägare, begränsad till målcontainern, lagringskontot, den överordnade resursgruppen eller prenumerationen.
- Ägande användare av målcontainern eller katalogen som du planerar att tillämpa ACL-inställningar på. Om du vill ange ACL:er rekursivt inkluderar detta alla underordnade objekt i målcontainern eller katalogen.
- Lagringskontonyckel.
Konfigurera projektet
Det här avsnittet beskriver hur du förbereder ett projekt för att arbeta med Azure Data Lake Storage-klientbiblioteket för JavaScript.
Installera paket
Installera paket för Azure Data Lake Storage- och Azure Identity-klientbiblioteken med hjälp av npm install kommandot .
Paketet @azure/identitet behövs för lösenordslösa anslutningar till Azure-tjänster.
npm install @azure/storage-file-datalake
npm install @azure/identity
Läsa in moduler
Lägg till följande kod överst i filen för att läsa in de moduler som krävs:
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Ansluta till kontot
Om du vill köra kodexemplen i den här artikeln måste du skapa en DataLakeServiceClient-instans som representerar lagringskontot. Du kan auktorisera klientobjektet med autentiseringsuppgifter för Microsoft Entra-ID eller med en kontonyckel.
Du kan använda Azure Identity-klientbiblioteket för JavaScript för att autentisera ditt program med Microsoft Entra-ID.
Note
Om du använder Microsoft Entra-ID för att auktorisera åtkomst, kontrollera att ditt säkerhetsobjekt har tilldelats rollen Lagringsblobdataägare. Mer information om hur ACL-behörigheter tillämpas och effekterna av att ändra dem finns i Åtkomstkontrollmodell i Azure Data Lake Storage.
Först behöver du tilldela en av följande Azure rollbaserade åtkomstkontroller (Azure RBAC) till din säkerhetsprincipal:
| Role | ACL-inställningsfunktion |
|---|---|
| Storage Blob Data-ägare | Alla kataloger och filer i kontot. |
| Storage Blob Data-bidragsgivare | Bara kataloger och filer som ägs av säkerhetsaktören. |
Skapa sedan en DataLakeServiceClient-instans och skicka in en ny instans av klassen DefaultAzureCredential .
function GetDataLakeServiceClientAD(accountName) {
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`,
new DefaultAzureCredential()
);
return dataLakeServiceClient;
}
Mer information om hur du använder DefaultAzureCredential för att auktorisera åtkomst till data finns i Översikt: Autentisera JavaScript-appar till Azure med hjälp av Azure SDK.
Hämta och ange en katalog-ACL
Det här exemplet hämtar och anger sedan ACL för en katalog med namnet my-directory. Det här exemplet ger den ägande användaren läs-, skriv- och körningsbehörigheter, ger ägande gruppen endast läs- och körningsbehörigheter och ger alla andra läsåtkomst.
Note
Om ditt program auktoriserar åtkomst med hjälp av Microsoft Entra-ID kontrollerar du att det säkerhetsobjekt som programmet använder för att auktorisera åtkomst har tilldelats rollen Lagringsblobdataägare. Mer information om hur ACL-behörigheter tillämpas och hur du ändrar dem finns i Åtkomstkontroll i 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);
}
Du kan också hämta och ange ACL för rotkatalogen för en container. För att hämta rotkatalogen skickar du en tom sträng (/) till metoden DataLakeFileSystemClient.getDirectoryClient .
Hämta och ställ in en fil-ACL
Det här exemplet hämtar och anger sedan ACL för en fil med namnet upload-file.txt. Det här exemplet ger den ägande användaren läs-, skriv- och körningsbehörigheter, ger ägande gruppen endast läs- och körningsbehörigheter och ger alla andra läsåtkomst.
Note
Om ditt program auktoriserar åtkomst med hjälp av Microsoft Entra-ID kontrollerar du att det säkerhetsobjekt som programmet använder för att auktorisera åtkomst har tilldelats rollen Lagringsblobdataägare. Mer information om hur ACL-behörigheter tillämpas och hur du ändrar dem finns i Åtkomstkontroll i 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);
}