JavaScript SDK használata Node.js ACL-ek kezeléséhez az Azure Data Lake Storage-ban
Ez a cikk bemutatja, hogyan használhatja a Node.js a címtárak és fájlok hozzáférés-vezérlési listájának lekérésére, beállítására és frissítésére.
Csomagminták (node Csomagkezelő) | – visszajelzés |
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen.
- A hierarchikus névtérrel (HNS) kompatibilis Azure Storage-fiók. Az alábbi utasításokat követve hozzon létre egyet.
- Node.js LTS
- Azure CLI-verzió
2.6.0
vagy újabb. - Az alábbi biztonsági engedélyek egyike:
- Egy kiépített Microsoft Entra ID biztonsági tag , amely a Storage Blob Data Owner szerepkörhöz lett hozzárendelve, hatóköre a céltárolóra, tárfiókra, szülőerőforrás-csoportra vagy előfizetésre terjed ki.
- Annak a céltárolónak vagy könyvtárnak a tulajdonosa, amelyre ACL-beállításokat kíván alkalmazni. Az ACL-ek rekurzív beállításához ez magában foglalja a céltárolóban vagy könyvtárban lévő összes gyermekelemet.
- Tárfiókkulcs.
A projekt beállítása
Ez a szakasz végigvezeti egy projekt előkészítésén az Azure Data Lake Storage JavaScripthez készült ügyfélkódtárával való együttműködéshez.
Csomagok telepítése
Telepítse a csomagokat az Azure Data Lake Storage-hoz és az Azure Identity-ügyfélkódtárakhoz a npm install
paranccsal. A @azure/identitáscsomagra az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz van szükség.
npm install @azure/storage-file-datalake
npm install @azure/identity
Modulok betöltése
Adja hozzá a következő kódot a fájl tetején a szükséges modulok betöltéséhez:
const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");
const { DefaultAzureCredential } = require('@azure/identity');
Csatlakozás a fiókhoz
A cikkben szereplő példakódok futtatásához létre kell hoznia egy DataLakeServiceClient-példányt , amely a tárfiókot jelöli. Az ügyfélobjektumot a Microsoft Entra-azonosító hitelesítő adataival vagy egy fiókkulcsmal engedélyezheti.
Az Azure Identity JavaScripthez készült ügyfélkódtárával hitelesítheti az alkalmazást a Microsoft Entra-azonosítóval.
Feljegyzés
Ha a Hozzáférés engedélyezéséhez Microsoft Entra-azonosítót használ, győződjön meg arról, hogy a biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásával és a módosításuk hatásaival kapcsolatos további információkért tekintse meg az Azure Data Lake Storage hozzáférés-vezérlési modelljét.
Először az alábbi Azure-szerepköralapú hozzáférés-vezérlési (Azure RBAC) szerepkörök egyikét kell hozzárendelnie a biztonsági taghoz:
Szerepkör | ACL-beállítási képesség |
---|---|
Storage-blobadatok tulajdonosa | A fiók összes könyvtára és fájlja. |
Storage blobadat-közreműködő | Csak a biztonsági tag tulajdonában lévő könyvtárak és fájlok. |
Ezután hozzon létre egy DataLakeServiceClient-példányt , és adja át a DefaultAzureCredential osztály új példányát.
function GetDataLakeServiceClientAD(accountName) {
const dataLakeServiceClient = new DataLakeServiceClient(
`https://${accountName}.dfs.core.windows.net`,
new DefaultAzureCredential()
);
return dataLakeServiceClient;
}
További információ az adatokhoz való hozzáférés engedélyezésérőlDefaultAzureCredential
: Áttekintés: JavaScript-alkalmazások hitelesítése az Azure-ban az Azure SDK használatával.
Címtár ACL beolvasása és beállítása
Ez a példa lekéri, majd beállítja egy névvel ellátott könyvtár ACL-ét my-directory
. Ez a példa olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, csak olvasási és végrehajtási engedélyeket ad a tulajdonoscsoportnak, és minden másnak olvasási hozzáférést biztosít.
Feljegyzés
Ha az alkalmazás a Microsoft Entra-azonosítóval engedélyezi a hozzáférést, győződjön meg arról, hogy az alkalmazás által a hozzáférés engedélyezéséhez használt biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásáról és a módosításuk hatásairól további információt az Azure Data Lake Storage hozzáférés-vezérlésével kapcsolatban talál.
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);
}
A tároló gyökérkönyvtárának ACL-ét is lekérheti és beállíthatja. A gyökérkönyvtár lekéréséhez adjon át egy üres sztringet (/
) a DataLakeFileSystemClient.getDirectoryClient metódusba.
Fájl ACL beolvasása és beállítása
Ez a példa lekéri, majd beállítja egy nevű fájl ACL-ét upload-file.txt
. Ez a példa olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, csak olvasási és végrehajtási engedélyeket ad a tulajdonoscsoportnak, és minden másnak olvasási hozzáférést biztosít.
Feljegyzés
Ha az alkalmazás a Microsoft Entra-azonosítóval engedélyezi a hozzáférést, győződjön meg arról, hogy az alkalmazás által a hozzáférés engedélyezéséhez használt biztonsági taghoz hozzárendelték a Storage Blob Data Owner szerepkört. Az ACL-engedélyek alkalmazásáról és a módosításuk hatásairól további információt az Azure Data Lake Storage hozzáférés-vezérlésével kapcsolatban talál.
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);
}