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/token
služ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.
- Pokud nemáte vytvořenou službu Key Vault, přečtěte si téma Vytvoření služby Key Vault.
- Pokud chcete nakonfigurovat přístup spravovanou identitou používanou serverem, přečtěte si téma Udělení přístupu pro Linux nebo Udělení přístupu pro Windows. V kroku 5 zadáte název serveru s podporou Azure Arc. Pokud to chcete dokončit pomocí PowerShellu, přečtěte si téma Přiřazení zásad přístupu pomocí PowerShellu.
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í:
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í:
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.