Sdílet prostřednictvím


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

Aplikace nebo procesy spuštěné přímo na serveru 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 se dozvíte, jak může server používat spravovanou identitu přiřazenou systémem pro přístup ke službě Azure Key Vault. Key Vault umožňuje klientské aplikaci používat tajný kód pro přístup k prostředkům, které nejsou zabezpečené pomocí Microsoft Entra ID. Například certifikáty TLS/SSL používané vašimi webovými servery služby IIS se dají ukládat do služby Azure Key Vault a bezpečně nasazovat certifikáty na servery s Windows nebo Linuxem mimo Azure.

Přehled zabezpečení

Při onboardingu serveru k serverům s podporou Azure Arc dojde k několika akcím, které nakonfigurují pomocí spravované identity (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 je nakonfigurované s následujícími proměnnými na serveru s podporou 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 zadal tajný kód, který ověří, že má přístup k datům dostupným pouze uživatelům s vyššími oprávněními.

Požadavky

  • Znalost spravovaných identit.

  • Ve Windows musíte být členem místní skupiny Administrators 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 vyvolejte 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í:

Úspěšné načtení přístupového tokenu pomocí PowerShellu

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í:

Úspěšné načtení přístupového tokenu pomocí bashe.

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.