Řízení přístupu pomocí Microsoft Entra ID a RBAC Kubernetes pro Windows Server
Platí pro: AKS v Azure Stack HCI 22H2, AKS na Windows Serveru
Azure Kubernetes Service (AKS) je možné nakonfigurovat tak, aby pro ověřování uživatelů používalo ID Microsoft Entra. V této konfiguraci se přihlásíte ke clusteru Kubernetes pomocí ověřovacího tokenu Microsoft Entra. Po ověření můžete pomocí integrovaného řízení přístupu na základě role Kubernetes (Kubernetes RBAC) spravovat přístup k oborům názvů a prostředkům clusteru na základě identity uživatele nebo členství ve skupině.
Tento článek popisuje, jak řídit přístup pomocí RBAC Kubernetes v clusteru Kubernetes na základě členství ve skupině Microsoft Entra ve službě AKS Arc. V Microsoft Entra ID vytvoříte ukázkovou skupinu a uživatele. Potom vytvoříte role a vazby rolí v clusteru, abyste udělili příslušná oprávnění k vytváření a zobrazení prostředků.
Požadavky
Před nastavením RBAC Kubernetes pomocí Microsoft Entra ID potřebujete následující požadavky:
- Cluster Kubernetes vytvořený v AKS Arc Pokud potřebujete nastavit cluster, přečtěte si pokyny k nasazení AKS pomocí Centra pro správu Windows nebo PowerShellu .
- Připojení Azure Arc. Ke clusteru Kubernetes musíte mít připojení Azure Arc. Informace o povolení služby Azure Arc najdete v tématu Připojení služby Azure Kubernetes Service v místním clusteru Azure k Kubernetes s podporou Azure Arc.
- Potřebujete přístup k následujícím nástrojům příkazového řádku:
- Azure CLI a rozšíření connectedk8s. Azure CLI je sada příkazů sloužících k vytváření a správě prostředků Azure. Pokud chcete zkontrolovat, jestli máte Azure CLI, otevřete nástroj příkazového řádku a zadejte:
az -v
. Také nainstalujte rozšíření connectedk8s, abyste otevřeli kanál pro cluster Kubernetes. Pokyny k instalaci najdete v tématu Postup instalace Azure CLI. - Kubectl. Tento nástroj příkazového řádku Kubernetes umožňuje spouštět příkazy, které cílí na clustery Kubernetes. Chcete-li zkontrolovat, zda jste nainstalovali kubectl, otevřete příkazový řádek a zadejte:
kubectl version --client
. Ujistěte se, že vaše verze klienta kubectl je minimálně verze 1.24.0. Pokyny k instalaci najdete v tématu kubectl. - PowerShell a modul PowerShellu AksHci PowerShell je řešení automatizace úloh pro různé platformy, které se skládá z prostředí příkazového řádku, skriptovacího jazyka a architektury pro správu konfigurace. Pokud jste nainstalovali AKS Arc, máte přístup k modulu AksHci PowerShellu.
- Pokud chcete přistupovat ke clusteru Kubernetes odkudkoli s režimem proxy pomocí
az connectedk8s proxy
příkazu, potřebujete oprávnění role uživatele clusteru Kubernetes s podporou Služby Azure Arc,connectedClusters/listClusterUserCredential/action. Mezitím musíte ověřit, že agenti a počítač provádějící proces onboardingu splňují požadavky na síť v síťových požadavcích kubernetes s podporou Azure Arc.
- Azure CLI a rozšíření connectedk8s. Azure CLI je sada příkazů sloužících k vytváření a správě prostředků Azure. Pokud chcete zkontrolovat, jestli máte Azure CLI, otevřete nástroj příkazového řádku a zadejte:
Volitelné první kroky
Pokud ještě nemáte skupinu Microsoft Entra, která obsahuje členy, můžete vytvořit skupinu a přidat některé členy, abyste mohli postupovat podle pokynů v tomto článku.
Pokud chcete předvést práci s Microsoft Entra ID a RBAC Kubernetes, můžete vytvořit skupinu Microsoft Entra pro vývojáře aplikací, která se dá použít k zobrazení toho, jak Řízení přístupu RBAC Kubernetes a Microsoft Entra ID řídí přístup k prostředkům clusteru. V produkčních prostředích můžete použít existující uživatele a skupiny v rámci tenanta Microsoft Entra.
Vytvoření ukázkové skupiny v Microsoft Entra ID
Nejprve vytvořte skupinu v Microsoft Entra ID ve vašem tenantovi pro vývojáře aplikací pomocí az ad group create
příkazu. Následující příklad vás vyzve, abyste se přihlásili ke svému tenantovi Azure a pak vytvořili skupinu s názvem appdev:
az login
az ad group create --display-name appdev --mail-nickname appdev
Přidání uživatelů do skupiny
S ukázkovou skupinou vytvořenou v Microsoft Entra ID pro vývojáře aplikací přidejte uživatele do appdev
skupiny. Tento uživatelský účet použijete k přihlášení ke clusteru AKS a otestování integrace RBAC Kubernetes.
Přidejte uživatele do skupiny appdev vytvořené v předchozí části pomocí az ad group member add
příkazu. Pokud relaci ukončíte, znovu se připojte k Azure pomocí az login
.
$AKSDEV_ID = az ad user create --display-name <name> --password <strongpassword> --user-principal-name <name>@contoso.onmicrosoft.com
az ad group member add --group appdev --member-id $AKSDEV_ID
Vytvoření vlastní vazby role RBAC Kubernetes pro prostředek clusteru AKS pro skupinu Microsoft Entra
Nakonfigurujte cluster AKS tak, aby vaše skupina Microsoft Entra mohla získat přístup ke clusteru. Pokud chcete přidat skupinu a uživatele, přečtěte si téma Vytvoření ukázkových skupin v Microsoft Entra ID.
Pomocí příkazu získejte přihlašovací údaje správce clusteru
Get-AksHciCredential
:Get-AksHciCredential -name <name-of-your-cluster>
Pomocí příkazu vytvořte obor názvů v clusteru
kubectl create namespace
Kubernetes. Následující příklad vytvoří obor názvů s názvemdev
:kubectl create namespace dev
V Kubernetes role definují oprávnění k udělení a vazby rolí použijí oprávnění pro požadované uživatele nebo skupiny. Tato přiřazení se dají použít u daného oboru názvů nebo v celém clusteru. Další informace najdete v tématu Použití autorizace RBAC Kubernetes.
Vytvořte roli pro vývojový obor názvů. Tato role uděluje úplná oprávnění k oboru názvů. Vprodukčních
Vytvořte soubor s názvem role-dev-namespace.yaml a zkopírujte nebo vložte následující manifest YAML:
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dev-user-full-access namespace: dev rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"] - apiGroups: ["batch"] resources: - jobs - cronjobs verbs: ["*"]
Vytvořte roli pomocí
kubectl apply
příkazu a zadejte název souboru manifestu YAML:kubectl apply -f role-dev-namespace.yaml
Pomocí příkazu získejte ID prostředku pro skupinu
az ad group show
appdev. Tato skupina se v dalším kroku nastaví jako předmět vazby rolí:az ad group show --group appdev --query objectId -o tsv
Příkaz
az ad group show
vrátí hodnotu, kterou použijete jakogroupObjectId
:38E5FA30-XXXX-4895-9A00-050712E3673A
Vytvořte soubor s názvem rolebinding-dev-namespace.yaml a zkopírujte nebo vložte následující manifest YAML. Vytvoříte vazbu role, která skupině appdev umožní používat
role-dev-namespace
roli pro přístup k oboru názvů. Na posledním řádku nahraďtegroupObjectId
ID objektu skupiny vytvořené příkazemaz ad group show
:kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dev-user-access namespace: dev roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: dev-user-full-access subjects: - kind: Group namespace: dev name: groupObjectId
Tip
Pokud chcete vytvořit vazbu rolí pro jednoho uživatele, zadejte
kind: User
a nahraďtegroupObjectId
hlavní název uživatele (UPN) v ukázce.Pomocí příkazu vytvořte vazbu
kubectl apply
rolí a zadejte název souboru manifestu YAML:kubectl apply -f rolebinding-dev-namespace.yaml
rolebinding.rbac.authorization.k8s.io/dev-user-access created
Použití předdefinovaných rolí RBAC Kubernetes pro prostředek clusteru AKS
Kubernetes také poskytuje předdefinované role pro uživatele. Mezi předdefinované role patří:
- Role superuživatele (správce clusteru)
- Role, které mají být uděleny v rámci clusteru pomocí ClusterRoleBindings
- Role určené k udělení v rámci konkrétních oborů názvů pomocí rolí (admin, edit, view)
Další informace o předdefinovaných rolích RBAC Kubernetes najdete v tématu Role RBAC pro uživatele Kubernetes.
Uživatelsky orientované role
Výchozí role clusteru | Výchozí vazby role clusteru | Popis |
---|---|---|
správce clusteru | system:master group | Umožňuje superuživatelům přístup k libovolnému prostředku. Při použití v ClusterRoleBinding dává tato role plnou kontrolu nad všemi prostředky v clusteru a ve všech oborech názvů. Při použití ve vazbě rolí poskytuje úplnou kontrolu nad každým prostředkem v oboru názvů vazby role, včetně samotného oboru názvů. |
správce | Nic | Umožňuje přístup správce, který má být udělen v rámci oboru názvů pomocí vazby role. Pokud se používá v vazbě role, umožňuje přístup pro čtení a zápis k většině prostředků v oboru názvů, včetně možnosti vytvářet role a vazby rolí v rámci oboru názvů. Tato role neumožňuje přístup k zápisu do kvóty prostředků ani k samotnému oboru názvů. Tato role také neumožňuje přístup k zápisu ke koncovým bodům v clusterech vytvořených pomocí Kubernetes verze 1.22 nebo novější. Další informace najdete v tématu Zápis přístupu ke koncovým bodům. |
Upravit… | Nic | Umožňuje přístup pro čtení a zápis k většině objektů v oboru názvů. Tato role neumožňuje zobrazení nebo úpravy rolí nebo vazeb rolí. Tato role ale umožňuje přístup k tajným kódům a spouštění podů jako jakýkoli účet ServiceAccount v oboru názvů, takže se dá použít k získání úrovní přístupu rozhraní API libovolného účtu ServiceAccount v oboru názvů. Tato role také neumožňuje přístup k zápisu ke koncovým bodům v clusterech vytvořených pomocí Kubernetes verze 1.22 nebo novější. Další informace najdete v tématu Zápis přístupu ke koncovým bodům. |
zobrazit | Nic | Umožňuje přístup jen pro čtení k zobrazení většiny objektů v oboru názvů. Nepovoluje zobrazování rolí nebo vazeb rolí. Tato role neumožňuje zobrazování tajných kódů, protože čtení obsahu tajných kódů umožňuje přístup k přihlašovacím údajům ServiceAccount v oboru názvů, což by umožnilo přístup rozhraní API jako jakýkoli účet ServiceAccount v oboru názvů (forma eskalace oprávnění). |
Použití předdefinované role RBAC Kubernetes s ID Microsoft Entra
Pokud chcete použít integrovanou roli RBAC Kubernetes s ID Microsoft Entra, postupujte takto:
Použití předdefinované
view
role RBAC Kubernetes u vaší skupiny Microsoft Entra:kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --group=<Azure AD group object ID>
U každého uživatele Microsoft Entra použijte integrovanou
view
roli RBAC Kubernetes:kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --user=<Azure AD user object ID>
Práce s prostředky clusteru s využitím ID Microsoft Entra
Teď otestujte očekávaná oprávnění při vytváření a správě prostředků v clusteru Kubernetes. V těchto příkladech naplánujete a zobrazíte pody v přiřazeném oboru názvů uživatele. Pak se pokusíte naplánovat a zobrazit pody mimo přiřazený obor názvů.
Přihlaste se k Azure pomocí
$AKSDEV_ID
uživatelského účtu, který jste zadali jako vstup příkazuaz ad group member add
. Spuštěnímaz connectedk8s proxy
příkazu otevřete kanál do clusteru:az connectedk8s proxy -n <cluster-name> -g <resource-group>
Po vytvoření proxy kanálu otevřete jinou relaci a pomocí příkazu v oboru názvů dev naplánujte pod
kubectl run
NGINX:kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
Po úspěšném naplánování serveru NGINX by se měl zobrazit následující výstup:
pod/nginx-dev created
Teď pomocí
kubectl get pods
příkazu zobrazte pody vdev
oboru názvů:kubectl get pods --namespace dev
Po úspěšném spuštění serveru NGINX by se měl zobrazit následující výstup:
NAME READY STATUS RESTARTS AGE nginx-dev 1/1 Running 0 4m
Vytvoření a zobrazení prostředků clusteru mimo přiřazený obor názvů
Pokud se chcete pokusit zobrazit pody mimo obor názvů vývoje , použijte kubectl get pods
příkaz s příznakem --all-namespaces
:
kubectl get pods --all-namespaces
Členství ve skupině uživatele nemá roli Kubernetes, která tuto akci umožňuje. Příkaz bez oprávnění vygeneruje chybu:
Error from server (Forbidden): pods is forbidden: User cannot list resource "pods" in API group "" at the cluster scope