Azure-fájlmegosztások elérése a Microsoft Entra ID-val az Azure Files OAuthtal REST-en keresztül

Az Azure Files OAuth REST-en keresztüli használata rendszergazdai szintű olvasási és írási hozzáférést tesz lehetővé az Azure-fájlmegosztásokhoz a felhasználók és alkalmazások számára az OAuth hitelesítési protokollon keresztül, a REST API-alapú hozzáféréshez készült Microsoft Entra ID használatával. A felhasználók, csoportok, külső szolgáltatások, például az Azure Portal, valamint a REST-felületeket használó külső szolgáltatások és alkalmazások mostantól OAuth-hitelesítést és engedélyezést használhatnak egy Microsoft Entra-fiókkal az Azure-fájlmegosztásokban lévő adatok eléréséhez. A REST API-kat hívó PowerShell-parancsmagok és Azure CLI-parancsok az OAuth használatával is hozzáférhetnek az Azure-fájlmegosztásokhoz.

Fontos

A REST API-t explicit fejléc használatával kell meghívnia, hogy jelezze a további jogosultság használatára vonatkozó szándékát. Ez az Azure PowerShellre és az Azure CLI-hozzáférésre is igaz.

Korlátozások

Az Azure Files OAuth a REST-en keresztül csak a fájlokon és könyvtárakon végzett műveleteket támogató FileREST adat API-kat támogatja. Az OAuth nem támogatott a FileService és FileShare erőforrásokat kezelő FilesREST adatsík API-kban. Ezeket a felügyeleti API-kat a tárfiókkulcs vagy SAS-jogkivonat használatával hívjuk meg, és örökölt okokból az adatsíkon keresztül érhetők el. Javasoljuk, hogy használja a vezérlősík API-jait (a tárolási erőforrás-szolgáltatót – Microsoft.Storage), amelyek támogatják az OAuth szolgáltatást a FileService és a FileShare-erőforrásokhoz kapcsolódó összes felügyeleti tevékenységhez.

A fájladat-műveletek Microsoft Entra-azonosítóval való engedélyezése csak a REST API 2022-11-02-es és újabb verzióiban támogatott. Lásd az Azure Storage verziószámozását.

Ügyfélhasználati esetek

Az OAuth-hitelesítés és az Azure Files rest API-felületen keresztüli engedélyezése az alábbi esetekben előnyös lehet az ügyfelek számára.

Alkalmazásfejlesztés és szolgáltatásintegráció

Az OAuth-hitelesítés és -engedélyezés lehetővé teszi a fejlesztők számára, hogy olyan alkalmazásokat építsenek, amelyek felhasználói vagy alkalmazásidentitások használatával férnek hozzá az Azure Storage REST API-khoz a Microsoft Entra-azonosítóból.

Az ügyfelek és a partnerek engedélyezhetik a belső és harmadik féltől származó szolgáltatásokat is, hogy biztonságosan és transzparensen konfigurálják a szükséges hozzáférést egy ügyfél storage-fiókhoz.

Az olyan DevOps-eszközök, mint az Azure Portal, a PowerShell és a CLI, az AzCopy és a Storage Explorer, kezelhetik az adatokat a felhasználó identitásával, így nincs szükség tárelérési kulcsok kezelésére vagy terjesztésére.

Managed identities

Azok az alkalmazások és felügyelt identitások, amelyek biztonsági mentés, visszaállítás vagy naplózás céljából hozzáférést igényelnek a fájlmegosztási adatokhoz, kihasználhatják az OAuth-hitelesítést és -engedélyezést. Az egyes identitásokhoz tartozó fájl- és címtárszintű engedélyek kényszerítése összetettebbé teszi az identitásokat, és előfordulhat, hogy nem kompatibilis bizonyos számítási feladatokkal. Előfordulhat például, hogy az ügyfelek engedélyezni szeretnének egy biztonsági mentési megoldásszolgáltatást az Azure-fájlmegosztások írásvédett hozzáféréssel való elérésére az összes fájlhoz, a fájlspecifikus engedélyeket nem figyelembe véve.

Tárfiók kulcsának cseréje

A Microsoft Entra ID kiváló biztonságot és egyszerű használatot biztosít a megosztott kulcsokhoz való hozzáféréshez. A tárfiókkulcs-hozzáférést OAuth-hitelesítésre és az Azure-fájlmegosztások elérésére vonatkozó engedélyezésre cserélheti írásvédett/írási jogosultságokkal. Ez a megközelítés jobb naplózást és adott felhasználói hozzáférés nyomon követését is lehetővé teszi.

Emelt szintű hozzáférési és hozzáférési engedélyek adatműveletekhez

Az Azure Files OAuth REST-en keresztüli használatához további engedélyekre van szükség a felhasználóhoz, csoporthoz vagy szolgáltatásnévhez rendelt RBAC-szerepkörben. A funkció részeként két új adatművelet jelenik meg:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Az OAuthtal rendelkező REST API-t meghívó felhasználóknak, csoportoknak vagy szolgáltatásneveknek rendelkezniük kell az readFileBackupSemantics adathozzáférést lehetővé tevő szerepkörrel vagy writeFileBackupSemantics művelettel. Ez a funkció használatának követelménye. Az adott fájlszolgáltatás-műveletek meghívásához szükséges engedélyekkel kapcsolatos részletekért tekintse meg az adatműveletek hívásához szükséges engedélyeket.

Ez a funkció két új beépített szerepkört biztosít, amelyek tartalmazzák ezeket az új műveleteket.

Szerepkör Adatműveletek
Storage File Data Privileged Reader Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Storage File Data Privileged Contributor Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Ezek az új szerepkörök hasonlóak a meglévő Storage File Data SMB Share Reader és Storage File Data SMB Share Emelt szintű közreműködő beépített szerepköreihez, de van néhány különbség:

  • Az új szerepkörök tartalmazzák az OAuth-hozzáféréshez szükséges további adatműveleteket.

  • Ha a hozzárendelt Storage-fájladatok kiemelt olvasója vagy a Tárfájladatok kiemelt közreműködői szerepkörrel rendelkező felhasználó, csoport vagy szolgáltatásnév meghívja a FilesREST Data API-t az OAuth használatával, a felhasználó, a csoport vagy a szolgáltatásnév a következőket fogja használni:

    • Storage File Data Privileged Reader: Teljes olvasási hozzáférés a megosztásokban lévő összes adathoz az összes konfigurált tárfiókhoz, függetlenül a beállított fájl-/könyvtárszintű NTFS-engedélyektől.
    • Tárfájladatok kiemelt közreműködője: Teljes olvasás, írás, ACL-ek módosítása, hozzáférés törlése a megosztásokban lévő összes adathoz az összes konfigurált tárfiókhoz, függetlenül a beállított fájl-/könyvtárszintű NTFS-engedélyektől.
  • Ezekkel a speciális engedélyekkel és szerepkörökkel a rendszer megkerüli a fájl-/könyvtárszintű engedélyeket, és engedélyezi a fájlmegosztási adatokhoz való hozzáférést.

Az új szerepkörökkel és adatműveletekkel ez a funkció tárfiók-szintű jogosultságokat biztosít, amelyek felülírják a tárfiókban lévő összes fájlmegosztáshoz tartozó fájlokra és mappákra vonatkozó összes engedélyt. Az új szerepkörök azonban csak az adatszolgáltatások elérésére vonatkozó engedélyeket tartalmaznak. Nem tartalmaznak fájlmegosztás-kezelési szolgáltatásokhoz (fájlmegosztásokon végzett műveletekhez) való hozzáféréshez szükséges engedélyeket. A funkció használatához győződjön meg arról, hogy rendelkezik hozzáféréssel:

  • a tárfiók
  • fájlmegosztás-kezelési szolgáltatások
  • adatszolgáltatások (a fájlmegosztásban lévő adatok)

Számos beépített szerepkör biztosít hozzáférést a felügyeleti szolgáltatásokhoz. Egyéni szerepköröket is létrehozhat a megfelelő engedélyekkel. A szerepköralapú hozzáférés-vezérléssel kapcsolatos további információkért tekintse meg az Azure RBAC-t. A beépített szerepkörök definiálásáról további információt a szerepkördefiníciók ismertetése című témakörben talál.

Fontos

Az elérési úthoz Microsoft.Storage/storageAccounts/fileServices/* vagy a magasabb hatókörhöz definiált helyettesítő karakterek használata automatikusan örökli az új adatművelet által biztosított további hozzáférést és engedélyeket. Az Azure Files nem szándékos vagy túljogosított hozzáférésének megakadályozása érdekében olyan további ellenőrzéseket hajtottunk végre, amelyek megkövetelik, hogy a felhasználók és alkalmazások explicit módon jelezzék a további jogosultság használatára vonatkozó szándékukat. Emellett határozottan javasoljuk, hogy az ügyfelek tekintse át a felhasználói RBAC-szerepkör-hozzárendeléseket, és cserélje le a helyettesítő karakterek használatát explicit engedélyekkel a megfelelő adathozzáférés-kezelés biztosítása érdekében.

Fájladatokhoz való hozzáférés engedélyezése az alkalmazáskódban

Az Azure Identity-ügyfélkódtár leegyszerűsíti az OAuth 2.0 hozzáférési jogkivonat lekérését a Microsoft Entra ID-val való engedélyezéshez az Azure SDK-on keresztül. A .NET, Java, Python, JavaScript és Go Azure Storage-ügyfélkódtárak legújabb verziói integrálhatók az Egyes nyelvek Azure Identity-kódtáraival, így egyszerű és biztonságos módon szerezhetnek be hozzáférési jogkivonatot az Azure file service-ből érkező kérések engedélyezéséhez.

Az Azure Identity-ügyfélkódtár előnye, hogy lehetővé teszi, hogy ugyanazt a kódot használja a hozzáférési jogkivonat beszerzéséhez, függetlenül attól, hogy az alkalmazás a fejlesztési környezetben vagy az Azure-ban fut. Az Azure Identity ügyfélkódtár egy hozzáférési jogkivonatot ad vissza egy biztonsági tag számára. Ha a kód az Azure-ban fut, a biztonsági tag lehet az Azure-erőforrások felügyelt identitása, egy szolgáltatásnév vagy egy felhasználó vagy csoport. A fejlesztői környezetben az ügyfélkódtár egy hozzáférési jogkivonatot biztosít egy felhasználó vagy egy egyszerű szolgáltatás számára tesztelési célokra.

Az Azure Identity ügyfélkódtár által visszaadott hozzáférési jogkivonatot a rendszer egy jogkivonat hitelesítő adataiba foglalja bele. Ezután a jogkivonat hitelesítő adataival lekérhet egy szolgáltatásügyfél-objektumot, amelyet az Azure Files szolgáltatáson végzett engedélyezett műveletek végrehajtásához használhat.

Íme néhány mintakód:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string aadEndpoint = "";
            string accountUri = "";
            string connectionString = "";
            string shareName = "test-share";
            string directoryName = "testDirectory";
            string fileName = "testFile"; 

            ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName); 
            await sharedKeyShareClient.CreateIfNotExistsAsync(); 

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(aadEndpoint)
                });

            ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);

            // Set Allow Trailing Dot and Source Allow Trailing Dot.
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients.

            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;
            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
            await sharedKeyShareClient.DeleteIfExistsAsync();
        }
    }
}

Hozzáférés engedélyezése a FileREST adatsík API-val

A fájladatokhoz való hozzáférést az Azure Portalon vagy az Azure PowerShellben is engedélyezheti.

Az Azure Portal használhatja a Microsoft Entra-fiókot vagy a tárfiók hozzáférési kulcsát egy Azure-tárfiók fájladatainak eléréséhez. Az Azure Portal által használt engedélyezési séma az Önhöz rendelt Azure-szerepköröktől függ.

Amikor megpróbál hozzáférni a fájladatokhoz, az Azure Portal először ellenőrzi, hogy rendelkezik-e Azure-szerepkörrel Microsoft.Storage/storageAccounts/listkeys/action. Ha ezzel a művelettel szerepkörhöz lett rendelve, akkor az Azure Portal a fiókkulcsot használja a fájladatok megosztott kulcsok engedélyezésével való eléréséhez. Ha még nem rendelt hozzá szerepkört ezzel a művelettel, akkor az Azure Portal megkísérli elérni az adatokat a Microsoft Entra-fiókjával.

Ahhoz, hogy a Microsoft Entra-fiókjával hozzáférjen a fájladatokhoz az Azure Portalról, engedélyekre van szüksége a fájladatok eléréséhez, és engedélyekre is szüksége van az Azure Portal tárfiók-erőforrásainak navigálásához. Az Azure által biztosított beépített szerepkörök hozzáférést biztosítanak a fájlerőforrásokhoz, de nem adnak engedélyeket a tárfiók erőforrásaihoz. Ezért a portálhoz való hozzáféréshez egy Azure Resource Manager-szerepkört (ARM) is hozzá kell rendelni, például az Olvasó szerepkört, amely a tárfiók szintjére vagy annál magasabb szintre terjed ki. Az Olvasó szerepkör a legszigorúbb engedélyeket adja meg, de minden olyan ARM-szerepkör elfogadható, amely hozzáférést biztosít a tárfiók-felügyeleti erőforrásokhoz.

Amikor egy tárolóhoz lép, az Azure Portal jelzi, hogy melyik engedélyezési séma van használatban. A portál adathozzáférésével kapcsolatos további információkért lásd : A fájladatokhoz való hozzáférés engedélyezése az Azure Portalon.

Kapcsolódó információk