Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID

Azure Storage stöder användning av Microsoft Entra-ID för att auktorisera begäranden till blobdata. Med Microsoft Entra-ID kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt, som kan vara en användare, grupp eller programtjänsthuvudnamn. Säkerhetsobjektet autentiseras av Microsoft Entra-ID för att returnera en OAuth 2.0-token. Token kan sedan användas för att auktorisera en begäran mot Blob-tjänsten.

Auktorisering med Microsoft Entra-ID är tillgängligt för alla allmänna konton och Blob Storage-konton i alla offentliga regioner och nationella moln. Endast lagringskonton som skapats med Azure Resource Manager-distributionsmodellen stöder Microsoft Entra-auktorisering.

Viktigt!

För optimal säkerhet rekommenderar Microsoft att du använder Microsoft Entra-ID med hanterade identiteter för att auktorisera begäranden mot blob-, kö- och tabelldata när det är möjligt. Auktorisering med Microsoft Entra-ID och hanterade identiteter ger överlägsen säkerhet och enkel användning via auktorisering av delad nyckel. Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser. Ett exempel på hur du aktiverar och använder en hanterad identitet för ett .NET-program finns i Autentisera Azure-värdbaserade appar till Azure-resurser med .NET.

För resurser som finns utanför Azure, till exempel lokala program, kan du använda hanterade identiteter via Azure Arc. Appar som körs på Azure Arc-aktiverade servrar kan till exempel använda hanterade identiteter för att ansluta till Azure-tjänster. Mer information finns i Autentisera mot Azure-resurser med Azure Arc-aktiverade servrar.

För scenarier där signaturer för delad åtkomst (SAS) används rekommenderar Microsoft att du använder en SAS för användardelegering. En SAS för användardelegering skyddas med Microsoft Entra-autentiseringsuppgifter i stället för kontonyckeln. Mer information om signaturer för delad åtkomst finns i Bevilja begränsad åtkomst till data med signaturer för delad åtkomst. Ett exempel på hur du skapar och använder en SAS för användardelegering med .NET finns i Skapa en SAS för användardelegering för en blob med .NET.

Översikt över Microsoft Entra-ID för blobar

När ett säkerhetsobjekt (en användare, grupp eller ett program) försöker komma åt en blobresurs måste begäran auktoriseras, såvida den inte är en blob som är tillgänglig för anonym åtkomst. Med Microsoft Entra-ID är åtkomst till en resurs en tvåstegsprocess:

  1. Först autentiseras säkerhetsobjektets identitet och en OAuth 2.0-token returneras.

    Autentiseringssteget kräver att ett program begär en OAuth 2.0-åtkomsttoken vid körning. Om ett program körs inifrån en Azure-entitet, till exempel en virtuell Azure-dator, en VM-skalningsuppsättning eller en Azure Functions-app, kan det använda en hanterad identitet för att komma åt blobdata.

  2. Därefter skickas token som en del av en begäran till Blob-tjänsten och används av tjänsten för att auktorisera åtkomst till den angivna resursen.

    Auktoriseringssteget kräver att en eller flera Azure RBAC-roller tilldelas till säkerhetsobjektet som gör begäran. Mer information finns i Tilldela Azure-roller för åtkomsträttigheter.

Använda ett Microsoft Entra-konto med portalen, PowerShell eller Azure CLI

Mer information om hur du kommer åt data i Azure-portalen med ett Microsoft Entra-konto finns i Dataåtkomst från Azure-portalen. Information om hur du anropar Azure PowerShell- eller Azure CLI-kommandon med ett Microsoft Entra-konto finns i Dataåtkomst från PowerShell eller Azure CLI.

Använda Microsoft Entra-ID för att auktorisera åtkomst i programkod

Om du vill auktorisera åtkomst till Azure Storage med Microsoft Entra-ID kan du använda något av följande klientbibliotek för att hämta en OAuth 2.0-token:

Azure Identity-klientbibliotek

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 Azure Storage-begäranden.

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 Storage. Ett enkelt sätt att hämta åtkomsttoken och tokenautentiseringsuppgifterna är att använda klassen DefaultAzureCredential som tillhandahålls av Azure Identity-klientbiblioteket. DefaultAzureCredential försöker hämta tokenautentiseringsuppgifterna genom att sekventiellt prova flera olika typer av autentiseringsuppgifter. DefaultAzureCredential fungerar både i utvecklingsmiljön och i Azure.

Följande tabell pekar på ytterligare information för att auktorisera åtkomst till data i olika scenarier:

Språk .NET Java JavaScript Python Go
Översikt över autentisering med Microsoft Entra-ID Autentisera .NET-program med Azure-tjänster Azure-autentisering med Java och Azure Identity Autentisera JavaScript-appar till Azure med Hjälp av Azure SDK Autentisera Python-appar till Azure med hjälp av Azure SDK
Autentisering med utvecklartjänstens huvudnamn Autentisera .NET-appar till Azure-tjänster under lokal utveckling med hjälp av tjänstens huvudnamn Azure-autentisering med tjänstens huvudnamn Auth JS-appar till Azure-tjänster med tjänstens huvudnamn Autentisera Python-appar till Azure-tjänster under lokal utveckling med hjälp av tjänstens huvudnamn Azure SDK för Go-autentisering med tjänstens huvudnamn
Autentisering med hjälp av utvecklar- eller användarkonton Autentisera .NET-appar till Azure-tjänster under lokal utveckling med hjälp av utvecklarkonton Azure-autentisering med användarautentiseringsuppgifter Auth JS-appar till Azure-tjänster med utvecklingskonton Autentisera Python-appar till Azure-tjänster under lokal utveckling med hjälp av utvecklarkonton Azure-autentisering med Azure SDK för Go
Autentisering från Azure-värdbaserade appar Autentisera Azure-värdbaserade appar till Azure-resurser med Azure SDK för .NET Autentisera Azure-värdbaserade Java-program Autentisera Azure-värdbaserade JavaScript-appar till Azure-resurser med Azure SDK för JavaScript Autentisera Azure-värdbaserade appar till Azure-resurser med Azure SDK för Python Autentisering med Azure SDK för Go med hjälp av en hanterad identitet
Autentisering från lokala appar Autentisera till Azure-resurser från .NET-appar som finns lokalt Autentisera lokala JavaScript-appar till Azure-resurser Autentisera till Azure-resurser från Python-appar som finns lokalt
Översikt över identitetsklientbibliotek Azure Identity-klientbibliotek för .NET Azure Identity-klientbibliotek för Java Azure Identity-klientbibliotek för JavaScript Azure Identity-klientbibliotek för Python Azure Identity-klientbibliotek för Go

Microsoft Authentication Library (MSAL)

Microsoft rekommenderar att du använder Azure Identity-klientbiblioteket när det är möjligt, men MSAL-biblioteket kan vara lämpligt att använda i vissa avancerade scenarier. Mer information finns i Läs mer om MSAL.

När du använder MSAL för att hämta en OAuth-token för åtkomst till Azure Storage måste du ange ett Microsoft Entra-resurs-ID. Microsoft Entra-resurs-ID anger vilken målgrupp som en token som utfärdas kan användas för att ge åtkomst till en Azure-resurs. När det gäller Azure Storage kan resurs-ID:t vara specifikt för ett enda lagringskonto, eller så kan det gälla för alla lagringskonton.

När du anger ett resurs-ID som är specifikt för ett enda lagringskonto och en tjänst används resurs-ID:t för att hämta en token för att endast auktorisera begäranden till det angivna kontot och tjänsten. I följande tabell visas det värde som ska användas för resurs-ID:t baserat på molnet du arbetar med. Ersätt <account-name> med namnet på ditt lagringskonto.

Moln Resurs-ID
Azure Global https://<account-name>.blob.core.windows.net
Azure Government https://<account-name>.blob.core.usgovcloudapi.net
Azure Kina 21Vianet https://<account-name>.blob.core.chinacloudapi.cn

Du kan också ange ett resurs-ID som gäller för alla lagringskonton, enligt följande tabell. Det här resurs-ID:t är detsamma för alla offentliga och nationella moln och används för att hämta en token för att auktorisera begäranden till ett lagringskonto.

Moln Resurs-ID
Azure Global
Azure Government
Azure Kina 21Vianet
https://storage.azure.com/

Tilldela Azure-roller för åtkomsträttigheter

Microsoft Entra auktoriserar åtkomsträttigheter till skyddade resurser via Azure RBAC. Azure Storage definierar en uppsättning inbyggda RBAC-roller som omfattar vanliga uppsättningar med behörigheter som används för åtkomst till blobdata. Du kan också definiera anpassade roller för åtkomst till blobdata. Mer information om hur du tilldelar Azure-roller för blobåtkomst finns i Tilldela en Azure-roll för åtkomst till blobdata.

Ett Microsoft Entra-säkerhetsobjekt kan vara en användare, en grupp, ett huvudnamn för programtjänsten eller en hanterad identitet för Azure-resurser. De RBAC-roller som tilldelas ett säkerhetsobjekt avgör vilka behörigheter som huvudkontot har för den angivna resursen. Mer information om hur du tilldelar Azure-roller för blobåtkomst finns i Tilldela en Azure-roll för åtkomst till blobdata

I vissa fall kan du behöva aktivera detaljerad åtkomst till blobresurser eller förenkla behörigheter när du har ett stort antal rolltilldelningar för en lagringsresurs. Du kan använda azure-attributbaserad åtkomstkontroll (Azure ABAC) för att konfigurera villkor för rolltilldelningar. Du kan använda villkor med en anpassad roll eller välja inbyggda roller. Mer information om hur du konfigurerar villkor för Azure-lagringsresurser med ABAC finns i Auktorisera åtkomst till blobar med hjälp av villkor för Azure-rolltilldelning (förhandsversion). Mer information om villkor som stöds för blobdataåtgärder finns i Åtgärder och attribut för Villkor för Tilldelning av Azure-roller i Azure Storage (förhandsversion).

Kommentar

När du skapar ett Azure Storage-konto tilldelas du inte automatiskt behörighet att komma åt data via Microsoft Entra-ID. Du måste uttryckligen tilldela dig själv en Azure-roll för åtkomst till Blob Storage. Du kan tilldela den på nivån för din prenumeration, resursgrupp, lagringskonto eller container.

Resursomfång

Innan du tilldelar en Azure RBAC-roll till ett säkerhetsobjekt ska du bestämma vilken omfattning av åtkomst som säkerhetsobjektet ska ha. Bästa praxis kräver att det alltid är bäst att endast bevilja minsta möjliga omfång. Azure RBAC-roller som definierats i ett bredare omfång ärvs av resurserna under dem.

Du kan begränsa åtkomsten till Azure Blob-resurser på följande nivåer, från och med det smalaste omfånget:

  • En enskild container. I det här omfånget gäller en rolltilldelning för alla blobar i containern och för containeregenskaperna och metadata.
  • Lagringskontot. I det här omfånget gäller en rolltilldelning för alla containrar och deras blobar.
  • Resursgruppen. I det här omfånget gäller en rolltilldelning för alla containrar i alla lagringskonton i resursgruppen.
  • Prenumerationen. I det här omfånget gäller en rolltilldelning för alla containrar i alla lagringskonton i alla resursgrupper i prenumerationen.
  • En hanteringsgrupp. I det här omfånget gäller en rolltilldelning för alla containrar i alla lagringskonton i alla resursgrupper i alla prenumerationer i hanteringsgruppen.

Mer information om omfånget för Azure RBAC-rolltilldelningar finns i Förstå omfånget för Azure RBAC.

Inbyggda Azure-roller för blobar

Azure RBAC innehåller flera inbyggda roller för att auktorisera åtkomst till blobdata med hjälp av Microsoft Entra ID och OAuth. Några exempel på roller som ger behörighet till dataresurser i Azure Storage är:

Information om hur du tilldelar en inbyggd Azure-roll till ett säkerhetsobjekt finns i Tilldela en Azure-roll för åtkomst till blobdata. Information om hur du listar Azure RBAC-roller och deras behörigheter finns i Lista Azure-rolldefinitioner.

Mer information om hur inbyggda roller definieras för Azure Storage finns i Förstå rolldefinitioner. Information om hur du skapar anpassade Azure-roller finns i Anpassade Azure-roller.

Endast roller som uttryckligen definierats för dataåtkomst tillåter ett säkerhetsobjekt att komma åt blobdata. Inbyggda roller som Ägare, Deltagare och Lagringskontodeltagare tillåter ett säkerhetsobjekt att hantera ett lagringskonto, men ger inte åtkomst till blobdata i det kontot via Microsoft Entra-ID. Men om en roll innehåller Microsoft.Storage/storageAccounts/listKeys/action kan en användare som rollen har tilldelats komma åt data i lagringskontot via auktorisering av delad nyckel med kontoåtkomstnycklarna. Mer information finns i Välj hur du auktoriserar åtkomst till blobdata i Azure-portalen.

Detaljerad information om inbyggda Azure-roller för Azure Storage för både datatjänster och hanteringstjänsten finns i avsnittet Lagring i inbyggda Azure-roller för Azure RBAC. Information om de olika typer av roller som ger behörigheter i Azure finns dessutom i Azure-roller, Microsoft Entra-roller och klassiska administratörsroller för prenumerationer.

Viktigt!

Det kan ta upp till 30 minuter att sprida Azure-rolltilldelningar.

Åtkomstbehörigheter för dataåtgärder

Mer information om de behörigheter som krävs för att anropa specifika Blob Service-åtgärder finns i Behörigheter för att anropa dataåtgärder.

Få åtkomst till data med ett Microsoft Entra-konto

Åtkomst till blobdata via Azure-portalen, PowerShell eller Azure CLI kan auktoriseras antingen med hjälp av användarens Microsoft Entra-konto eller med hjälp av kontoåtkomstnycklarna (auktorisering av delad nyckel).

Varning

Auktorisering med delad nyckel rekommenderas inte eftersom det kan vara mindre säkert. För optimal säkerhet inaktiverar du auktorisering via delad nyckel för ditt lagringskonto enligt beskrivningen i Förhindra auktorisering av delad nyckel för ett Azure Storage-konto.

Användning av åtkomstnycklar och anslutningssträng bör begränsas till inledande konceptbevisappar eller utvecklingsprototyper som inte har åtkomst till produktion eller känsliga data. Annars bör de tokenbaserade autentiseringsklasserna som är tillgängliga i Azure SDK alltid föredras när du autentiserar till Azure-resurser.

Microsoft rekommenderar att klienter använder antingen Microsoft Entra-ID eller en signatur för delad åtkomst (SAS) för att ge åtkomst till data i Azure Storage. Mer information finns i Auktorisera åtgärder för dataåtkomst.

Dataåtkomst från Azure-portalen

Azure-portalen kan använda antingen ditt Microsoft Entra-konto eller kontoåtkomstnycklarna för att komma åt blobdata 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 blobdata 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 blobdata 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 blobdata från Azure-portalen med ditt Microsoft Entra-konto behöver du behörighet att komma åt blobdata och du behöver även behörigheter för att navigera genom lagringskontoresurserna i Azure-portalen. De inbyggda rollerna i Azure Storage ger åtkomst till blobresurser, men ger inte behörighet till lagringskontoresurser. Det betyder att åtkomst till portalen även kräver tilldelningen av en Azure Resource Manager-roll, t.ex. rollen Läsare, på lagringskontonivå eller högre. Rollen Läsare beviljar den mest restriktiva behörigheten, men en annan Azure Resource Manager-roll som ger åtkomst till resurser för hantering av lagringskonton kan också användas. Mer information om hur du tilldelar behörigheter till användare för dataåtkomst i Azure-portalen med ett Microsoft Entra-konto finns i Tilldela en Azure-roll för åtkomst till blobdata.

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älja hur du vill auktorisera åtkomst till blobdata i Azure-portalen.

Dataåtkomst från PowerShell eller Azure CLI

Azure CLI och PowerShell stöder inloggning med Microsoft Entra-autentiseringsuppgifter. När du har loggat in körs sessionen under dessa autentiseringsuppgifter. Mer information finns i någon av följande artiklar:

Funktionsstöd

Stöd för den här funktionen kan påverkas genom att aktivera Data Lake Storage Gen2, NFS 3.0-protokoll (Network File System) eller SSH File Transfer Protocol (SFTP). Om du har aktiverat någon av dessa funktioner kan du läsa Stöd för Blob Storage-funktioner i Azure Storage-konton för att utvärdera stödet för den här funktionen.

Auktorisering av blobdataåtgärder med Microsoft Entra-ID stöds endast för REST API-versionerna 2017-11-09 och senare. Mer information finns i Versionshantering för Azure Storage-tjänsterna.

Nästa steg