Anteckning
Å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.
Applikationer eller processer som körs direkt på en server med Azure Arc-aktivering kan använda hanterade identiteter för att få åtkomst till andra Azure-resurser som stödjer autentisering baserad på Microsoft Entra ID. Ett program kan hämta en åtkomsttoken som representerar dess identitet, som är systemtilldelad för Azure Arc-aktiverade servrar, och använda den som en "ägartoken" för att autentisera sig till en annan tjänst.
Se översiktsdokumentationen för hanterad identitet för en detaljerad beskrivning av hanterade identiteter och förstå skillnaden mellan systemtilldelade och användartilldelade identiteter.
I den här artikeln får du lära dig hur en server kan använda en systemtilldelad hanterad identitet för att få åtkomst till Azure Key Vault. Key Vault gör det möjligt för din klientapplikation att använda en hemlighet för att få åtkomst till resurser som inte är säkrade av Microsoft Entra ID. Till exempel kan TLS/SSL-certifikat som används av dina IIS-webbservrar lagras i Azure Key Vault och distribuera certifikaten säkert till Windows- eller Linux-servrar utanför Azure.
Säkerhetsöversikt
Flera åtgärder utförs när du ansluter din server till Azure Arc-aktiverade servrar för att konfigurera med en hanterad identitet (liknande vad som händer för en Azure VM).
Azure Resource Manager tar emot en begäran om att aktivera den systemtilldelade hanterade identiteten på den Azure Arc-aktiverade servern.
Azure Resource Manager skapar en tjänstekonto i Microsoft Entra ID för serverns identitet. Tjänstens huvudanvändare skapas i den Microsoft Entra-hyresgäst som är betrodd av prenumerationen.
Azure Resource Manager konfigurerar identiteten på servern genom att uppdatera IMDS-identitetsslutpunkten (Azure Instance Metadata Service) för Windows eller Linux med klient-ID och certifikat för tjänstens huvudnamn. Slutpunkten är en REST-slutpunkt som endast är tillgänglig från servern med hjälp av en välkänd, icke-dirigerbar IP-adress. Denna tjänst tillhandahåller en delmängd av metadata-information om den Azure Arc-aktiverade servern för att underlätta hantering och konfiguration.
Miljön för en hanterad identitetsaktiverad server konfigureras med följande variabler på en Azure Arc-aktiverad server:
IMDS_ENDPOINT: IMDS-slutpunktens IP-adress
http://localhost:40342
för Azure Arc-aktiverade servrar.IDENTITY_ENDPOINT: den localhost-slutpunkt som motsvarar tjänstens hanterade identitet
http://localhost:40342/metadata/identity/oauth2/token
.
Din kod som körs på servern kan begära en token från Azure Instance Metadata-tjänstens slutpunkt, som endast är tillgänglig från servern.
Systemmiljövariabeln IDENTITY_ENDPOINT används för att identifiera identitetsslutpunkten av program. Program bör försöka hämta IDENTITY_ENDPOINT och IMDS_ENDPOINT värden och använda dem. Applikationer med vilken som helst åtkomstnivå är tillåtna att göra förfrågningar till ändpunkterna. Metadata svar behandlas som vanligt och ges till vilken process som helst på maskinen. Men när en begäran görs som skulle exponera en token kräver vi att klienten tillhandahåller en hemlighet för att intyga att de bara kan komma åt data som är tillgängliga för användare med högre privilegier.
Förutsättningar
Förståelse för hanterade identiteter.
I Windows måste du vara medlem i den lokala gruppen Administratörer eller gruppen Program för hybridagenttillägg .
I Linux måste du vara medlem i himds-gruppen .
En server som anslutits och registrerats med Azure Arc-aktiverade servrar.
Du är medlem i gruppen Ägare i prenumerationen eller resursgruppen (för att kunna utföra nödvändiga steg för resursskapande och rollhantering).
En Azure Key Vault för att lagra och hämta dina referenser, samt tilldela Azure Arc-identitetsåtkomst till KeyVault.
- Om du inte har skapat ett Key Vault kan du läsa Skapa nyckelvalv.
- Information om hur du konfigurerar åtkomst med den hanterade identitet som används av servern finns i Bevilja åtkomst för Linux eller Bevilja åtkomst för Windows. För steg nummer 5 ska du ange namnet på den Azure Arc-aktiverade servern. För att slutföra detta med PowerShell, se Tilldela en åtkomstprincip med hjälp av PowerShell.
Att erhålla en åtkomsttoken med REST API
Metoden för att skaffa och använda en systemtilldelad hanterad identitet för att autentisera med Azure-resurser liknar hur det görs med en Azure VM.
För en Azure Arc-aktiverad Windows-server, använd PowerShell för att anropa webbfrågan och hämta token från localhost på den specifika porten. Ange begäran med hjälp av IP-adressen eller miljövariabeln IDENTITY_ENDPOINT.
$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
$wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
if ($wwwAuthHeader -match "Basic realm=.+")
{
$secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
}
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
$token = (ConvertFrom-Json -InputObject $response.Content).access_token
Write-Host "Access token: " $token
}
Följande svar är ett exempel som returneras:
För en Linux-server som är aktiverad för Azure Arc, använder du Bash för att anropa webbfrågan för att få token från localhost på den specifika porten. Ange följande begäran med hjälp av IP-adressen eller miljövariabeln IDENTITY_ENDPOINT. För att slutföra detta steg behöver du en SSH-klient.
CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi
Följande svar är ett exempel som returneras:
Anmärkning
Exemplet ovan är för att begära en åtkomsttoken för användning med ARM REST-API:er när resursvariabeln är inställd på https://management.azure.com
. Om du behöver en åtkomsttoken för en annan Azure-tjänst ersätter du resursvariabeln i skriptet med rätt resursvärde. Information om hur du autentiserar med Azure Storage finns i Använda OAuth-token med Azure Storage. Information om hur du slutför konfigurationen för att autentisera till Azure Key Vault finns i Access Key Vault with Windows or Access Key Vault with Linux (Få åtkomst till Key Vault med Windows eller Access Key Vault med Linux).
Nästa steg
Mer information om Azure Key Vault finns i Översikt över Key Vault.
Lär dig hur du tilldelar en hanterad identitet åtkomst till en resurs med hjälp av PowerShell eller med hjälp av Azure CLI.