Välj och konfigurera en lämplig metod för åtkomst till Azure Queues

Slutförd

Azure Storage stöder användning av Microsoft Entra-ID för att auktorisera begäranden till ködata. 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 kötjänsten.

Auktorisering med Microsoft Entra ID ger överlägsen säkerhet och enkel användning via auktorisering av delad nyckel. Microsoft rekommenderar att du använder Microsoft Entra-auktorisering med dina köprogram när det är möjligt för att garantera åtkomst med minsta möjliga behörighet.

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

Översikt över Microsoft Entra-ID för köer

När ett säkerhetsobjekt (en användare, grupp eller ett program) försöker komma åt en köresurs måste begäran auktoriseras, såvida det inte är en kö 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 ködata.
  2. Därefter skickas token som en del av en begäran till kö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.

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-klientbiblioteket rekommenderas för de flesta utvecklingsscenarier.
  • Microsoft Authentication Library (MSAL) kan vara lämpligt för vissa avancerade scenarier.

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 Kör
Ö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 Ej tillämpligt
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 Ej tillämpligt Autentisera lokala JavaScript-appar till Azure-resurser Autentisera till Azure-resurser från Python-appar som finns lokalt Ej tillämpligt
Ö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.

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>.queue.core.windows.net
Azure Government https://<account-name>.queue.core.usgovcloudapi.net
Azure Kina 21Vianet https://<account-name>.queue.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 att komma åt ködata. Du kan också definiera anpassade roller för åtkomst till ködata.

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 till ett säkerhetsobjekt avgör vilka behörigheter som huvudkontot ska ha.

I vissa fall kan du behöva aktivera detaljerad åtkomst till köresurser 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 Storage-resurser med ABAC finns i Auktorisera åtkomst till köer med hjälp av villkor för Azure-rolltilldelning.

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 Queue Storage. Du kan tilldela den på prenumerationsnivå, resursgrupp, lagringskonto eller kö.

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-köresurser på följande nivåer, från och med det smalaste omfånget:

  • En enskild kö. I det här omfånget gäller en rolltilldelning för meddelanden i kön och för köegenskaper och metadata.
  • Lagringskontot. I det här omfånget gäller en rolltilldelning för alla köer och deras meddelanden.
  • Resursgruppen. I det här omfånget gäller en rolltilldelning för alla köer i alla lagringskonton i resursgruppen.
  • Prenumerationen. I det här omfånget gäller en rolltilldelning för alla köer i alla lagringskonton i alla resursgrupper i prenumerationen.
  • En hanteringsgrupp. I det här omfånget gäller en rolltilldelning för alla köer i alla lagringskonton i alla resursgrupper i alla prenumerationer i hanteringsgruppen.

Inbyggda Azure-roller för köer

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

  • Storage Queue Data-deltagare: Används för att bevilja läs-/skrivbehörigheter till Azure-köer.
  • Storage Queue Data-läsare: Används för att bevilja skrivskyddade behörigheter till Azure-köer.
  • Storage Queue Data-meddelandeprocessor: Används för att ge behörighet att granska, hämta och ta bort meddelanden i Azure Storage-köer.
  • Storage Queue Data-meddelandeavsändare: Används för att ge tilläggsbehörighet för meddelanden i Azure Storage-köer.

Endast roller som uttryckligen definierats för dataåtkomst tillåter ett säkerhetsobjekt att komma åt ködata. Inbyggda roller som Ägare, Deltagare och Lagringskontodeltagare tillåter ett säkerhetsobjekt att hantera ett lagringskonto, men ger inte åtkomst till ködata 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.

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

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

Åtkomst till ködata 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).

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.

Dataåtkomst från Azure-portalen

Azure-portalen kan använda antingen ditt Microsoft Entra-konto eller kontoåtkomstnycklarna för att komma åt ködata 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 ködata 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 ködata 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 ködata från Azure-portalen med ditt Microsoft Entra-konto behöver du behörighet att komma åt ködata och du behöver också behörigheter för att navigera genom lagringskontoresurserna i Azure-portalen. De inbyggda rollerna som tillhandahålls av Azure Storage ger åtkomst till köresurser, men de 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.

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: