Ověřování na prostředcích Azure pomocí serverů s podporou Azure Arc

Aplikace nebo procesy spuštěné přímo na serverech s podporou Azure Arc můžou používat spravované identity pro přístup k dalším prostředkům Azure, které podporují ověřování založené na ID Microsoftu. Aplikace může získat přístupový token představující svou identitu, která je systémem přiřazená pro servery s podporou Azure Arc, a použít ho jako nosný token k ověření v jiné službě.

Podrobný popis spravovaných identit najdete v dokumentaci k přehledu spravované identity a seznamte se s rozdílem mezi identitami přiřazenými systémem a identitami přiřazenými uživatelem.

V tomto článku vám ukážeme, jak může server používat spravovanou identitu přiřazenou systémem pro přístup ke službě Azure Key Vault. Služba Key Vault slouží jako bootstrap, umožňuje klientské aplikaci používat tajný kód pro přístup k prostředkům, které nejsou zabezpečené pomocí ID Microsoft Entra. Například certifikáty TLS/SSL používané vašimi webovými servery služby IIS můžou být uložené ve službě Azure Key Vault a bezpečně nasazovat certifikáty na servery s Windows nebo Linuxem mimo Azure.

Přehled zabezpečení

Při připojování serveru k serverům s podporou Azure Arc se ke konfiguraci spravované identity provádí několik akcí, podobně jako u virtuálního počítače Azure:

  • Azure Resource Manager obdrží žádost o povolení spravované identity přiřazené systémem na serveru s podporou Azure Arc.

  • Azure Resource Manager vytvoří instanční objekt v MICROSOFT Entra ID pro identitu serveru. Instanční objekt se vytvoří v tenantovi Microsoft Entra, kterému předplatné důvěřuje.

  • Azure Resource Manager nakonfiguruje identitu na serveru aktualizací koncového bodu identity služby Azure Instance Metadata Service (IMDS) pro Windows nebo Linux pomocí ID a certifikátu instančního objektu klienta. Koncový bod je koncový bod REST přístupný jenom ze serveru pomocí dobře známé nesměrovatelné IP adresy. Tato služba poskytuje podmnožinu informací o metadatech o serveru s podporou Služby Azure Arc, který pomáhá spravovat a konfigurovat.

Prostředí serveru s podporou spravované identity se nakonfiguruje s následujícími proměnnými na serveru s podporou Windows Azure Arc:

  • IMDS_ENDPOINT: IP adresa http://localhost:40342 koncového bodu IMDS pro servery s podporou Azure Arc.

  • IDENTITY_ENDPOINT: koncový bod localhost odpovídající spravované identitě http://localhost:40342/metadata/identity/oauth2/tokenslužby .

Váš kód, který běží na serveru, může požádat o token z koncového bodu služby Azure Instance Metadata, který je přístupný jenom na serveru.

Proměnná systémového prostředí IDENTITY_ENDPOINT slouží ke zjišťování koncového bodu identity aplikacemi. Aplikace by se měly pokusit načíst IDENTITY_ENDPOINT a IMDS_ENDPOINT hodnoty a použít je. Aplikace s libovolnou úrovní přístupu můžou provádět požadavky na koncové body. Odpovědi na metadata se zpracovávají jako normální a předávají se všem procesům na počítači. Když se však vytvoří požadavek, který by zpřístupnil token, vyžadujeme, aby klient poskytl tajný kód, aby potvrdil, že má přístup k datům dostupným pouze uživatelům s vyššími oprávněními.

Předpoklady

  • Znalost spravovaných identit.

  • Ve Windows musíte být členem místní skupiny Správa istrators nebo skupiny Aplikace rozšíření hybridního agenta.

  • V Linuxu musíte být členem skupiny himds .

  • Server připojený k serverům s podporou Azure Arc a zaregistrovaný ho.

  • Jste členem skupiny Vlastník v předplatném nebo skupině prostředků, abyste mohli provést požadované kroky pro vytvoření prostředku a správu rolí.

  • Azure Key Vault pro ukládání a načítání přihlašovacích údajů a přiřazování přístupu k identitě Azure Arc ke službě KeyVault.

Získání přístupového tokenu pomocí rozhraní REST API

Metoda získání a použití spravované identity přiřazené systémem k ověření pomocí prostředků Azure je podobná tomu, jak se provádí s virtuálním počítačem Azure.

Pro Windows server s podporou Azure Arc pomocí PowerShellu vyvoláte webový požadavek, který získá token z místního hostitele v konkrétním portu. Zadejte požadavek pomocí IP adresy nebo proměnné prostředí 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
}

Následující odpověď je příklad, který se vrátí:

A successful retrieval of the access token using PowerShell.

Pro linuxový server s podporou Azure Arc pomocí Bash vyvoláte webový požadavek, který získá token z místního hostitele v konkrétním portu. Zadejte následující požadavek pomocí IP adresy nebo proměnné prostředí IDENTITY_ENDPOINT. K dokončení tohoto kroku potřebujete klienta 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

Následující odpověď je příklad, který se vrátí:

A successful retrieval of the access token using Bash.

Odpověď zahrnuje přístupový token, který potřebujete pro přístup k libovolnému prostředku v Azure. Pokud chcete dokončit konfiguraci pro ověření ve službě Azure Key Vault, přečtěte si téma Přístup ke službě Key Vault s Windows nebo Access Key Vault s Linuxem.

Další kroky

  • Další informace o službě Azure Key Vault najdete v přehledu služby Key Vault.

  • Zjistěte, jak přiřadit přístup ke spravované identitě k prostředku pomocí PowerShellu nebo pomocí Azure CLI.