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 systémem v novém nebo existujícím clusteru AKS, jak získat ID objektu zabezpečení této spravované identity přiřazené systémem a jak přidat přiřazení role pro tuto spravovanou identitu.
Předpoklady
Přečtěte si přehled spravovaných identit ve službě Azure Kubernetes Service (AKS) a 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 verze 2.23.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI. - Pokud chcete aktualizovat existující cluster tak, aby používal spravovanou identitu přiřazenou systémem, musíte mít nainstalované Azure CLI verze 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 s identitou spravovanou uzly (NMI) upravují iptables uzlů tak, aby zachytily 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í identit spravovaných podem Microsoftu ve službě Azure Kubernetes Service (AKS). - Pokud chcete nakonfigurovat výjimku, nainstalujte mic-exception YAML.
- 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
- AKS nepodporuje použití spravované identity přiřazené systémem při použití vlastní privátní zóny DNS.
Ú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 zajišťuje 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 zpracovat sami. Příklad použití šablony Azure Resource Manageru (ARM) najdete v tématu Přiřazení rolí Azure pomocí šablon ARM.
- Pokud váš cluster používal
--attach-acrk načítání imagí ze služby 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 stažení z ACR. Jinak po aktualizaci nebudete moct načíst z ACR.
Povolení systémem přiřazené spravované identity v novém clusteru AKS
Spravovaná identita přiřazená systémem je ve výchozím nastavení povolená při vytváření nového clusteru AKS.
Vytvořte cluster AKS pomocí příkazu az aks create.
az aks create \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--generate-ssh-keys
Aktualizace existujícího clusteru tak, aby používal spravovanou identitu přiřazenou systémem
Aktualizujte pomocí příkazu s parametrem az aks update existující cluster AKS ze služebního principála --enable-managed-identity na spravovanou identitu přiřazenou systémem.
az aks update \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--enable-managed-identity
Po aktualizaci clusteru tak, aby používal spravovanou identitu přiřazenou systémem místo instančního objektu, řídicí rovina a pody používají spravovanou identitu přiřazenou systémem k autorizaci při přístupu k jiným službám v Azure. Kubelet nadále používá service principal, dokud neprovedete upgrade fondu agentů. K aktualizaci na spravovanou identitu můžete na uzlech použít příkaz az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-only. Upgrade fondu uzlů způsobí prostoje clusteru AKS, protože uzly ve fondech uzlů jsou izolovány, vyprázdněny a přeinstalovány.
Získat hlavní ID spravované identity přiřazené systémem
Získejte hlavní ID pro spravovanou identitu přiřazenou systémem clusteru pomocí příkazu az aks show.
CLIENT_ID=$(az aks show \
--name <aks-cluster-name> \
--resource-group <resource-group-name> \
--query identity.principalId \
--output tsv)
Přidání přiřazení role pro spravovanou identitu přiřazenou systémem
Poznámka:
V případě virtuální sítě, připojeného disku Azure, statické IP adresy nebo směrovací tabulky mimo výchozí skupinu prostředků pracovního uzlu musíte přiřadit Network Contributor roli pro vlastní skupinu prostředků.
Pomocí příkazu az role assignment create přiřaďte Azure roli RBAC spravované identitě přiřazené systémem. Následující příklad přiřadí roli Přispěvatel sítě spravované identitě přiřazené systémem. Přiřazení role je omezené na skupinu prostředků, která obsahuje VNet.
az role assignment create \
--assignee <client-id> \
--role "Network Contributor" \
--scope <custom-resource-group-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
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 systémem pomocí Terraformu
Přidejte následující kód na main.tf pro vytvoření clusteru AKS se systémem přiřazenou spravovanou identitou:
resource "azurerm_kubernetes_cluster" "system_assigned" {
name = "aks-system"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "akssystem"
identity {
type = "SystemAssigned"
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Přidání přiřazení role pro identitu spravovanou systémem pomocí Terraformu
Přidáním následujícího kódu main.tf vytvořte přiřazení role pro spravovanou identitu přiřazenou systémem. Tento příklad přiřadí roli Přispěvatel sítě spravované identitě přiřazené systémem. Přiřazení role je omezené na skupinu prostředků, která obsahuje VNet.
resource "azurerm_role_assignment" "system_assigned_network_contributor" {
scope = azurerm_resource_group.example.id
role_definition_name = "Network Contributor"
principal_id = azurerm_kubernetes_cluster.system_assigned.identity[0].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ě prostředků Azure 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é ve vašem main.tf souboru ve vašem předplatném Azure.
terraform apply
Ověření nasazení Terraformu
Po použití konfigurace Terraformu můžete nasazení ověřit pomocí az aks show příkazu s parametrem --query k 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: