Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver Spring Cloud Azure autentiseringsmetoder och hjälper dig att välja rätt typ av autentiseringsuppgifter för att skydda åtkomsten till Azure resurser.
Autentisering och auktorisering med Microsoft Entra-ID
Med hjälp av Microsoft Entra ID kan du använda Azure rollbaserad åtkomstkontroll (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt, som kan vara en användare eller ett huvudnamn för programtjänsten. När ett säkerhetsobjekt (en användare eller ett program) försöker komma åt en Azure resurs, till exempel en Event Hubs-resurs, måste begäran auktoriseras. Genom att använda Microsoft Entra ID är åtkomst till en resurs en tvåstegsprocess:
- Autentisera först säkerhetsobjektets identitet och returnera en OAuth 2.0-token.
- Skicka sedan token som en del av en begäran till Azure-tjänsten för att auktorisera åtkomst till den angivna resursen.
Typer av autentiseringsuppgifter
Med Spring Cloud Azure kan du konfigurera olika typer av autentiseringsuppgifter för autentisering, inklusive DefaultAzureCredential, WorkloadIdentityCredential, ManagedIdentityCredentialClientSecretCredential, och AzureCliCredentialmycket mer.
StandardAzureCredential
DefaultAzureCredential är lämpligt för de flesta scenarier där programmet är avsett att köras i Azure Cloud, eftersom det kombinerar följande autentiseringsuppgifter:
- Autentiseringsuppgifter som ofta används för att autentisera när de distribueras.
- Autentiseringsuppgifter som används för att autentisera i en utvecklingsmiljö.
Not
DefaultAzureCredentialförenklar komma igång med Azure SDKs genom att hantera vanliga scenarier med rimliga standardbeteenden. Om du vill ha mer kontroll eller om standardinställningarna inte stöder ditt scenario använder du andra typer av autentiseringsuppgifter.
DefaultAzureCredential försöker autentisera via följande mekanismer i ordning:
- Miljö –
DefaultAzureCredentialförsöker läsa kontoinformation som anges via miljövariabler och använda den för att autentisera. - Hanterad identitet – Om programmet distribueras till en Azure värd med hanterad identitet aktiverad försöker
DefaultAzureCredentialdu autentisera med hjälp av det kontot. - Arbetsbelastningsidentitet – om programmet distribueras till en virtuell dator (VM)
DefaultAzureCredentialförsöker autentisera med det kontot. - Cache för delad token – Om du autentiserade via Visual Studio
DefaultAzureCredentialförsöker du autentisera med det kontot. - IntelliJ – Om du autentiserade via Azure Toolkit for IntelliJ försöker
DefaultAzureCredentialdu autentisera med hjälp av det kontot. - Azure CLI – Om du autentiserade ett konto via kommandot
DefaultAzureCredentialAzure CLIaz loginförsöker du autentisera med det kontot. - Azure PowerShell – Om du autentiserade via Azure PowerShell
DefaultAzureCredentialförsöker du autentisera med det kontot. - Azure Developer CLI – Om du autentiserade via Azure Developer CLI försöker
DefaultAzureCredentialdu autentisera med hjälp av det kontot.
Dricks
Kontrollera att säkerhetsobjektet har tillräcklig behörighet för att få åtkomst till Azure-resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
Not
Sedan Spring Cloud Azure AutoConfigure 4.1.0 måste du registrera en ThreadPoolTaskExecutor böna med namnet springCloudAzureCredentialTaskExecutor för att hantera alla trådar som skapats av Azure Identity. Namnet på varje tråd som hanteras av den här trådpoolen är prefixet med az-identity-. Denna ThreadPoolTaskExecutor böna är oberoende av den Executor böna som tillhandahålls av Spring Boot.
Hanterade identiteter
En vanlig utmaning är hanteringen av hemligheter och autentiseringsuppgifter som används för att skydda kommunikationen mellan olika komponenter som utgör en lösning. Hanterade identiteter eliminerar behovet av att hantera autentiseringsuppgifter. Hanterade identiteter tillhandahåller en identitet som program kan använda när de ansluter till resurser som stöder Microsoft Entra-autentisering. Program kan använda den hanterade identiteten för att hämta Microsoft Entra token. Ett program kan till exempel använda en hanterad identitet för att komma åt resurser som Azure Key Vault där du kan lagra autentiseringsuppgifter på ett säkert sätt eller för att få åtkomst till lagringskonton.
Använd hanterad identitet i stället för att använda reťazec pripojenia eller nyckel i ditt program eftersom det är säkrare och sparar problem med att hantera hemligheter och autentiseringsuppgifter. I det här fallet DefaultAzureCredential fungerar bättre scenariot med att utveckla lokalt genom att använda kontoinformation som lagras lokalt och sedan distribuera programmet till Azure Cloud och använda hanterad identitet.
Hanterade identitetstyper
Det finns två typer av hanterade identiteter:
- Systemtilldelade – Med vissa Azure-tjänster kan du aktivera en hanterad identitet direkt på en tjänstinstans. När du aktiverar en systemtilldelad hanterad identitet skapar du en identitet i Microsoft Entra som är bunden till livscykeln för den tjänstinstansen. När du tar bort resursen tar Azure automatiskt bort identiteten åt dig. Avsiktligt kan endast den Azure-resursen använda den här identiteten för att begära token från Microsoft Entra-ID.
- Användartilldelad – Du kan också skapa en hanterad identitet som en fristående Azure resurs. Du kan skapa en användartilldelad hanterad identitet och tilldela den till en eller flera instanser av en Azure-tjänst. Med användartilldelade hanterade identiteter hanterar du identiteten separat från de resurser som använder den.
Not
När du använder en användartilldelad hanterad identitet anger du klient-ID:t via spring.cloud.azure.credential.client-id eller spring.cloud.azure.<azure-service>.credential.client-id. Du behöver inte konfiguration av autentiseringsuppgifter om du använder en systemtilldelad hanterad identitet.
Dricks
Kontrollera att säkerhetsobjektet har tillräcklig behörighet för att få åtkomst till den Azure resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
Mer information om hanterad identitet finns i Vad är hanterade identiteter för Azure-resurser?.
Andra typer av autentiseringsuppgifter
Om du vill ha mer kontroll än vad som tillhandahålls av , eller om standardinställningarna inte stöder ditt scenario, använder du andra typer av DefaultAzureCredentialautentiseringsuppgifter.
Autentisera med Microsoft Entra-ID
Om du vill ansluta program till resurser som stöder Microsoft Entra autentisering anger du följande konfigurationer med prefixet spring.cloud.azure.credential eller spring.cloud.azure.<azure-service>.credential.
I följande tabell visas autentiseringsegenskaper:
| Egenskap | Beskrivning |
|---|---|
client-id |
Det klient-ID som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. |
client-secret |
Klienthemligheten som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. |
client-certificate-path |
Sökväg till en PEM-certifikatfil som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. |
client-certificate-password |
Lösenordet för certifikatfilen. |
username |
Användarnamnet som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
password |
Lösenordet som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
managed-identity-enabled |
Om du vill aktivera hanterad identitet. |
token-credential-bean-name |
Bönnamnet av typen TokenCredential att använda när du utför autentisering med Azure. |
Dricks
En lista över alla Spring Cloud Azure-konfigurationsegenskaper finns i Azure-konfigurationsegenskaper för Spring Cloud.
Programmet söker på flera platser för att hitta en tillgänglig autentiseringsuppgift. Varje Azure SDKs klientbyggarefabrik använder först en anpassad böna av typen TokenCredential om du anger egenskapen token-credential-bean-nameoch återgår till att använda DefaultAzureCredential om du inte konfigurerar egenskaper för autentiseringsuppgifter.
Autentisera med en anpassad TokenCredential-böna
I följande exempel visas hur du definierar en anpassad TokenCredential böna för att utföra autentiseringen:
@Bean
TokenCredential myTokenCredential() {
// Your concrete TokenCredential instance
}
spring.cloud.azure:
credential:
token-credential-bean-name: myTokenCredential
Autentisera med en systemtilldelad hanterad identitet
I följande exempel visas hur du autentiserar med hjälp av en systemtilldelad hanterad identitet:
spring.cloud.azure:
credential:
managed-identity-enabled: true
Autentisera med hjälp av en användartilldelad hanterad identitet
I följande exempel visas hur du autentiserar med hjälp av en användartilldelad hanterad identitet:
spring.cloud.azure:
credential:
managed-identity-enabled: true
client-id: ${AZURE_CLIENT_ID}
Autentisera med tjänstens huvudnamn med klienthemlighet
I följande exempel visas hur du autentiserar med hjälp av ett huvudnamn för tjänsten med en klienthemlighet:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Autentisera med tjänstens huvudnamn med klientcertifikat
I följande exempel visas hur du autentiserar med hjälp av ett huvudnamn för tjänsten med ett PFX-klientcertifikat:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}
profile:
tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
I följande exempel visas hur du autentiserar med hjälp av ett huvudnamn för tjänsten med ett PEM-klientcertifikat:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
profile:
tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Autentisera med hjälp av en användarautentiseringsuppgift
I följande exempel visas hur du autentiserar med hjälp av en användarautentiseringsuppgift:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
username: ${AZURE_USER_USERNAME}
password: ${AZURE_USER_PASSWORD}
Autentisera en tjänst med hjälp av en annan autentiseringsuppgift än andra
I följande exempel visas hur du autentiserar med Key Vault med hjälp av ett annat huvudnamn för tjänsten. Det här exemplet konfigurerar programmet med två autentiseringsuppgifter: en systemtilldelad hanterad identitet och ett huvudnamn för tjänsten. Key Vault Secret-klienten använder tjänstens huvudnamn, men alla andra komponenter använder hanterad identitet i stället.
spring.cloud.azure:
credential:
managed-identity-enabled: true
keyvault.secret:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Auktorisera åtkomst med Microsoft Entra-ID
Auktoriseringssteget kräver tilldelning av en eller flera Azure roller till säkerhetsobjektet. De roller som du tilldelar ett säkerhetsobjekt avgör vilka behörigheter som huvudkontot har.
Dricks
En lista över alla inbyggda Azure-roller finns i inbyggda Azure-roller.
I följande tabell visas de inbyggda Azure-rollerna för att auktorisera åtkomst till Azure-tjänster som stöds i Spring Cloud Azure:
| Roll | Beskrivning |
|---|---|
| Ägare av Конфиг� | Ger fullständig åtkomst till App Configuration-data. |
| Läsare av Конфиг� | Tillåter läsåtkomst till App Configuration-data. |
| Azure Event Hubs-dataägare | Ger fullständig åtkomst till Azure Event Hubs-resurser. |
| Azure Event Hubs-datamottagare | Tillåter åtkomst till Azure Event Hubs-resurser. |
| Avsändare av Azure Event Hubs-data | Tillåter sändningsåtkomst till Azure Event Hubs-resurser. |
| Azure Service Bus-dataägare | Ger fullständig åtkomst till Azure Service Bus-resurser. |
| Azure Service Bus- | Tillåter åtkomst till Azure Service Bus-resurser. |
| Azure Service Bus-datasändare | Tillåter att du skickar åtkomst till Azure Service Bus-resurser. |
| Storage Blob Data-ägare | Ger fullständig åtkomst till Azure Storage-blobcontainrar och data, inklusive tilldelning av POSIX-åtkomstkontroll. |
| Läsare av lagringsblobdata | Läsa och lista Azure Storage-containrar och blobar. |
| Dataläsare för lagringskö | Läsa och lista Azure Storage-köer och kömeddelanden. |
| Redis Cache-deltagare | Hantera Redis-cacheminnen. |
Not
När du använder Spring Cloud Azure Resource Manager för att hämta anslutningssträngarna för Event Hubs, Service Bus och Storage Queue, eller egenskaperna för Cache for Redis, tilldelar du Azure inbyggd roll Contributor. Azure Cache for Redis är speciellt och du kan även tilldela Redis Cache Contributor roll för att hämta Redis-egenskaperna.
Not
En Key Vault åtkomstprincip avgör om ett visst säkerhetsobjekt, nämligen en användare, ett program eller en användargrupp, kan utföra olika åtgärder på Key Vault hemligheter, nycklar och certifikat. Du kan tilldela åtkomstprinciper med hjälp av Azure-portalen, Azure CLI eller Azure PowerShell. Mer information finns i Tilldela en key vault-åtkomstprincip.
Viktig
Azure Cosmos DB exponerar två inbyggda rolldefinitioner: Cosmos DB Built-in Data Reader och Cosmos DB Built-in Data Contributor. Stöd för rollhantering i Azure-portalen är dock inte tillgängligt ännu. Mer information om behörighetsmodellen, rolldefinitioner och rolltilldelning finns i Konfigurera rollbaserad åtkomstkontroll med Microsoft Entra-ID för ditt Azure Cosmos DB-konto.
Autentisera med hjälp av SAS-token
Du kan också konfigurera tjänster för autentisering med hjälp av signatur för delad åtkomst (SAS). Använd egenskapen spring.cloud.azure.<azure-service>.sas-token för att konfigurera den här autentiseringen. Använd till exempel spring.cloud.azure.storage.blob.sas-token för att autentisera till Storage Blob-tjänsten.
Autentisera med hjälp av anslutningssträngar
Vissa Azure tjänster stöder anslutningssträngar för att tillhandahålla anslutningsinformation och autentiseringsuppgifter. Om du vill ansluta till dessa Azure tjänster med hjälp av anslutningssträngar konfigurerar du spring.cloud.azure.<azure-service>.connection-string. Konfigurera till exempel spring.cloud.azure.eventhubs.connection-string för att ansluta till Event Hubs-tjänsten.