A .NET használata az ACL-ek kezeléséhez az Azure Data Lake Storage Gen2-ben

Ez a cikk bemutatja, hogyan használhatja a .NET-et a könyvtá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.

Az ACL-öröklés már elérhető a szülőkönyvtárban létrehozott új gyermekelemekhez. A szülőkönyvtár meglévő gyermekelemeit rekurzív módon is hozzáadhatja, frissítheti és eltávolíthatja anélkül, hogy ezeket a módosításokat külön-külön kellene végrehajtania minden gyermekelemhez.

Package (NuGet) | Samples | API reference | Gen1 to Gen2 mapping | Give Feedback

Előfeltételek

  • Azure-előfizetés. Lásd: Ingyenes Azure-fiók létrehozása.

  • Hierarchikus névtérrel (HNS) rendelkező tárfiók. Az alábbi utasításokat követve hozzon létre egyet.

  • 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

Első lépésként telepítse az Azure.Storage.Files.DataLake NuGet csomagot.

  1. Nyisson meg egy parancsablakot (például: Windows PowerShell).

  2. A projektkönyvtárból telepítse az Azure.Storage.Files.DataLake előzetes verziós csomagot a dotnet add package parancs használatával.

    dotnet add package Azure.Storage.Files.DataLake -v 12.6.0 -s https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
    

    Ezután adja hozzá ezeket az utasításokat a kódfájl tetejére.

    using Azure;
    using Azure.Core;
    using Azure.Storage;
    using Azure.Storage.Files.DataLake;
    using Azure.Storage.Files.DataLake.Models;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    

Csatlakozás a fiókhoz

A cikkben szereplő kódrészletek használatához létre kell hoznia egy DataLakeServiceClient-példányt , amely a tárfiókot jelöli.

Csatlakozás a Microsoft Entra ID használatával

Megjegyzé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 Gen2 hozzáférés-vezérlési modelljét.

A .NET-hez készült Azure Identity-ügyfélkódtár használatával hitelesítheti az alkalmazást a Microsoft Entra-azonosítóval.

A csomag telepítése után adja hozzá ezt az utasítást a kódfájl tetejére.

using Azure.Identity;

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
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.

public static DataLakeServiceClient GetDataLakeServiceClient(string accountName)
{
    string dfsUri = $"https://{accountName}.dfs.core.windows.net";

    DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(
        new Uri(dfsUri),
        new DefaultAzureCredential());

    return dataLakeServiceClient;
}

A DefaultAzureCredential adatokhoz való hozzáférés engedélyezésével kapcsolatos további információkért tekintse meg a .NET-alkalmazások Azure-szolgáltatásokkal való hitelesítését ismertető témakört.

Csatlakozás fiókkulcs használatával

Az adatokhoz való hozzáférést a fiók hozzáférési kulcsával (megosztott kulcs) engedélyezheti. Ez a példa létrehoz egy DataLakeServiceClient-példányt , amely a fiókkulccsal van engedélyezve.

public static DataLakeServiceClient GetDataLakeServiceClient(string accountName, string accountKey)
{
    StorageSharedKeyCredential sharedKeyCredential =
        new StorageSharedKeyCredential(accountName, accountKey);

    string dfsUri = $"https://{accountName}.dfs.core.windows.net";

    DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(
        new Uri(dfsUri),
        sharedKeyCredential);

    return dataLakeServiceClient;
}

Figyelmeztetés

A megosztott kulccsal való engedélyezés nem ajánlott, mivel kevésbé biztonságos. Az optimális biztonság érdekében tiltsa le a megosztott kulccsal történő engedélyezést a tárfiókhoz, az Azure Storage-fiók megosztott kulcsának engedélyezésének megakadályozása című cikkben leírtak szerint.

A hozzáférési kulcsok és a kapcsolati sztring használatát a koncepcióalkalmazások vagy a fejlesztési prototípusok kezdeti ellenőrzésére kell korlátozni, amelyek nem férnek hozzá éles vagy bizalmas adatokhoz. Ellenkező esetben az Azure SDK-ban elérhető jogkivonatalapú hitelesítési osztályokat mindig előnyben kell részesíteni az Azure-erőforrásokhoz való hitelesítéskor.

A Microsoft azt javasolja, hogy az ügyfelek a Microsoft Entra-azonosítót vagy a közös hozzáférésű jogosultságkódot (SAS) használják az Azure Storage-adatokhoz való hozzáférés engedélyezéséhez. További információ: Műveletek engedélyezése adathozzáféréshez.

ACL-ek beállítása

Az ACL beállításakor a teljes ACL-t lecseréli, beleértve az összes bejegyzést is. Ha módosítani szeretné egy biztonsági tag engedélyszintét, vagy új biztonsági tagot szeretne hozzáadni az ACL-hez anélkül, hogy más meglévő bejegyzéseket érinteni kellene, akkor ehelyett frissítenie kell az ACL-t. Az ACL lecserélése helyett az ACL frissítéséről a cikk ACL-ek frissítése című szakaszában olvashat.

Ha úgy dönt, hogy beállítja az ACL-t , hozzá kell adnia egy bejegyzést a tulajdonos felhasználóhoz, egy bejegyzést a tulajdonoscsoporthoz és egy bejegyzést az összes többi felhasználóhoz. A tulajdonos felhasználóról, a tulajdonosi csoportról és az összes többi felhasználóról további információt a Felhasználók és identitások című témakörben talál.

Ez a szakasz a következő lépéseket mutatja be:

  • Címtár ACL-jének beállítása
  • Fájl ACL-jének beállítása
  • ACL-ek rekurzív beállítása

Címtár ACL-jének beállítása

Kérje le egy könyvtár hozzáférés-vezérlési listáját (ACL) a DataLakeDirectoryClient.GetAccessControlAsync metódus meghívásával, és állítsa be az ACL-t a DataLakeDirectoryClient.SetAccessControlList metódus meghívásával.

Ez a példa lekéri és beállítja egy névvel ellátott könyvtár ACL-ét my-directory. A sztring user::rwx,group::r-x,other::rw- olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, a tulajdonoscsoportnak csak olvasási és végrehajtási engedélyeket ad, és minden másnak olvasási és írási engedélyt ad.

public async Task ManageDirectoryACLs(DataLakeFileSystemClient fileSystemClient)
{
    DataLakeDirectoryClient directoryClient =
      fileSystemClient.GetDirectoryClient("");

    PathAccessControl directoryAccessControl =
        await directoryClient.GetAccessControlAsync();

    foreach (var item in directoryAccessControl.AccessControlList)
    {
        Console.WriteLine(item.ToString());
    }

    IList<PathAccessControlItem> accessControlList
        = PathAccessControlExtensions.ParseAccessControlList
        ("user::rwx,group::r-x,other::rw-");

    directoryClient.SetAccessControlList(accessControlList);

}

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ódusnak.

Fájl ACL-jének beállítása

Kérje le egy fájl hozzáférés-vezérlési listáját (ACL) a DataLakeFileClient.GetAccessControlAsync metódus meghívásával, és állítsa be az ACL-t a DataLakeFileClient.SetAccessControlList metódus meghívásával.

Ez a példa lekéri és beállítja egy nevű fájl ACL-ét my-file.txt. A sztring user::rwx,group::r-x,other::rw- olvasási, írási és végrehajtási engedélyeket ad a tulajdonos felhasználónak, a tulajdonoscsoportnak csak olvasási és végrehajtási engedélyeket ad, és minden másnak olvasási és írási engedélyt ad.

public async Task ManageFileACLs(DataLakeFileSystemClient fileSystemClient)
{
    DataLakeDirectoryClient directoryClient =
        fileSystemClient.GetDirectoryClient("my-directory");

    DataLakeFileClient fileClient =
        directoryClient.GetFileClient("hello.txt");

    PathAccessControl FileAccessControl =
        await fileClient.GetAccessControlAsync();

    foreach (var item in FileAccessControl.AccessControlList)
    {
        Console.WriteLine(item.ToString());
    }

    IList<PathAccessControlItem> accessControlList
        = PathAccessControlExtensions.ParseAccessControlList
        ("user::rwx,group::r-x,other::rw-");

    fileClient.SetAccessControlList(accessControlList);
}

ACL-ek rekurzív beállítása

Az ACL-ek rekurzív beállítása a DataLakeDirectoryClient.SetAccessControlRecursiveAsync metódus meghívásával. Adja át ezt a metódust a PathAccessControlItem listájának. Minden PathAccessControlItem definiál egy ACL-bejegyzést.

Ha alapértelmezett ACL-bejegyzést szeretne beállítani, akkor a PathAccessControlItem.DefaultScope tulajdonságot igaz értékre állíthatja.

Ez a példa egy névvel ellátott könyvtár ACL-jének my-parent-directorybeállítását állítja be. Ez a metódus egy logikai paramétert fogad el, isDefaultScope amely meghatározza, hogy az alapértelmezett ACL-t kell-e beállítani. Ez a paraméter a PathAccessControlItem konstruktorában használatos. Az ACL bejegyzései olvasási, írási és végrehajtási engedélyeket adnak a tulajdonos felhasználónak, a tulajdonoscsoportnak csak olvasási és végrehajtási engedélyeket ad, és nem biztosít hozzáférést a többi felhasználónak. A példában szereplő utolsó ACL-bejegyzés olvasási és végrehajtási engedélyekkel rendelkezik egy adott felhasználónak az objektumazonosítóval xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx .

    public async Task SetACLRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
    DataLakeDirectoryClient directoryClient =
        serviceClient.GetFileSystemClient("my-container").
            GetDirectoryClient("my-parent-directory");

    List<PathAccessControlItem> accessControlList =
        new List<PathAccessControlItem>()
    {
new PathAccessControlItem(AccessControlType.User,
    RolePermissions.Read |
    RolePermissions.Write |
    RolePermissions.Execute, isDefaultScope),

new PathAccessControlItem(AccessControlType.Group,
    RolePermissions.Read |
    RolePermissions.Execute, isDefaultScope),

new PathAccessControlItem(AccessControlType.Other,
    RolePermissions.None, isDefaultScope),

new PathAccessControlItem(AccessControlType.User,
    RolePermissions.Read |
    RolePermissions.Execute, isDefaultScope,
    entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
    };

    await directoryClient.SetAccessControlRecursiveAsync
        (accessControlList, null);
}

ACL-ek frissítése

Az ACL frissítésekor az ACL-t módosítja ahelyett, hogy lecseréli az ACL-t. Hozzáadhat például egy új biztonsági tagot az ACL-hez anélkül, hogy az az ACL-ben felsorolt többi biztonsági tagot érintené. Ha frissíteni szeretné az ACL-t a frissítés helyett, olvassa el a cikk ACL-ek beállítása című szakaszát.

Ez a szakasz a következő lépéseket mutatja be:

  • ACL frissítése
  • ACL-ek rekurzív frissítése

ACL frissítése

Először kérje le egy könyvtár ACL-ét a DataLakeDirectoryClient.GetAccessControlAsync metódus meghívásával. Másolja az ACL-bejegyzések listáját egy új PathAccessControl-objektumlistára. Ezután keresse meg a frissíteni kívánt bejegyzést, és cserélje le a listában. Állítsa be az ACL-t a DataLakeDirectoryClient.SetAccessControlList metódus meghívásával.

Ez a példa úgy frissíti a tároló gyökér ACL-ét, hogy lecseréli az ACL-bejegyzést az összes többi felhasználóra.

public async Task UpdateDirectoryACLs(DataLakeFileSystemClient fileSystemClient)
{
    DataLakeDirectoryClient directoryClient =
      fileSystemClient.GetDirectoryClient("");

    PathAccessControl directoryAccessControl =
        await directoryClient.GetAccessControlAsync();

    List<PathAccessControlItem> accessControlListUpdate 
        = (List<PathAccessControlItem>)directoryAccessControl.AccessControlList;

    int index = -1;

    foreach (var item in accessControlListUpdate)
    {
        if (item.AccessControlType == AccessControlType.Other)
        {
            index = accessControlListUpdate.IndexOf(item);
            break;
        }
    }

    if (index > -1)
    {
        accessControlListUpdate[index] = new PathAccessControlItem(AccessControlType.Other,
        RolePermissions.Read |
        RolePermissions.Execute);

        directoryClient.SetAccessControlList(accessControlListUpdate);
    }

   }

ACL-ek rekurzív frissítése

Az ACL rekurzív frissítéséhez hozzon létre egy új ACL-objektumot a frissíteni kívánt ACL-bejegyzéssel, majd használja ezt az objektumot az ACL-művelet frissítéséhez. Ne szerezze be a meglévő ACL-t, csak adja meg a frissíteni kívánt ACL-bejegyzéseket.

Az ACL rekurzív frissítése a DataLakeDirectoryClient.UpdateAccessControlRecursiveAsync metódus meghívásával. Adja át ezt a metódust a PathAccessControlItem listájának. Minden PathAccessControlItem definiál egy ACL-bejegyzést.

Ha egy alapértelmezett ACL-bejegyzést szeretne frissíteni, akkor a PathAccessControlItem.DefaultScope tulajdonságot igaz értékre állíthatja.

Ez a példa egy írási engedéllyel rendelkező ACL-bejegyzést frissít. Ez a metódus elfogad egy logikai paramétert, amely isDefaultScope megadja, hogy frissíteni kell-e az alapértelmezett ACL-t. Ez a paraméter a PathAccessControlItem konstruktorában használatos.

public async Task UpdateACLsRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
    DataLakeDirectoryClient directoryClient =
        serviceClient.GetFileSystemClient("my-container").
        GetDirectoryClient("my-parent-directory");

    List<PathAccessControlItem> accessControlListUpdate =
        new List<PathAccessControlItem>()
    {
new PathAccessControlItem(AccessControlType.User,
    RolePermissions.Read |
    RolePermissions.Write |
    RolePermissions.Execute, isDefaultScope,
    entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
    };

    await directoryClient.UpdateAccessControlRecursiveAsync
        (accessControlListUpdate, null);

}

ACL-bejegyzések eltávolítása

Eltávolíthat egy vagy több ACL-bejegyzést. Ez a szakasz a következő lépéseket mutatja be:

  • ACL-bejegyzés eltávolítása
  • ACL-bejegyzések rekurzív eltávolítása

ACL-bejegyzés eltávolítása

Először kérje le egy könyvtár ACL-ét a DataLakeDirectoryClient.GetAccessControlAsync metódus meghívásával. Másolja az ACL-bejegyzések listáját egy új PathAccessControl-objektumlistára. Ezután keresse meg az eltávolítani kívánt bejegyzést, és hívja meg a gyűjtemény Eltávolítás metódusát. Állítsa be a frissített ACL-t a DataLakeDirectoryClient.SetAccessControlList metódus meghívásával.

Ez a példa úgy frissíti a tároló gyökér ACL-ét, hogy lecseréli az ACL-bejegyzést az összes többi felhasználóra.

public async Task RemoveDirectoryACLEntry
    (DataLakeFileSystemClient fileSystemClient)
{
    DataLakeDirectoryClient directoryClient =
      fileSystemClient.GetDirectoryClient("");

    PathAccessControl directoryAccessControl =
        await directoryClient.GetAccessControlAsync();

    List<PathAccessControlItem> accessControlListUpdate
        = (List<PathAccessControlItem>)directoryAccessControl.AccessControlList;

    PathAccessControlItem entryToRemove = null;

    foreach (var item in accessControlListUpdate)
    {
        if (item.EntityId == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
        {
            entryToRemove = item;
            break;
        }
    }

    if (entryToRemove != null)
    {
        accessControlListUpdate.Remove(entryToRemove);
        directoryClient.SetAccessControlList(accessControlListUpdate);
    }

}

ACL-bejegyzések rekurzív eltávolítása

Az ACL-bejegyzések rekurzív eltávolításához hozzon létre egy új ACL-objektumot az ACL-bejegyzés eltávolításához, majd használja ezt az objektumot az ACL-művelet eltávolításához. Ne szerezze be a meglévő ACL-t, csak adja meg az eltávolítandó ACL-bejegyzéseket.

Távolítsa el az ACL-bejegyzéseket a DataLakeDirectoryClient.RemoveAccessControlRecursiveAsync metódus meghívásával. Adja át ezt a metódust a PathAccessControlItem listájának. Minden PathAccessControlItem definiál egy ACL-bejegyzést.

Ha el szeretne távolítani egy alapértelmezett ACL-bejegyzést, akkor a PathAccessControlItem.DefaultScope tulajdonságot igaz értékre állíthatja.

Ez a példa eltávolít egy ACL-bejegyzést a névvel ellátott my-parent-directorykönyvtár ACL-éből. Ez a metódus egy logikai paramétert fogad el, isDefaultScope amely megadja, hogy el kívánja-e távolítani a bejegyzést az alapértelmezett ACL-ből. Ez a paraméter a PathAccessControlItem konstruktorában használatos.

public async Task RemoveACLsRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
    DataLakeDirectoryClient directoryClient =
        serviceClient.GetFileSystemClient("my-container").
            GetDirectoryClient("my-parent-directory");

    List<RemovePathAccessControlItem> accessControlListForRemoval =
        new List<RemovePathAccessControlItem>()
        {
    new RemovePathAccessControlItem(AccessControlType.User, isDefaultScope,
    entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
        };

    await directoryClient.RemoveAccessControlRecursiveAsync
        (accessControlListForRemoval, null);

}

Helyreállítás hibákból

Futtatókörnyezeti vagy engedélyhibák fordulhatnak elő az ACL-ek rekurzív módosításakor. Futásidejű hibák esetén indítsa újra a folyamatot az elejétől kezdve. Engedélyhibák akkor fordulhatnak elő, ha a rendszerbiztonsági tag nem rendelkezik elegendő engedéllyel a módosított címtár vagy fájl ACL-jének módosításához. Oldja meg az engedélyproblémát, majd válassza a folyamat folytatását a meghibásodási pontról egy folytatási jogkivonat használatával, vagy indítsa újra a folyamatot az elejétől. Nem kell a folytatási jogkivonatot használnia, ha az elejétől kezdve szeretne újraindulni. Az ACL-bejegyzéseket negatív hatás nélkül újra alkalmazhatja.

Ez a példa egy folytatási jogkivonatot ad vissza meghibásodás esetén. Az alkalmazás a hiba elhárítása után újra meghívhatja ezt a példametódust, és átadhatja a folytatási jogkivonatot. Ha ez a példametódus első alkalommal van meghívva, az alkalmazás átadhat egy értéket a folytatási jogkivonat paraméterének null .

public async Task<string> ResumeAsync(DataLakeServiceClient serviceClient,
    DataLakeDirectoryClient directoryClient,
    List<PathAccessControlItem> accessControlList,
    string continuationToken)
{
    try
    {
        var accessControlChangeResult =
            await directoryClient.SetAccessControlRecursiveAsync(
                accessControlList, continuationToken: continuationToken, null);

        if (accessControlChangeResult.Value.Counters.FailedChangesCount > 0)
        {
            continuationToken =
                accessControlChangeResult.Value.ContinuationToken;
        }

        return continuationToken;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
        return continuationToken;
    }

}

Ha azt szeretné, hogy a folyamat megszakítás nélkül befejeződjön engedélyhibákkal, ezt megadhatja.

Annak érdekében, hogy a folyamat zavartalanul befejeződjön, adjon meg egy AccessControlChangedOptions objektumot, és állítsa az objektum ContinueOnFailure tulajdonságát a következőre true.

Ez a példa rekurzív módon állítja be az ACL-bejegyzéseket. Ha ez a kód engedélyezési hibát tapasztal, rögzíti a hibát, és folytatja a végrehajtást. Ez a példa a hibák számát nyomtatja ki a konzolon.

public async Task ContinueOnFailureAsync(DataLakeServiceClient serviceClient,
    DataLakeDirectoryClient directoryClient,
    List<PathAccessControlItem> accessControlList)
{
    var accessControlChangeResult =
        await directoryClient.SetAccessControlRecursiveAsync(
            accessControlList, null, new AccessControlChangeOptions()
            { ContinueOnFailure = true });

    var counters = accessControlChangeResult.Value.Counters;

    Console.WriteLine("Number of directories changed: " +
        counters.ChangedDirectoriesCount.ToString());

    Console.WriteLine("Number of files changed: " +
        counters.ChangedFilesCount.ToString());

    Console.WriteLine("Number of failures: " +
        counters.FailedChangesCount.ToString());
}

Best practices

Ez a szakasz az ACL-ek rekurzív beállítására vonatkozó ajánlott eljárásokat ismerteti.

Futtatókörnyezeti hibák kezelése

Futásidejű hiba több okból is előfordulhat (például kimaradás vagy ügyfélkapcsolati probléma). Ha futásidejű hibát tapasztal, indítsa újra a rekurzív ACL-folyamatot. Az ACL-ek újra alkalmazhatók az elemekre anélkül, hogy negatív hatással lenne.

Engedélyhibák kezelése (403)

Ha rekurzív ACL-folyamat futtatása közben hozzáférés-vezérlési kivételt tapasztal, előfordulhat, hogy az AD biztonsági tag nem rendelkezik elegendő engedéllyel ahhoz, hogy ACL-t alkalmazzon a címtárhierarchiában lévő gyermekelemek egy vagy több elemére. Engedélyhiba esetén a folyamat leáll, és egy folytatási jogkivonatot ad meg. Javítsa ki az engedélyproblémát, majd használja a folytatási jogkivonatot a fennmaradó adathalmaz feldolgozásához. A már sikeresen feldolgozott könyvtárakat és fájlokat nem kell újra feldolgozni. Dönthet úgy is, hogy újraindítja a rekurzív ACL-folyamatot. Az ACL-ek újra alkalmazhatók az elemekre anélkül, hogy negatív hatással lenne.

Hitelesítő adatok

Javasoljuk, hogy kiépítsen egy Microsoft Entra biztonsági tagot, amely a Tárolóblob-adattulajdonos szerepkörhöz lett hozzárendelve a céltárfiók vagy tároló hatókörében.

Teljesítmény

A késés csökkentése érdekében javasoljuk, hogy futtassa a rekurzív ACL-folyamatot egy Olyan Azure-beli virtuális gépen (VM), amely a tárfiókja régiójában található.

ACL-korlátok

A címtárakra vagy fájlokra alkalmazható ACL-ek maximális száma 32 hozzáférési ACL és 32 alapértelmezett ACL. További információért lásd: Hozzáférés-vezérlés az Azure Data Lake Storage Gen2-ben.

Kapcsolódó információk