Share via


Toegang tot Azure-bestandsshares met behulp van Microsoft Entra ID met Azure Files OAuth via REST

Met Azure Files OAuth via REST kunt u lees- en schrijftoegang op beheerdersniveau tot Azure-bestandsshares voor gebruikers en toepassingen via het OAuth-verificatieprotocol , met behulp van Microsoft Entra ID voor op REST API gebaseerde toegang. Gebruikers, groepen, services van derden, zoals Azure Portal en services van derden en toepassingen die gebruikmaken van REST-interfaces, kunnen nu OAuth-verificatie en -autorisatie gebruiken met een Microsoft Entra-account voor toegang tot gegevens in Azure-bestandsshares. PowerShell-cmdlets en Azure CLI-opdrachten die REST API's aanroepen, kunnen ook OAuth gebruiken voor toegang tot Azure-bestandsshares. U moet de REST API aanroepen met behulp van een expliciete header om uw intentie aan te geven voor het gebruik van de extra bevoegdheid. Dit geldt ook voor toegang tot Azure PowerShell en Azure CLI.

Belangrijk

In dit artikel wordt uitgelegd hoe u toegang op beheerdersniveau tot Azure-bestandsshares kunt inschakelen voor specifieke gebruiksscenario's van klanten. Als u op zoek bent naar een meer algemeen artikel over verificatie op basis van identiteiten voor eindgebruikers, raadpleegt u Overzicht van verificatieopties op basis van identiteiten van Azure Files voor SMB-toegang.

Beperkingen

Azure Files OAuth via REST ondersteunt alleen de FileREST-gegevens-API's die bewerkingen voor bestanden en mappen ondersteunen. OAuth wordt niet ondersteund voor FilesREST-gegevensvlak-API's waarmee FileService- en FileShare-resources worden beheerd. Deze beheer-API's worden aangeroepen met behulp van het opslagaccountsleutel of SAS-token en worden om verouderde redenen weergegeven via het gegevensvlak. We raden u aan de besturingsvlak-API's (de opslagresourceprovider - Microsoft.Storage) te gebruiken die OAuth ondersteunen voor alle beheeractiviteiten met betrekking tot FileService- en FileShare-resources.

Het autoriseren van bestandsgegevensbewerkingen met Microsoft Entra-id wordt alleen ondersteund voor REST API-versies 2022-11-02 en hoger. Zie Versiebeheer voor Azure Storage.

Gebruiksvoorbeelden van klanten

OAuth-verificatie en -autorisatie met Azure Files via de REST API-interface kunnen in de volgende scenario's profiteren van klanten.

Integratie van toepassingen en services

Met OAuth-verificatie en -autorisatie kunnen ontwikkelaars toepassingen bouwen die toegang hebben tot Azure Storage REST API's met behulp van gebruikers- of toepassingsidentiteiten van Microsoft Entra ID.

Klanten en partners kunnen ook services van derden en derden inschakelen om de benodigde toegang veilig en transparant te configureren voor een opslagaccount van een klant.

DevOps-hulpprogramma's zoals Azure Portal, PowerShell en CLI, AzCopy en Storage Explorer kunnen gegevens beheren met behulp van de identiteit van de gebruiker, waardoor opslagtoegangssleutels niet meer hoeven te worden beheerd of gedistribueerd.

Beheerde identiteiten

Klanten met toepassingen en beheerde identiteiten waarvoor toegang tot bestandssharegegevens is vereist voor back-up-, herstel- of controledoeleinden, kunnen profiteren van OAuth-verificatie en -autorisatie. Het afdwingen van machtigingen op bestand- en mapniveau voor elke identiteit voegt complexiteit toe en is mogelijk niet compatibel met bepaalde werkbelastingen. Klanten willen bijvoorbeeld een back-upoplossingsservice autoriseren voor toegang tot Azure-bestandsshares met alleen-lezentoegang tot alle bestanden, zonder rekening te houden met bestandsspecifieke machtigingen.

Vervanging van opslagaccountsleutel

Microsoft Entra ID biedt superieure beveiliging en gebruiksgemak ten opzichte van toegang tot gedeelde sleutels. U kunt toegang tot de sleutel van het opslagaccount vervangen door OAuth-verificatie en -autorisatie voor toegang tot Azure-bestandsshares met lees-alles/schrijfrechten. Deze aanpak biedt ook betere controle en tracering van specifieke gebruikerstoegang.

Bevoegde toegangs- en toegangsmachtigingen voor gegevensbewerkingen

Als u de Azure Files OAuth wilt gebruiken via REST, zijn er aanvullende machtigingen die moeten worden opgenomen in de RBAC-rol die is toegewezen aan de gebruiker, groep of service-principal. Er worden twee nieuwe gegevensacties geïntroduceerd als onderdeel van deze functie:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Gebruikers, groepen of service-principals die de REST API aanroepen met OAuth, moeten de readFileBackupSemantics of writeFileBackupSemantics actie hebben toegewezen aan de rol die toegang tot gegevens toestaat. Dit is een vereiste voor het gebruik van deze functie. Zie Machtigingen voor het aanroepen van gegevensbewerkingen voor meer informatie over de machtigingen die nodig zijn om specifieke bestandsservicebewerkingen aan te roepen.

Deze functie biedt twee nieuwe ingebouwde rollen die deze nieuwe acties bevatten.

- Rol Gegevensacties
Lezer met bevoegdheid voor opslagbestandsgegevens Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Inzender met bevoegdheid voor opslagbestandsgegevens 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

Deze nieuwe rollen zijn vergelijkbaar met de bestaande ingebouwde rollen SMB-sharelezer voor opslagbestandsgegevens en opslagbestandsgegevens met verhoogde inzender voor SMB-share, maar er zijn enkele verschillen:

  • De nieuwe rollen bevatten de aanvullende gegevensacties die vereist zijn voor OAuth-toegang.

  • Wanneer de gebruiker, groep of service-principal waaraan opslagbestandsgegevens voor bevoegde lezer of inzender voor opslagbestandsgegevens is toegewezen, de FilesREST-gegevens-API aanroept met behulp van OAuth, de gebruiker, de groep of de service-principal:

    • Bevoegde lezer voor opslagbestandsgegevens: volledige leestoegang voor alle gegevens in de shares voor alle geconfigureerde opslagaccounts, ongeacht de NTFS-machtigingen op bestand/mapniveau die zijn ingesteld.
    • Inzender voor opslagbestandsgegevens: Volledige lees-, schrijf-, wijzigings-ACL's, verwijder toegang tot alle gegevens in de shares voor alle geconfigureerde opslagaccounts, ongeacht de NTFS-machtigingen op bestand/directoryniveau die zijn ingesteld.
  • Met deze speciale machtigingen en rollen slaat het systeem machtigingen op bestand/mapniveau over en staat toegang tot bestandssharegegevens toe.

Met de nieuwe rollen en gegevensacties biedt deze functie bevoegdheden voor het opslagaccount die alle machtigingen voor bestanden en mappen onder alle bestandsshares in het opslagaccount vervangen. De nieuwe rollen bevatten echter alleen machtigingen voor toegang tot gegevensservices. Ze bevatten geen machtigingen voor toegang tot beheerservices voor bestandsshares (acties op bestandsshares). Als u deze functie wilt gebruiken, moet u beschikken over machtigingen voor toegang:

  • het opslagaccount
  • beheerservices voor bestandsshares
  • gegevensservices (de gegevens in de bestandsshare)

Er zijn veel ingebouwde rollen die toegang bieden tot beheerservices. U kunt ook aangepaste rollen maken met de juiste machtigingen. Zie Azure RBAC voor meer informatie over op rollen gebaseerd toegangsbeheer. Zie Roldefinities begrijpen voor meer informatie over hoe ingebouwde rollen worden gedefinieerd.

Belangrijk

Alle jokertekens die zijn gedefinieerd voor het pad Microsoft.Storage/storageAccounts/fileServices/* of een hoger bereik, nemen automatisch de aanvullende toegang en machtigingen over die via deze nieuwe gegevensactie worden verleend. Om onbedoelde of overprivilegieerde toegang tot Azure Files te voorkomen, hebben we aanvullende controles geïmplementeerd waarvoor gebruikers en toepassingen expliciet hun intentie moeten aangeven om de extra bevoegdheid te gebruiken. Bovendien raden we klanten ten zeerste aan om hun RBAC-roltoewijzingen van gebruikers te controleren en gebruik van jokertekens te vervangen door expliciete machtigingen om het juiste beheer van gegevenstoegang te garanderen.

Toegang tot bestandsgegevens in toepassingscode autoriseren

De Azure Identity-clientbibliotheek vereenvoudigt het proces van het ophalen van een OAuth 2.0-toegangstoken voor autorisatie met Microsoft Entra-id via de Azure SDK. De nieuwste versies van de Azure Storage-clientbibliotheken voor .NET, Java, Python, JavaScript en Go kunnen worden geïntegreerd met de Azure Identity-bibliotheken voor elk van deze talen om een eenvoudig en veilig middel te bieden voor het verkrijgen van een toegangstoken voor autorisatie van aanvragen van de Azure-bestandsservice.

Een voordeel van de Azure Identity-clientbibliotheek is dat u dezelfde code kunt gebruiken om het toegangstoken te verkrijgen, ongeacht of uw toepassing wordt uitgevoerd in de ontwikkelomgeving of in Azure. De Azure Identity-clientbibliotheek retourneert een toegangstoken voor een beveiligingsprincipaal. Wanneer uw code wordt uitgevoerd in Azure, kan de beveiligingsprincipaal een beheerde identiteit zijn voor Azure-resources, een service-principal of een gebruiker of groep. In de ontwikkelomgeving biedt de clientbibliotheek een toegangstoken voor een gebruiker of een service-principal voor testdoeleinden.

Het toegangstoken dat wordt geretourneerd door de Azure Identity-clientbibliotheek, wordt ingekapseld in een tokenreferentie. Vervolgens kunt u de tokenreferentie gebruiken om een serviceclientobject op te halen voor gebruik bij het uitvoeren van geautoriseerde bewerkingen voor de Azure Files-service.

Hier volgt een voorbeeldcode:

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();
        }
    }
}

Toegang autoriseren met behulp van fileREST-gegevensvlak-API

U kunt ook toegang tot bestandsgegevens autoriseren met behulp van Azure Portal of Azure PowerShell.

Azure Portal kan uw Microsoft Entra-account of de toegangssleutel voor het opslagaccount gebruiken om toegang te krijgen tot bestandsgegevens in een Azure-opslagaccount. Welk autorisatieschema de Azure-portal gebruikt, is afhankelijk van de Azure-rollen die aan u zijn toegewezen.

Wanneer u probeert toegang te krijgen tot bestandsgegevens, controleert Azure Portal eerst of u een Azure-rol hebt toegewezen met Microsoft.Storage/storageAccounts/listkeys/action. Als u met deze actie een rol hebt toegewezen, gebruikt Azure Portal de accountsleutel voor toegang tot bestandsgegevens via autorisatie van gedeelde sleutels. Als u met deze actie geen rol hebt toegewezen, probeert Azure Portal toegang te krijgen tot gegevens met behulp van uw Microsoft Entra-account.

Als u toegang wilt krijgen tot bestandsgegevens vanuit Azure Portal met uw Microsoft Entra-account, hebt u machtigingen nodig voor toegang tot bestandsgegevens en hebt u ook machtigingen nodig om door de resources van het opslagaccount in Azure Portal te navigeren. De ingebouwde rollen van Azure verlenen toegang tot bestandsbronnen, maar ze verlenen geen machtigingen voor opslagaccountbronnen. Daarom moet voor toegang tot de portal ook een ARM-rol (Azure Resource Manager) worden toegewezen, zoals de rol Lezer , die is afgestemd op het niveau van het opslagaccount of hoger. De rol Lezer verleent de meest beperkende machtigingen, maar elke ARM-rol die toegang verleent tot opslagaccountbeheerresources is acceptabel.

Azure Portal laat zien welk autorisatieschema wordt gebruikt wanneer u naar een container navigeert. Zie Kiezen hoe u toegang tot bestandsgegevens in Azure Portal autoriseert voor meer informatie over gegevenstoegang in de portal.

Zie ook