Uwierzytelnianie w zasobach platformy Azure przy użyciu serwerów z obsługą usługi Azure Arc
Aplikacje lub procesy uruchomione bezpośrednio na serwerze z obsługą usługi Azure Arc mogą używać tożsamości zarządzanych do uzyskiwania dostępu do innych zasobów platformy Azure, które obsługują uwierzytelnianie oparte na identyfikatorach Entra firmy Microsoft. Aplikacja może uzyskać token dostępu reprezentujący swoją tożsamość, która jest przypisana przez system dla serwerów z obsługą usługi Azure Arc, i używać go jako tokenu "elementu nośnego", aby uwierzytelnić się w innej usłudze.
Zapoznaj się z dokumentacją przeglądu tożsamości zarządzanej, aby uzyskać szczegółowy opis tożsamości zarządzanych i zrozumieć rozróżnienie między tożsamościami przypisanymi przez system i tożsamościami przypisanymi przez użytkownika.
W tym artykule dowiesz się, jak serwer może uzyskiwać dostęp do usługi Azure Key Vault przy użyciu przypisanej przez system tożsamości zarządzanej. Usługa Key Vault umożliwia aplikacji klienckiej używanie wpisu tajnego do uzyskiwania dostępu do zasobów, które nie są zabezpieczone przez identyfikator Entra firmy Microsoft. Na przykład certyfikaty TLS/SSL używane przez serwery internetowe usług IIS mogą być przechowywane w usłudze Azure Key Vault i bezpiecznie wdrażać certyfikaty na serwerach z systemem Windows lub Linux spoza platformy Azure.
Omówienie zabezpieczeń
Kilka akcji występuje podczas dołączania serwera do serwerów z obsługą usługi Azure Arc w celu skonfigurowania przy użyciu tożsamości zarządzanej (podobnie jak w przypadku maszyny wirtualnej platformy Azure):
Usługa Azure Resource Manager otrzymuje żądanie włączenia tożsamości zarządzanej przypisanej przez system na serwerze z obsługą usługi Azure Arc.
Usługa Azure Resource Manager tworzy jednostkę usługi w identyfikatorze Entra firmy Microsoft dla tożsamości serwera. Jednostka usługi jest tworzona w dzierżawie firmy Microsoft Entra, która jest zaufana przez subskrypcję.
Usługa Azure Resource Manager konfiguruje tożsamość na serwerze, aktualizując punkt końcowy tożsamości usługi Azure Instance Metadata Service (IMDS) dla systemu Windows lub Linux przy użyciu identyfikatora klienta i certyfikatu jednostki usługi. Punkt końcowy jest punktem końcowym REST dostępnym tylko z poziomu serwera przy użyciu dobrze znanego, niezwiązanego z routingiem adresu IP. Ta usługa udostępnia podzestaw informacji o metadanych dotyczących serwera z obsługą usługi Azure Arc, aby ułatwić zarządzanie nim i konfigurowanie go.
Środowisko serwera z obsługą tożsamości zarządzanej jest konfigurowane przy użyciu następujących zmiennych na serwerze z obsługą usługi Azure Arc:
IMDS_ENDPOINT: adres
http://localhost:40342
IP punktu końcowego IMDS dla serwerów z obsługą usługi Azure Arc.IDENTITY_ENDPOINT: punkt końcowy hosta lokalnego odpowiadający tożsamości
http://localhost:40342/metadata/identity/oauth2/token
zarządzanej usługi .
Kod uruchomiony na serwerze może zażądać tokenu z punktu końcowego usługi Azure Instance Metadata, dostępnego tylko z poziomu serwera.
Zmienna środowiskowa systemu IDENTITY_ENDPOINT służy do odnajdywania punktu końcowego tożsamości przez aplikacje. Aplikacje powinny próbować pobierać IDENTITY_ENDPOINT i IMDS_ENDPOINT wartości i używać ich. Aplikacje z dowolnym poziomem dostępu mogą wysyłać żądania do punktów końcowych. Odpowiedzi na metadane są obsługiwane normalnie i przekazywane do dowolnego procesu na maszynie. Jednak gdy zostanie złożone żądanie, które uwidoczniłoby token, wymagamy od klienta podania wpisu tajnego, aby potwierdzić, że są w stanie uzyskać dostęp do danych dostępnych tylko dla użytkowników z wyższymi uprawnieniami.
Wymagania wstępne
Znajomość tożsamości zarządzanych.
W systemie Windows musisz być członkiem lokalnej grupy Administratorzy lub Grupy aplikacji rozszerzenia agenta hybrydowego.
W systemie Linux musisz być członkiem grupy himds .
Serwer połączony i zarejestrowany na serwerach z obsługą usługi Azure Arc.
Jesteś członkiem grupy Właściciel w subskrypcji lub grupie zasobów (w celu wykonania wymaganych kroków tworzenia zasobów i zarządzania rolami).
Usługa Azure Key Vault do przechowywania i pobierania poświadczeń oraz przypisywania dostępu tożsamości usługi Azure Arc do usługi KeyVault.
- Jeśli nie masz utworzonego magazynu kluczy, zobacz Tworzenie usługi Key Vault.
- Aby skonfigurować dostęp przez tożsamość zarządzaną używaną przez serwer, zobacz Udzielanie dostępu dla systemu Linux lub Udzielanie dostępu dla systemu Windows. W kroku 5 wprowadź nazwę serwera z obsługą usługi Azure Arc. Aby ukończyć tę akcję przy użyciu programu PowerShell, zobacz Przypisywanie zasad dostępu przy użyciu programu PowerShell.
Uzyskiwanie tokenu dostępu przy użyciu interfejsu API REST
Metoda uzyskiwania i używania przypisanej przez system tożsamości zarządzanej do uwierzytelniania za pomocą zasobów platformy Azure jest podobna do sposobu jej wykonywania z maszyną wirtualną platformy Azure.
W przypadku serwera z systemem Windows z obsługą usługi Azure Arc przy użyciu programu PowerShell wywołaj żądanie internetowe, aby pobrać token z hosta lokalnego na określonym porcie. Określ żądanie przy użyciu adresu IP lub zmiennej środowiskowej 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
}
Następująca odpowiedź to przykład zwracany:
W przypadku serwera z systemem Linux z obsługą usługi Azure Arc przy użyciu powłoki Bash należy wywołać żądanie internetowe, aby uzyskać token z hosta lokalnego na określonym porcie. Określ następujące żądanie przy użyciu adresu IP lub zmiennej środowiskowej IDENTITY_ENDPOINT. Do wykonania tego kroku potrzebny jest klient SSH.
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
Następująca odpowiedź to przykład zwracany:
Odpowiedź zawiera token dostępu potrzebny do uzyskania dostępu do dowolnego zasobu na platformie Azure. Aby ukończyć konfigurację uwierzytelniania w usłudze Azure Key Vault, zobacz Access Key Vault with Windows or Access Key Vault with Linux (Uzyskiwanie dostępu do usługi Key Vault w systemie Windows lub Uzyskiwanie dostępu do usługi Key Vault w systemie Linux).
Następne kroki
Aby dowiedzieć się więcej na temat usługi Azure Key Vault, zobacz Omówienie usługi Key Vault.
Dowiedz się, jak przypisać dostęp tożsamości zarządzanej do zasobu przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure.