Authentifizieren bei Azure-Ressourcen mit Azure Arc-fähigen Servern
Anwendungen oder Prozesse, die direkt auf einem Azure Arc-fähigen Server ausgeführt werden, können verwaltete Identitäten für den Zugriff auf andere Azure-Ressourcen verwenden, die die Microsoft Entra ID-basierte Authentifizierung unterstützen. Eine Anwendung kann ein Zugriffstoken abrufen, das ihre Identität darstellt, die für Azure Arc-fähige Server vom System zugewiesen ist, und es als Bearertoken verwenden, um sich bei einem anderen Dienst zu authentifizieren.
In der Übersichtsdokumentation zur verwalteten Identität finden Sie eine ausführliche Beschreibung der verwalteten Identitäten und die Unterscheidung zwischen system- und benutzer zugewiesenen Identitäten.
In diesem Artikel erfahren Sie, wie ein Server mithilfe einer systemseitig zugewiesenen verwalteten Identität auf Azure Key Vault zugreifen kann. Key Vault ermöglicht es Ihrer Clientanwendung, mithilfe eines Geheimnisses auf Ressourcen zuzugreifen, die nicht durch Microsoft Entra ID geschützt sind. Beispielsweise können TLS/SSL-Zertifikate, die von Ihren IIS-Webservern verwendet werden, in Azure Key Vault gespeichert werden, um sie dann sicher auf Windows- oder Linux-Servern außerhalb von Azure bereitzustellen.
Sicherheitsübersicht
Beim Onboarding Ihres Servers auf Azure Arc-fähigen Servern werden mehrere Aktionen ausgeführt, um ähnlich wie bei einer Azure-VM die Verwendung einer verwalteten Identität zu konfigurieren:
Azure Resource Manager empfängt eine Anforderung zum Aktivieren der systemseitig zugewiesenen verwalteten Identität auf dem Azure Arc aktivierten Server.
Azure Resource Manager erstellt für die Identität des Servers einen Dienstprinzipal in Microsoft Entra ID. Der Dienstprinzipal wird in dem Microsoft Entra-Mandanten erstellt, der von diesem Abonnement als vertrauenswürdig eingestuft wird.
Azure Resource Manager aktualisiert den Identitätsendpunkt von Azure Instance Metadata Service (IMDS) für Windows oder Linux mit der Client-ID und dem Zertifikat des Dienstprinzipals, um die Identität auf dem Server zu konfigurieren. Der Endpunkt ist ein REST-Endpunkt, auf den nur mit einer bekannten, nicht routingfähigen IP-Adresse vom Server aus zugegriffen werden kann. Dieser Dienst stellt eine Teilmenge der Metadateninformationen zum Azure Arc-fähigen Server bereit, um ihn zu verwalten und zu konfigurieren.
Die Umgebung eines Servers mit aktivierter verwalteter Identität wird mit den folgenden Variablen auf einem Azure Arc-fähigen Server konfiguriert:
IMDS_ENDPOINT:Die IP-Adresse des
http://localhost:40342
IMDS-Endpunkts für Azure Arc aktivierte Server.IDENTITY_ENDPOINT: der Localhost-Endpunkt, der der verwalteten Identität des Diensts (
http://localhost:40342/metadata/identity/oauth2/token
) entspricht.
Der auf dem Server ausgeführte Code kann ein Token vom Azure IMDS-Endpunkt (Instance Metadata Service) anfordern, auf das nur vom Server aus zugegriffen werden kann.
Anwendungen ermitteln mithilfe der Systemumgebungsvariable IDENTITY_ENDPOINT den Identitätsendpunkt. Die Anwendungen sollten versuchen, die Werte IDENTITY_ENDPOINT und IMDS_ENDPOINT abzurufen, und diese dann verwenden. Anwendungen aller Zugriffsebenen können Anforderungen an diese Endpunkte übermitteln. Metadatenantworten werden normal verarbeitet und an jeden Prozess auf dem Computer übergeben. Wenn jedoch eine Anforderung übermittelt wird, die ein Token verfügbar macht, muss der Client ein Geheimnis bereitstellt, um zu bestätigen, dass er Zugriff auf Daten hat, die nur für Benutzende mit höheren Berechtigungen verfügbar sind.
Voraussetzungen
Kenntnisse im Bereich verwaltete Identitäten.
Auf Windows müssen Sie Mitglied der lokalen Gruppe Administratoren oder der Gruppe Hybrid Agent-Erweiterungsanwendungen sein.
Auf Linux müssen Sie Mitglied der Gruppe "himds" sein.
Ein Server, der mit Azure Arc-fähigen Servern verbunden und registriert ist.
Sie müssen Mitglied der Gruppe Besitzer im Abonnement oder der Ressourcengruppe sein (um die erforderlichen Schritte zur Ressourcenerstellung und Rollenverwaltung durchführen zu können).
Ein Azure Key Vault zum Speichern und Abrufen Ihrer Anmeldeinformationen und zuweisen des Azure Arc Identitätszugriffs auf keyVault.
- Wenn Sie noch keinen Schlüsseltresor erstellt haben, lesen Sie unter Erstellen eines Schlüsseltresors nach.
- Informationen zum Konfigurieren des Zugriffs durch die verwaltete Identität, die vom Server verwendet wird, finden Sie unter Gewähren des Zugriffs für Linux oder Gewähren des Zugriffs für Windows. Für Schritt 5 geben Sie den Namen des Azure Arc-fähigen Servers ein. Informationen zum Durchführen dieses Vorgangs mithilfe von PowerShell finden Sie unter Zuweisen einer Zugriffsrichtlinie mithilfe von PowerShell.
Abrufen eines Zugriffstokens mithilfe der REST-API
Die Methode zum Abrufen und Verwenden einer systemseitig zugewiesenen verwalteten Identität für die Authentifizierung bei Azure-Ressourcen ähnelt der Vorgehensweise bei einer Azure-VM.
Für einen Azure Arc-fähigen Windows-Server rufen Sie mithilfe von PowerShell die Webanforderung auf, um das Token vom lokalen Host am spezifischen Port abzurufen. Geben Sie die Anforderung mithilfe der IP-Adresse oder der Umgebungsvariable IDENTITY_ENDPOINT an.
$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
}
Die folgende Antwort ist ein Beispiel für die Rückgabe:
Für einen Azure Arc-fähigen Linux-Server rufen Sie mit Hilfe von Bash die Webanforderung auf, um das Token vom lokalen Host im spezifischen Port abzurufen. Geben Sie die folgende Anforderung mithilfe der IP-Adresse oder der Umgebungsvariable IDENTITY_ENDPOINT an. Zum Abschließen dieses Schritts benötigen Sie einen SSH-Client.
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
Die folgende Antwort ist ein Beispiel für die Rückgabe:
Die Antwort enthält das Zugriffstoken, das Sie für den Zugriff auf Ressourcen in Azure benötigen. Informationen zum Vervollständigen der Konfiguration für die Authentifizierung bei Azure Key Vault finden Sie unter Zugreifen auf Key Vault unter Windows oder Zugreifen auf Key Vault unter Linux.
Nächste Schritte
Informieren Sie sich unter Übersicht über Key Vault über Azure Key Vault.
Erfahren Sie, wie Sie den Zugriff mit einer verwalteten Identität auf eine Ressource mithilfe von PowerShell oder der Azure-Befehlszeilenschnittstelle zuweisen.