Dela via


Få åtkomst till Azure-filresurser med Microsoft Entra-ID med Azure Files OAuth via REST

Azure Files OAuth via REST möjliggör läs- och skrivåtkomst på administratörsnivå till Azure-filresurser för användare och program via OAuth-autentiseringsprotokollet med hjälp av Microsoft Entra-ID för REST API-baserad åtkomst. Användare, grupper, tjänster från första part som Azure-portalen och tjänster och program från tredje part som använder REST-gränssnitt kan nu använda OAuth-autentisering och auktorisering med ett Microsoft Entra-konto för att komma åt data i Azure-filresurser. PowerShell-cmdletar och Azure CLI-kommandon som anropar REST-API:er kan också använda OAuth för att komma åt Azure-filresurser. Du måste anropa REST-API:et med en explicit rubrik för att ange din avsikt att använda den ytterligare behörigheten. Detta gäller även för Azure PowerShell- och Azure CLI-åtkomst.

Viktigt!

Den här artikeln beskriver hur du aktiverar åtkomst på administratörsnivå till Azure-filresurser för specifika kundanvändningsfall. Om du letar efter en mer allmän artikel om identitetsbaserad autentisering för slutanvändare kan du läsa Översikt över identitetsbaserade autentiseringsalternativ för Azure Files för SMB-åtkomst.

Begränsningar

Azure Files OAuth via REST stöder endast FileREST-data-API:er som stöder åtgärder på filer och kataloger. OAuth stöds inte på FilesREST-API:er för dataplanet som hanterar Filtjänst- och FileShare-resurser. Dessa hanterings-API:er anropas med hjälp av lagringskontonyckeln eller SAS-token och exponeras via dataplanet av äldre skäl. Vi rekommenderar att du använder kontrollplanets API:er (lagringsresursprovidern – Microsoft.Storage) som stöder OAuth för alla hanteringsaktiviteter som rör FileService- och FileShare-resurser.

Auktorisering av fildataåtgärder med Microsoft Entra-ID stöds endast för REST API-versionerna 2022-11-02 och senare. Se Versionshantering för Azure Storage.

Kundanvändningsfall

OAuth-autentisering och auktorisering med Azure Files via REST API-gränssnittet kan gynna kunder i följande scenarier.

Programutveckling och tjänstintegrering

OAuth-autentisering och -auktorisering gör det möjligt för utvecklare att skapa program som har åtkomst till REST-API:er för Azure Storage med hjälp av användar- eller programidentiteter från Microsoft Entra-ID.

Kunder och partner kan också göra det möjligt för tjänster från första part och tredje part att konfigurera nödvändig åtkomst på ett säkert och transparent sätt till ett kundlagringskonto.

DevOps-verktyg som Azure-portalen, PowerShell och CLI, AzCopy och Storage Explorer kan hantera data med hjälp av användarens identitet, vilket eliminerar behovet av att hantera eller distribuera lagringsåtkomstnycklar.

Hanterade identiteter

Kunder med program och hanterade identiteter som kräver åtkomst till filresursdata för säkerhetskopiering, återställning eller granskning kan dra nytta av OAuth-autentisering och auktorisering. Att framtvinga behörigheter på fil- och katalognivå för varje identitet ökar komplexiteten och kanske inte är kompatibel med vissa arbetsbelastningar. Kunder kanske till exempel vill auktorisera en tjänst för säkerhetskopieringslösning för att få åtkomst till Azure-filresurser med skrivskyddad åtkomst till alla filer utan hänsyn till filspecifika behörigheter.

Ersättning av lagringskontonyckel

Microsoft Entra-ID ger överlägsen säkerhet och användarvänlighet för åtkomst med delad nyckel. Du kan ersätta åtkomsten till lagringskontonyckeln med OAuth-autentisering och auktorisering för att få åtkomst till Azure-filresurser med läs-alla-/skrivbehörigheter. Den här metoden ger också bättre granskning och spårning av specifik användaråtkomst.

Behörigheter för privilegierad åtkomst och åtkomst för dataåtgärder

Om du vill använda Funktionen Azure Files OAuth över REST finns det ytterligare behörigheter som måste ingå i RBAC-rollen som tilldelats användaren, gruppen eller tjänstens huvudnamn. Två nya dataåtgärder introduceras som en del av den här funktionen:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Användare, grupper eller tjänstens huvudnamn som anropar REST-API:et med OAuth måste ha antingen readFileBackupSemantics åtgärden eller writeFileBackupSemantics tilldelad till rollen som tillåter dataåtkomst. Detta är ett krav för att använda den här funktionen. Mer information om de behörigheter som krävs för att anropa specifika filtjänståtgärder finns i Behörigheter för att anropa dataåtgärder.

Den här funktionen innehåller två nya inbyggda roller som innehåller dessa nya åtgärder.

Roll Dataåtgärder
Priviligierad läsare för lagringsfildata Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Priviligierad medhjälpare för lagringsfildata 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

De här nya rollerna liknar de befintliga inbyggda rollerna Storage File Data SMB Share Reader och Storage File Data SMB Share Elevated Contributor , men det finns vissa skillnader:

  • De nya rollerna innehåller de ytterligare dataåtgärder som krävs för OAuth-åtkomst.

  • När användaren, gruppen eller tjänstens huvudnamn som har tilldelats rollerna Storage File Data Privileged Reader eller Storage File Data Privileged Contributor anropar FilesREST Data API med OAuth, kommer användaren, gruppen eller tjänstens huvudnamn att ha:

    • Storage File Data Privileged Reader: Fullständig läsbehörighet för alla data i resurserna för alla konfigurerade lagringskonton oavsett vilka NTFS-behörigheter på fil-/katalognivå som har angetts.
    • Lagringsfildataprivilegierad deltagare: Fullständig läsning, skrivning, ändring av ACL:er, ta bort åtkomst på alla data i resurserna för alla konfigurerade lagringskonton oavsett vilka NTFS-behörigheter på fil-/katalognivå som har angetts.
  • Med dessa särskilda behörigheter och roller kringgår systemet alla behörigheter på fil-/katalognivå och tillåter åtkomst till filresursdata.

Med de nya rollerna och dataåtgärderna ger den här funktionen lagringskontoomfattande behörigheter som ersätter alla behörigheter för filer och mappar under alla filresurser i lagringskontot. De nya rollerna innehåller dock bara behörigheter för åtkomst till datatjänster. De innehåller inga behörigheter för åtkomst till hanteringstjänster för filresurser (åtgärder på filresurser). Om du vill använda den här funktionen kontrollerar du att du har behörighet att komma åt:

  • lagringskontot
  • hanteringstjänster för filresurser
  • datatjänster (data i filresursen)

Det finns många inbyggda roller som ger åtkomst till hanteringstjänster. Du kan också skapa anpassade roller med rätt behörigheter. Mer information om rollbaserad åtkomstkontroll finns i Azure RBAC. Mer information om hur inbyggda roller definieras finns i Förstå rolldefinitioner.

Viktigt!

Eventuella användningsfall med jokertecken som definierats för sökvägen Microsoft.Storage/storageAccounts/fileServices/* eller högre omfång ärver automatiskt ytterligare åtkomst och behörigheter som beviljas via den här nya dataåtgärden. För att förhindra oavsiktlig eller överprivilegierad åtkomst till Azure Files har vi implementerat ytterligare kontroller som kräver att användare och program uttryckligen anger sin avsikt att använda den ytterligare behörigheten. Dessutom rekommenderar vi starkt att kunderna granskar sina rbac-rolltilldelningar för användare och ersätter all användning av jokertecken med explicit behörighet för att säkerställa korrekt hantering av dataåtkomst.

Auktorisera åtkomst till fildata i programkod

Azure Identity-klientbiblioteket förenklar processen med att hämta en OAuth 2.0-åtkomsttoken för auktorisering med Microsoft Entra-ID via Azure SDK. De senaste versionerna av Azure Storage-klientbiblioteken för .NET, Java, Python, JavaScript och Go integreras med Azure Identity-biblioteken för vart och ett av dessa språk för att tillhandahålla ett enkelt och säkert sätt att skaffa en åtkomsttoken för auktorisering av begäranden från Azure-filtjänsten.

En fördel med Azure Identity-klientbiblioteket är att du kan använda samma kod för att hämta åtkomsttoken oavsett om ditt program körs i utvecklingsmiljön eller i Azure. Azure Identity-klientbiblioteket returnerar en åtkomsttoken för ett säkerhetsobjekt. När koden körs i Azure kan säkerhetsobjektet vara en hanterad identitet för Azure-resurser, ett huvudnamn för tjänsten eller en användare eller grupp. I utvecklingsmiljön tillhandahåller klientbiblioteket en åtkomsttoken för antingen en användare eller ett huvudnamn för tjänsten i testsyfte.

Åtkomsttoken som returneras av Azure Identity-klientbiblioteket är inkapslad i en tokenautentiseringsuppgift. Du kan sedan använda tokenautentiseringsuppgifterna för att hämta ett tjänstklientobjekt som ska användas för att utföra auktoriserade åtgärder mot Azure Files-tjänsten.

Här är några exempelkod:

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

Auktorisera åtkomst med hjälp av FileREST-dataplans-API

Du kan också auktorisera åtkomst till fildata med hjälp av Azure-portalen eller Azure PowerShell.

Azure-portalen kan använda antingen ditt Microsoft Entra-konto eller lagringskontots åtkomstnyckel för att komma åt fildata i ett Azure-lagringskonto. Vilket auktoriseringsschema som Används i Azure-portalen beror på vilka Azure-roller som har tilldelats dig.

När du försöker komma åt fildata kontrollerar Azure-portalen först om du har tilldelats en Azure-roll med Microsoft.Storage/storageAccounts/listkeys/action. Om du har tilldelats en roll med den här åtgärden använder Azure-portalen kontonyckeln för åtkomst till fildata via auktorisering av delad nyckel. Om du inte har tilldelats någon roll med den här åtgärden försöker Azure-portalen komma åt data med ditt Microsoft Entra-konto.

För att få åtkomst till fildata från Azure-portalen med ditt Microsoft Entra-konto behöver du behörighet att komma åt fildata och du behöver också behörighet att navigera genom lagringskontoresurserna i Azure-portalen. De inbyggda rollerna som tillhandahålls av Azure ger åtkomst till filresurser, men de ger inte behörighet till lagringskontoresurser. Av den anledningen kräver åtkomst till portalen också att du tilldelar en Roll för Azure Resource Manager (ARM), till exempel rollen Läsare , som är begränsad till lagringskontots nivå eller högre. Rollen Läsare ger de mest restriktiva behörigheterna, men alla ARM-roller som ger åtkomst till lagringskontohanteringsresurser är acceptabla.

I Azure-portalen kan du se vilket auktoriseringsschema som används när du navigerar till en container. Mer information om dataåtkomst i portalen finns i Välj hur du auktoriserar åtkomst till fildata i Azure-portalen.

Se även