Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Csomag (Node Package Manager) | Minták | Visszajelzés küldése
Prerequisites
- 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.0vagy ú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árolási fiók kulcs.
Állítsa be a projektjét
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.
Note
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:
| Role | ACL-beállítási képesség |
|---|---|
| Tárolási blob-adatok tulajdonosa | A fiók összes könyvtára és fájlja. |
| Storage Blob adatkö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ől DefaultAzureCredential: Á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.
Note
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 karakterláncot (/) a DataLakeFileSystemClient.getDirectoryClient metódusnak.
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.
Note
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);
}