Använda JavaScript SDK i Node.js för att hantera ACL:er i Azure Data Lake Storage Gen2
Den här artikeln visar hur du använder Node.js för att hämta, ange och uppdatera åtkomstkontrollistorna med kataloger och filer.
Paket (Node Package Manager) | Exempel | ger feedback
Förutsättningar
En Azure-prenumeration. Mer information finns i Hämta kostnadsfri utvärderingsversion av Azure.
Ett lagringskonto med hierarkisk namnrymd (HNS) aktiverat. Följ dessa instruktioner för att skapa en.
Azure CLI-version
2.6.0
eller senare.En av följande säkerhetsbehörigheter:
Ett etablerat 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
Installera Data Lake-klientbiblioteket för JavaScript genom att öppna ett terminalfönster och sedan skriva följande kommando.
npm install @azure/storage-file-datalake
storage-file-datalake
Importera paketet genom att placera den här instruktionen överst i kodfilen.
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
Anslut till kontot
Om du vill använda kodfragmenten i den här artikeln måste du skapa en DataLakeServiceClient-instans som representerar lagringskontot.
Anslut med hjälp av Microsoft Entra-ID
Kommentar
Om du använder Microsoft Entra-ID för att auktorisera åtkomst kontrollerar du att ditt säkerhetsobjekt har tilldelats rollen Lagringsblobdataägare. Mer information om hur ACL-behörigheter tillämpas och hur du ändrar dem finns i Åtkomstkontrollmodell i Azure Data Lake Storage Gen2.
Du kan använda Azure Identity-klientbiblioteket för JS för att autentisera ditt program med Microsoft Entra-ID.
Först måste du tilldela någon av följande rollbaserade åtkomstkontrollroller i Azure (Azure RBAC) till ditt säkerhetsobjekt:
Roll | ACL-inställningsfunktion |
---|---|
Storage Blob Data-ägare | Alla kataloger och filer i kontot. |
Storage Blob Data-deltagare | Endast kataloger och filer som ägs av säkerhetsobjektet. |
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.
Anslut med hjälp av en kontonyckel
Du kan auktorisera åtkomst till data med hjälp av dina kontoåtkomstnycklar (delad nyckel). I det här exemplet skapas en DataLakeServiceClient-instans som är auktoriserad med kontonyckeln.
function GetDataLakeServiceClient(accountName, accountKey) {
const sharedKeyCredential =
new StorageSharedKeyCredential(accountName, accountKey);
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`, sharedKeyCredential);
return dataLakeServiceClient;
}
Varning
Auktorisering med delad nyckel rekommenderas inte eftersom det kan vara mindre säkert. För optimal säkerhet inaktiverar du auktorisering via delad nyckel för ditt lagringskonto enligt beskrivningen i Förhindra auktorisering av delad nyckel för ett Azure Storage-konto.
Användning av åtkomstnycklar och anslutningssträng bör begränsas till inledande konceptbevisappar eller utvecklingsprototyper som inte har åtkomst till produktion eller känsliga data. Annars bör de tokenbaserade autentiseringsklasserna som är tillgängliga i Azure SDK alltid föredras när du autentiserar till Azure-resurser.
Microsoft rekommenderar att klienter använder antingen Microsoft Entra-ID eller en signatur för delad åtkomst (SAS) för att ge åtkomst till data i Azure Storage. Mer information finns i Auktorisera åtgärder för dataåtkomst.
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.
Kommentar
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 effekterna av att ändra dem finns i Åtkomstkontroll i 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);
}
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 ange 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.
Kommentar
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 effekterna av att ändra dem finns i Åtkomstkontroll i 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);
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för