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 Identitetsbaserad autentisering i Azure Files för SMB-åtkomst.

Gäller för

Hanteringsmodell Faktureringsmodell Medieklass Redundans Små och medelstora företag (SMB) NFS (Network File System)
Microsoft.Storage, lagringstjänster Provisionerad v2 HDD (standard) Lokalt (LRS) Ja Nej
Microsoft.Storage, lagringstjänster Provisionerad v2 HDD (standard) Zon (ZRS) Ja Nej
Microsoft.Storage, lagringstjänster Provisionerad v2 HDD (standard) Geo (GRS) Ja Nej
Microsoft.Storage, lagringstjänster Provisionerad v2 HDD (standard) GeoZone (GZRS) Ja Nej
Microsoft.Storage, lagringstjänster Tillhandahållen v1 SSD (hög kvalitet) Lokalt (LRS) Ja Ja
Microsoft.Storage, lagringstjänster Tillhandahållen v1 SSD (hög kvalitet) Zon (ZRS) Ja Ja
Microsoft.Storage, lagringstjänster Betala efter hand HDD (standard) Lokalt (LRS) Ja Nej
Microsoft.Storage, lagringstjänster Betala efter hand HDD (standard) Zon (ZRS) Ja Nej
Microsoft.Storage, lagringstjänster Betala efter hand HDD (standard) Geo (GRS) Ja Nej
Microsoft.Storage, lagringstjänster Betala efter hand HDD (standard) GeoZone (GZRS) Ja Nej

Begränsningar

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

Azure Files OAuth via REST-stöd för AZURE Files REST-dataplans-API:er som hanterar FileService- och FileShare-resurser är tillgängliga med REST API-versionerna 2024-11-04 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.

Privilegierad åtkomst och åtkomsträttigheter 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 antingen ha readFileBackupSemantics eller writeFileBackupSemantics åtgärd tilldelad 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.

Befattning Dataåtgärder
Privilegierad läsare för lagringsfildata Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Storage File Data Privilegierad Bidragsgivare 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 Storage File Data SMB Share Reader och Storage File Data SMB Share Elevated Contributor inbyggda roller, men det finns vissa skillnader:

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

  • När en användare, grupp eller tjänstens huvudidentitet har tilldelats rollerna Storage File Data Privileged Reader eller Storage File Data Privileged Contributor och anropar FilesREST Data API med OAuth, kommer användaren, gruppen eller tjänstens huvudidentitet 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.
    • Storage File Data Privileged Contributor: Fullständig läsning, skrivning, ändring av ACL:er, ta bort åtkomst för alla data i delningarna för alla konfigurerade lagringskonton, oavsett vilka NTFS-behörigheter på fil-/mappnivå 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 fildelningar (åtgärder på fildelningar). Om du vill använda den här funktionen kontrollerar du att du har behörighet att komma åt:

  • lagringskontot
  • tjänster för hantering av fildelning
  • datatjänster (data i fildelningen)

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.

Tänk på att för resurstypen för fildelning används det motsvarande RBAC-omfång i kontrollplanet (hanteringsåtgärder), men används shares i dataplanet (dataåtgärder). Om du försöker använda ett resurs-ID för en filresurs som innehåller shares i RBAC-omfång eller dataåtgärdssträngar, kommer det inte att fungera. Du måste använda fileshares i omfånget för RBAC-tilldelningar, till exempel:

  • /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/fileServices/default/fileshares/<share-name>

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.

Följande kodexempel visar hur du auktoriserar ett klientobjekt med hjälp av Microsoft Entra-ID och utför åtgärder på katalog- och filnivå. Det här exemplet förutsätter att fildelningen redan finns.

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 entraEndpoint = "";
            string accountUri = "https://<storage-account-name>.file.core.windows.net/";
            string shareName = "test-share";
            string directoryName = "test-directory";
            string fileName = "test-file";  

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

            // Set client options
            ShareClientOptions clientOptions = new ShareClientOptions();
            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();
        }
    }
}

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

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

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. Därför kräver åtkomst till portalen också att du tilldelar en Roll för Azure Resource Manager (ARM), till exempel rollen Reader, som är begränsad till lagringskontots nivå eller högre. Rollen Reader ger de mest restriktiva behörigheterna, men alla ARM-roller som ger åtkomst till lagringskontohanteringsresurser är acceptabla.

Azure-portalen anger 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 vill auktorisera åtkomst till fildata i Azure-portalen.

Se även