Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak povolit spravovanou identitu přiřazenou uživatelem v novém nebo stávajícím clusteru AKS, získat ID objektu této identity a přidat přiřazení role pro tuto spravovanou identitu.
Předpoklady
Přečtěte si Přehled spravovaných identit v Azure Kubernetes Service (AKS) seznamte se s různými typy spravovaných identit dostupných v AKS a zjistěte, jak je můžete použít k bezpečnému přístupu k prostředkům Azure.
Pomocí příkazu nastavte své předplatné jako aktuální aktivní předplatné
az account set.az account set --subscription <subscription-id>
Existující skupina prostředků Azure. Pokud ho nemáte, můžete ho vytvořit pomocí příkazu
az group create.az group create \ --name <resource-group-name> \ --location <location>
- Azure CLI nainstalovaná verze 2.23.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI. - Pokud chcete aktualizovat existující cluster tak, aby používal spravovanou identitu přiřazenou uživatelem , musíte mít nainstalovanou Azure CLI verzi 2.49.0 nebo novější.
- Terraform je nainstalovaný místně. Pokyny k instalaci najdete v tématu Instalace Terraformu.
Omezení
- Jakmile vytvoříte cluster se spravovanou identitou, nemůžete se přepnout zpět na použití služebního principálu.
- Přesun nebo migrace clusteru s podporou spravované identity do jiného tenanta se nepodporuje.
- Pokud je v clusteru povolena identita spravovaná podem Microsoft Entra (
aad-pod-identity), pody Node-Managed Identity (NMI) upraví iptables uzlů pro zachycení volání na koncový bod metadat instance Azure (IMDS). Tato konfigurace znamená, že NMI zachytí všechny požadavky na koncový bod IMDS, a to i v případě, že konkrétní pod nepoužíváaad-pod-identity.- Vlastní definici prostředku (CRD) AzurePodIdentityException můžete nakonfigurovat tak, aby určovala, že požadavky na koncový bod IMDS, které pocházejí z podů s popisky odpovídajícími těm, které jsou definovány v CRD, by se měly proxyovat bez jakéhokoli zpracování v NMI. Vylučte systémové pody s
kubernetes.azure.com/managedby: akspopiskem v prostoru názvů kube-system nakonfigurováním CRD AzurePodIdentityExceptionaad-pod-identity. Další informace najdete v tématu Použití Microsoft Entra spravovaných identit pomocí podu v Azure Kubernetes Service (AKS). - Pokud chcete nakonfigurovat výjimku, nainstalujte YAML mic-exception.
- Vlastní definici prostředku (CRD) AzurePodIdentityException můžete nakonfigurovat tak, aby určovala, že požadavky na koncový bod IMDS, které pocházejí z podů s popisky odpovídajícími těm, které jsou definovány v CRD, by se měly proxyovat bez jakéhokoli zpracování v NMI. Vylučte systémové pody s
- Oblasti USDOD střed, USDOD východ a USGov Iowa v cloudu Azure pro vládu USA nepodporují vytváření clusteru s uživatelsky přiřazenou spravovanou identitou.
Úvahy při aktualizaci clusteru
Při aktualizaci clusteru zvažte následující informace:
- Aktualizace funguje jenom v případě, že je k dispozici aktualizace pro virtuální pevný disk. Pokud používáte nejnovější virtuální pevný disk, musíte počkat, až bude k dispozici další virtuální pevný disk, abyste mohli provést aktualizaci.
- Azure CLI zajistí správné nastavení oprávnění doplňku po migraci. Pokud k provedení operace migrace nepoužíváte Azure CLI, musíte oprávnění identity doplňku spravovat sami. Příklad použití šablony Azure Resource Manager (ARM) najdete v tématu Assign Azure role pomocí šablon ARM.
- Pokud váš cluster používal
--attach-acrk načtení imagí z Azure Container Registry (ACR), musíte po aktualizaci clusteru spustit příkazaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>, aby nově vytvořený kubelet použitý pro spravovanou identitu získal oprávnění k vyžádání z ACR. Jinak po aktualizaci nebudete moct načíst z ACR.
Vytvořit uživatelsky přiřazenou spravovanou identitu
Pokud ještě nemáte prostředek spravované identity přiřazený uživatelem, vytvořte ho pomocí příkazu az identity create.
az identity create \
--name <identity-name> \
--resource-group <resource-group-name>
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>",
"location": "<location>",
"name": "<identity-name>",
"principalId": "<principal-id>",
"resourceGroup": "<resource-group-name>",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Získejte hlavní ID uživatelsky přiřazené spravované identity
Pomocí příkazu az identity show získejte hlavní ID spravované identity přiřazené uživatelem.
CLIENT_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query principalId \
--output tsv)
Získání ID prostředku spravované identity přiřazené uživatelem
Pomocí příkazu az identity show získejte ID prostředku uživatelsky přiřazené spravované identity.
RESOURCE_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query id \
--output tsv)
Povolit uživatelsky přiřazenou spravovanou identitu v novém clusteru AKS
Pomocí příkazu az aks create a parametru --assign-identity nastaveném na ID prostředku uživatelsky přiřazené spravované identity vytvořte cluster AKS.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--network-plugin azure \
--vnet-subnet-id <vnet-subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity $RESOURCE_ID \
--generate-ssh-keys
Aktualizace existujícího clusteru tak, aby používal spravovanou identitu přiřazenou uživatelem
Aktualizujte existující cluster tak, aby používal spravovanou identitu přiřazenou uživatelem pomocí az aks update příkazu a --assign-identity parametru nastaveného na ID prostředku spravované identity přiřazené uživatelem.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
Výstup úspěšné aktualizace clusteru pro použití spravované identity přiřazené uživatelem by měl vypadat podobně jako v následujícím příkladu výstupu:
...
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
...
Po aktualizaci clusteru tak, aby používal spravovanou identitu přiřazenou uživatelem místo instančního objektu, řídicí rovina a pody používají spravovanou identitu přiřazenou uživatelem k autorizaci při přístupu k jiným službám v Azure. Kubelet nadále používá služební principál, dokud neupgradujete fond uzlů. Upgrade fondu uzlů způsobí prostoje clusteru AKS, protože uzly ve fondech uzlů jsou izolovány, vyprázdněny a přeinstalovány. Pomocí příkazu na uzlech můžete aktualizovat spravovanou identitu přiřazenou uživatelem.
az aks nodepool upgrade \
--resource-group <resource-group-name> \
--cluster-name <aks-cluster-name> \
--name <node-pool-name> \
--node-image-only
Poznámka:
Migrace spravované identity pro řídicí rovinu ze systému přiřazeného uživateli nemá za následek žádný výpadek řídicí roviny a fondů agentů. Komponenty řídicí roviny pokračují ve staré identitě přiřazené systémem až po několik hodin až do další aktualizace tokenu.
Přiřazení role RBAC Azure spravované identitě přiřazené uživatelem
Přidejte přiřazení role pro uživatelskou spravovanou identitu pomocí příkazu az role assignment create. Následující příklad přiřadí roli Key Vault Secrets User spravované identitě přiřazené uživatelem, aby jí udělila oprávnění pro přístup k tajným kódům v key vault. Přiřazení role je vymezeno na prostředek úložiště klíčů.
az role assignment create \
--assignee <client-id> \
--role "Key Vault Secrets User" \
--scope "<key-vault-resource-id>"
Poznámka:
Proces zavedení oprávnění udělených spravované identitě clusteru může trvat až 60 minut.
Vytvoření konfiguračního souboru Terraformu
Konfigurační soubory Terraformu definují infrastrukturu, kterou Terraform vytváří a spravuje.
Vytvořte soubor s názvem
main.tfa přidejte následující kód, který definuje verzi Terraformu a určí zprostředkovatele Azure:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Přidáním následujícího kódu do
main.tfvytvořte skupinu prostředků Azure. Neváhejte dle potřeby změnit název a umístění skupiny prostředků.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Vytvoření clusteru AKS se spravovanou identitou přiřazenou uživatelem pomocí Terraformu
Přidáním následujícího kódu main.tf vytvořte spravovanou identitu přiřazenou uživatelem a cluster AKS, který identitu používá:
resource "azurerm_user_assigned_identity" "uai" {
name = "aks-user-identity"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_kubernetes_cluster" "user_assigned" {
name = "aks-user"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "aksuser"
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.uai.id]
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Přidání přiřazení role pro uživatelsky spravovanou identitu pomocí Terraform
Přidáním následujícího kódu main.tf vytvořte přiřazení role pro spravovanou identitu přiřazenou uživatelem. Tento příklad přiřadí roli Key Vault Secrets User spravované identitě přiřazené uživatelem, aby jí udělila oprávnění pro přístup k tajným kódům v key vault. Přiřazení role je vymezeno na prostředek úložiště klíčů.
resource "azurerm_role_assignment" "user_assigned_key_vault_secrets_user" {
scope = azurerm_resource_group.example.id
role_definition_name = "Key Vault Secrets User"
principal_id = azurerm_user_assigned_identity.uai.principal_id
}
Inicializujte Terraform
Inicializace Terraformu v adresáři obsahujícím váš main.tf soubor pomocí terraform init příkazu Tento příkaz stáhne poskytovatele Azure potřebného ke správě Azure prostředků pomocí Terraformu.
terraform init
Vytvoření plánu provádění Terraformu
Pomocí příkazu vytvořte plán provádění Terraformu terraform plan . Tento příkaz ukazuje prostředky, které Terraform vytvoří nebo upraví ve vašem předplatném Azure.
terraform plan
Aplikujte konfiguraci Terraformu
Po kontrole a potvrzení plánu provádění aplikujte konfiguraci Terraformu pomocí příkazu terraform apply. Tento příkaz vytvoří nebo upraví prostředky definované v souboru main.tf ve vašem předplatném Azure.
terraform apply
Ověření nasazení Terraformu
Po použití konfigurace Terraformu můžete nasazení ověřit pomocí příkazu [az aks show][az-aks-show] s parametrem --query pro filtrování výstupu a zobrazení informací o identitě. Například:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
Související obsah
Další informace o spravovaných identitách v AKS najdete v následujících článcích: