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.
Funkci identity úloh můžete povolit v clusteru Kubernetes s podporou Azure Arc pomocí Azure CLI. Tento proces se řídí těmito základními kroky:
- Povolte funkci identity úloh v novém nebo existujícím clusteru Kubernetes s podporou Arc.
- Vytvořte spravovanou identitu (nebo registraci aplikace) a účet služby Kubernetes.
- Nakonfigurujte spravovanou identitu pro federaci tokenů.
- Nakonfigurujte poznámky účtu služby a popisky podů aplikací tak, aby používaly identitu úloh.
- Nakonfigurujte nastavení identity úloh v clusteru Kubernetes.
- Zakažte identitu úloh v clusteru.
Přehled této funkce najdete v tématu Federace identit úloh v Kubernetes s podporou Azure Arc.
Návod
Tento článek popisuje kroky potřebné k nasazení a konfiguraci identity úloh v clusteru Kubernetes s podporou Arc. Informace o povolení identity úloh v jiných typech clusterů najdete v následujících článcích:
- Služba Azure Kubernetes (AKS)
- Služba AKS povolená službou Azure Arc
- AKS Edge Essentials
Požadavky
- Identita úloh pro clustery Kubernetes s podporou Azure Arc se podporuje v následujících distribucích Kubernetes:
- Cluster Ubuntu Linux se systémem K3s
- Služba AKS povolená službou Azure Arc
- Red Hat OpenShift
- VMware Tanzu TKGm
- AKS na Edge Essentials
Pokud chcete použít funkci identity úloh, musíte mít Azure CLI verze 2.64 nebo vyšší a az connectedk8s verzi 1.10.0 nebo vyšší. Před aktualizací verze az connectedk8s nezapomeňte aktualizovat verzi Azure CLI. Pokud používáte Azure Cloud Shell, nainstaluje se nejnovější verze Azure CLI.
Povolte identitu pracovního zatížení na vašem clusteru
Podle příslušných kroků povolte funkci identity úloh pro nový nebo stávající cluster Kubernetes s podporou Arc. V obou případech nezapomeňte nahradit název a skupinu prostředků hodnotami a podle potřeby nakonfigurovat parametry.
| Parametr | Popis | Požadováno |
|---|---|---|
--enable-oidc-issuer |
Generuje a hostuje adresu URL vystavitele OIDC, což je veřejně přístupná adresa URL, která serveru rozhraní API umožňuje najít veřejné podpisové klíče pro ověření tokenů. | Požadováno |
--enable-workload-identity |
Nainstaluje měnící se vstupní webhook, který umístí podepsaný token účtu služby na známou cestu a na základě nastavení anotovaného účtu služby vloží do podů aplikace proměnné prostředí související s autentizací. Pokud u nového clusteru není tento parametr povolený, musíte připojit promítaný svazek na dobře známou cestu, aby se token podepsaného účtu služby stal dostupným na této cestě. | Volitelné |
Nastavení proměnných prostředí
Pro usnadnění používání se na proměnné prostředí definované níže odkazují v příkladech v tomto článku. Nahraďte tyto hodnoty vlastními hodnotami:
export RESOURCE_GROUP="myRG"
export LOCATION="eastus"
export CLUSTER_NAME="mycluster"
export SERVICE_ACCOUNT_NAMESPACE="myKubernetesnamespace"
export SERVICE_ACCOUNT_NAME="mysa"
export SUBSCRIPTION="$(az account show --query id --output tsv)"
export USER_ASSIGNED_IDENTITY_NAME="myIdentity"
export FEDERATED_IDENTITY_CREDENTIAL_NAME="myFedIdentity"
Pokud chcete vytvořit cluster s podporou Azure Arc s povolenou identitou úloh, použijte následující příkaz:
az connectedk8s connect --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer –-enable-workload-identity
Pokud chcete povolit identitu úloh v existujícím clusteru Kubernetes s podporou Arc, použijte update příkaz.
az connectedk8s update --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer --enable-workload-identity
Načíst adresu URL vystavitele OIDC
Načtěte adresu URL vystavitele OIDC a uložte ji do proměnné prostředí. Tato adresa URL vystavitele se použije v následujícím kroku.
export OIDC_ISSUER="$(az connectedk8s show --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" \
--query "oidcIssuerProfile.issuerUrl" \
--output tsv)"
Pokud chcete zobrazit proměnnou prostředí, zadejte echo ${OIDC_ISSUER}. Proměnná prostředí by měla obsahovat adresu URL vystavitele, podobným způsobem jako v následujícím příkladu:
https://northamerica.oic.prod-arc.azure.com/00000000-0000-0000-0000-000000000000/12345678-1234-1234-1234-123456789123/
Ve výchozím nastavení je vystavitel nastaven na používání základní adresy URL https://{region}.oic.prod-arc.azure.com/{tenant_id}/{uuid}, kde hodnota {region} odpovídá umístění, kde byl vytvořen cluster Kubernetes s podporou Arc. Hodnota {uuid} představuje klíč OpenID Connect (OIDC), což je neměnný náhodně vygenerovaný identifikátor GUID pro každý cluster.
Vytvoření spravované identity
az identity create Pomocí příkazu vytvořte spravovanou identitu přiřazenou uživatelem. Pomocí identity úlohy se vytvoří vztah důvěry mezi tokenem uživatelské správcovské identity a tokenem účtu služby v clusteru Kubernetes.
az identity create \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--subscription "${SUBSCRIPTION}"
Načtěte klientské ID spravované identity a uložte ho do proměnné prostředí.
export USER_ASSIGNED_CLIENT_ID="$(az identity show \
--resource-group "${RESOURCE_GROUP}" \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--query 'clientId' \
--output tsv)"
Vytvoření účtu služby Kubernetes
Vytvořte účet služby Kubernetes a označte ho ID klienta spravované identity vytvořené v předchozím kroku. Podepsané tokeny přidružené k účtu služby Kubernetes se po navázání vztahu důvěryhodnosti mezi těmito dvěma tokeny vymění za token ID Microsoft Entra.
Pomocí následujícího fragmentu kódu YAML vytvořte účet služby s přidanou poznámkou identity úlohy.
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
azure.workload.identity/client-id: "${USER_ASSIGNED_CLIENT_ID}"
name: "${SERVICE_ACCOUNT_NAME}"
namespace: "${SERVICE_ACCOUNT_NAMESPACE}"
Vytvoření přihlašovacích údajů federované identity
az identity federated-credential create Pomocí příkazu vytvořte přihlašovací údaje federované identity mezi spravovanou identitou, vystavitelem účtu služby a předmětem. Tento krok vytvoří vztah důvěryhodnosti mezi clusterem Kubernetes a Microsoft Entra pro výměnu tokenů. Další informace o přihlašovacích údajích federované identity v Microsoft Entra najdete v tématu Přehled přihlašovacích údajů federované identity v Microsoft Entra ID.
az identity federated-credential create \
--name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${OIDC_ISSUER}" \
--subject system:serviceaccount:"${SERVICE_ACCOUNT_NAMESPACE}":"${SERVICE_ACCOUNT_NAME}" \
--audience api://AzureADTokenExchange
Poznámka:
Po přidání federálního identifikačního dokladu to trvá několik sekund, než se rozšíří. Pokud se žádost o token provede okamžitě po přidání přihlašovacích údajů federované identity, může požadavek selhat, dokud se mezipaměť neaktualizuje. Pokud se chcete tomuto problému vyhnout, přidejte do skriptů mírné zpoždění po přidání přihlašovacích údajů federované identity.
Konfigurace anotací účtů služby a popisků podů
Pro konfiguraci identity úloh na základě požadavků aplikace jsou k dispozici následující poznámky k účtu služby a podům. Popisek podu uvedený níže je povinný, pokud –-enable-workload-identity je nastaven na true.
Poznámky k účtu služby
Všechny poznámky k účtu služby jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.
| Poznámka | Popis | Výchozí |
|---|---|---|
azure.workload.identity/client-id |
ID klienta aplikace Microsoft Entra, které se má použít s podem. | |
azure.workload.identity/tenant-id |
ID tenanta Azure, ve kterém je zaregistrovaná aplikace Microsoft Entra. |
AZURE_TENANT_ID Proměnná prostředí extrahovaná z azure-wi-webhook-config objektu ConfigMap |
azure.workload.identity/service-account-token-expiration |
expirationSeconds pole pro token účtu plánované služby. Nakonfigurujte, aby se zabránilo výpadkům způsobeným chybami během aktualizace tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší 24 hodin po jejich vystavení. |
3600 (podporovaný rozsah je 3600–86400) |
Popisky podů
| Poznámka | Popis | Doporučená hodnota | Požadováno |
|---|---|---|---|
azure.workload.identity/use |
Požadováno ve specifikaci šablony podu. Pokud je hodnota –-enable-workload-identity nastavena na true, pouze pody s tímto štítkem jsou upravovány webovým hookem pro mutaci při přijetí, aby se vložily specifické proměnné prostředí Azure a objem tokenu účtu projektované služby. |
true |
Ano |
Pod poznámky
Všechny poznámky k podům jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.
| Poznámka | Popis | Výchozí |
|---|---|---|
azure.workload.identity/service-account-token-expiration |
expirationSeconds pole pro token účtu plánované služby. Nakonfigurujte, aby se zabránilo výpadkům způsobeným chybami během aktualizace tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší 24 hodin po jejich vystavení. |
3600 (podporovaný rozsah je 3600–86400) |
azure.workload.identity/skip-containers |
Představuje seznam kontejnerů oddělených středníkem, které mají přeskočit přidání svazku s tokenem projektovaného účtu služby. Například: container1;container2. |
Ve výchozím nastavení se do všech kontejnerů přidá svazek tokenu služebního účtu, pokud je pod označený azure.workload.identity/use: true. |
Konfigurace nastavení identity úloh v clusteru Kubernetes
Server rozhraní API v clusteru Kubernetes musí být nakonfigurovaný tak, aby vystavoval tokeny účtu služby, které obsahují veřejně přístupnou adresu URL vystavitele OIDC (aby Entra věděla, kde najít veřejné klíče pro ověření tokenu).
Pokud chcete nakonfigurovat nastavení identity úloh v různých distribucích Kubernetes, dokončete konfiguraci pomocí následujících kroků.
Clustery K3s
Vytvořte konfigurační soubor k3s.
Úpravou
/etc/rancher/k3s/config.yamlpřidáte tato nastavení:`kube-apiserver-arg: - 'service-account-issuer=${OIDC_ISSUER}' - 'service-account-max-token-expiration=24h'`Uložte soubor config.yaml.
Restartujte server rozhraní API k3s pomocí příkazu
systemctl restart k3s.Klíče účtu služby doporučujeme často obměnět. Další informace najdete v tématu Rotace klíče vydavatele účtu služby.
Red Hat OpenShift clustery
Upravte konfiguraci ověřování pro cluster:
Otevřete konfiguraci ověřování pro cluster:
kubectl edit authentications clusterVyhledejte sekci pro hodnotu vystavitele a aktualizujte ji.
Uložte soubor a ukončete editor.
Restartujte příslušná nasazení v požadovaných oborech názvů:
kubectl rollout restart deployment -n azure-arc kubectl rollout restart deployment -n arc-workload-identityPřípadně můžete pomocí příkazu patch použít změny, které aktualizují hodnotu vystavitele bez ručních úprav:
kubectl patch authentication cluster \ --type merge \ -p '{"spec":{"serviceAccountIssuer":"<NEW_ISSUER_VALUE>"}}' \ --kubeconfig /etc/kubernetes/admin.confPotvrďte provedené změny:
Ověřte hodnotu vydavatele:
kubectl get authentications clusterZkontrolujte stav restartovaných nasazení:
kubectl get pods -n azure-arc kubectl get pods -n arc-workload-identity
Clustery VMware Tanzu TKGm
Připojení clusteru ke službě Azure Arc s povolenou identitou úloh:
- Povolte identitu úloh v rámci procesu připojení Arc.
- Po připojení načtěte adresu URL vystavitele OIDC.
Úprava konfigurace clusteru úloh:
Přepnutí kontextu do clusteru pro správu:
kubectl config use-context mgmt-cluster-admin@mgmt-clusterZobrazení clusteru:
kubectl get clusterUpravte konfiguraci cílového clusteru:
- Vyhledejte
apiServerExtraArgs. - Pokud hodnota existuje, aktualizujte ji tak, aby zahrnovala adresu URL vystavitele.
- Pokud neexistuje, přidejte ho do části
spec:topology:variables, jak je znázorněno:
name: apiServerExtraArgs value: - 'service-account-issuer=<OIDC_ISSUER_URL>'- Vyhledejte
Přepněte kontext zpět do clusteru úloh:
kubectl config use-context <WORKLOAD_CLUSTER_CONTEXT>Vytvoření účtu služby a testovacího tokenu:
Vytvořte token pro účet služby:
kubectl create token <SERVICE_ACCOUNT_NAME> -n <NAMESPACE>Ověřte, že vystavitel tokenu odpovídá očekávané adrese URL OIDC.
Restartujte nasazení, aby se změny projevily:
kubectl rollout restart deployment -n azure-arc
Zakázat identitu úloh
Pokud chcete zakázat funkci identity úloh v clusteru Kubernetes s podporou Azure Arc, spusťte následující příkaz:
az connectedk8s update
--resource-group "${RESOURCE_GROUP}"
--name "${CLUSTER_NAME}"
--disable-workload-identity
Další kroky
- Prozkoumejte ukázku konfigurace aplikace tak, aby používala identitu úloh.
- Pomozte chránit cluster jinými způsoby podle pokynů v knize zabezpečení pro Kubernetes s podporou Azure Arc.