Hozzáférés szabályozása a Windows Serverhez készült Microsoft Entra ID és Kubernetes RBAC használatával
A következőkre vonatkozik: AKS on Azure Stack HCI 22H2, AKS on Windows Server
Az Azure Kubernetes Service (AKS) konfigurálható úgy, hogy a Microsoft Entra ID-t használja a felhasználói hitelesítéshez. Ebben a konfigurációban microsoft Entra hitelesítési jogkivonat használatával jelentkezik be egy Kubernetes-fürtbe. A hitelesítés után a beépített Kubernetes szerepköralapú hozzáférés-vezérléssel (Kubernetes RBAC) kezelheti a névterekhez és fürterőforrásokhoz való hozzáférést a felhasználó identitása vagy csoporttagsága alapján.
Ez a cikk azt ismerteti, hogyan szabályozható a hozzáférés a Kubernetes RBAC használatával egy Kubernetes-fürtben a Microsoft Entra csoporttagság alapján az AKS Arcban. Egy bemutatócsoportot és felhasználókat hozhat létre a Microsoft Entra ID-ban. Ezután szerepköröket és szerepkörkötéseket hozhat létre a fürtben, hogy megfelelő engedélyeket adjon az erőforrások létrehozásához és megtekintéséhez.
Előfeltételek
Mielőtt beállítja a Kubernetes RBAC-t a Microsoft Entra ID használatával, a következő előfeltételekre van szüksége:
- Az AKS Arcban létrehozott Kubernetes-fürt. Ha be kell állítania a fürtöt, tekintse meg a Windows Felügyeleti központ vagy a PowerShell AKS üzembe helyezésére vonatkozó utasításait.
- Azure Arc-kapcsolat. Azure Arc-kapcsolattal kell rendelkeznie a Kubernetes-fürthöz. Az Azure Arc engedélyezésével kapcsolatos információkért lásd : Azure Stack HCI-fürtön futó Azure Kubernetes Service csatlakoztatása az Azure Arc-kompatibilis Kuberneteshez.
- A következő parancssori eszközökhöz kell hozzáférnie:
- Az Azure CLI és a connectedk8s bővítmény. Az Azure CLI az Azure-erőforrások létrehozásához és kezeléséhez használt parancsok készlete. Annak ellenőrzéséhez, hogy rendelkezik-e az Azure CLI-vel, nyisson meg egy parancssori eszközt, és írja be a következőt:
az -v
. Telepítse a connectedk8s bővítményt is, hogy csatornát nyisson a Kubernetes-fürthöz. A telepítési utasításokért lásd : Az Azure CLI telepítése. - Kubectl. Ez a Kubernetes parancssori eszköz lehetővé teszi a Kubernetes-fürtöket célzó parancsok futtatását. A kubectl telepítésének ellenőrzéséhez nyisson meg egy parancssort, és írja be a következőt:
kubectl version --client
. Győződjön meg arról, hogy a Kubectl-ügyfél verziója legalább 1.24.0-s verziójú. A telepítési utasításokért lásd: kubectl. - A PowerShell és az AksHci PowerShell modul. A PowerShell egy platformfüggetlen feladatautomatizálási megoldás, amely egy parancssori rendszerhéjból, egy szkriptelési nyelvből és egy konfigurációkezelési keretrendszerből áll. Ha telepítette az AKS Arcot, hozzáférhet az AksHci PowerShell-modulhoz.
- Ahhoz, hogy a Kubernetes-fürt bárhonnan elérhető legyen proxy móddal a parancs használatával
az connectedk8s proxy
, a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action fájlra van szükség, amely az Azure Arc-kompatibilis Kubernetes-fürt felhasználói szerepkör-engedélyében szerepel. Eközben ellenőriznie kell, hogy az ügynökök és az előkészítési folyamatot végrehajtó gép megfelel-e az Azure Arc-kompatibilis Kubernetes hálózati követelményeinek.
- Az Azure CLI és a connectedk8s bővítmény. Az Azure CLI az Azure-erőforrások létrehozásához és kezeléséhez használt parancsok készlete. Annak ellenőrzéséhez, hogy rendelkezik-e az Azure CLI-vel, nyisson meg egy parancssori eszközt, és írja be a következőt:
Választható első lépések
Ha még nem rendelkezik tagokat tartalmazó Microsoft Entra-csoporttal, érdemes lehet létrehozni egy csoportot, és felvenni néhány tagot, hogy követni tudja a cikkben leírt utasításokat.
A Microsoft Entra ID és a Kubernetes RBAC használatának bemutatásához létrehozhat egy Microsoft Entra-csoportot az alkalmazásfejlesztők számára, amely bemutatja, hogyan szabályozza a Kubernetes RBAC és a Microsoft Entra ID a fürterőforrásokhoz való hozzáférést. Éles környezetben meglévő felhasználókat és csoportokat használhat egy Microsoft Entra-bérlőn belül.
Bemutatócsoport létrehozása a Microsoft Entra-azonosítóban
Először hozza létre a csoportot a Microsoft Entra-azonosítóban a bérlőben a parancsot használó az ad group create
alkalmazásfejlesztők számára. Az alábbi példa arra kéri, hogy jelentkezzen be az Azure-bérlőbe, majd létrehoz egy appdev nevű csoportot:
az login
az ad group create --display-name appdev --mail-nickname appdev
Felhasználók hozzáadása a csoporthoz
A Microsoft Entra ID-ban az alkalmazásfejlesztők számára létrehozott példacsoporttal adjon hozzá egy felhasználót a appdev
csoporthoz. Ezzel a felhasználói fiókkal bejelentkezhet az AKS-fürtbe, és tesztelheti a Kubernetes RBAC-integrációt.
Adjon hozzá egy felhasználót az előző szakaszban létrehozott appdev-csoporthoz a az ad group member add
paranccsal. Ha kilép a munkamenetből, csatlakozzon újra az Azure-hoz a 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
Egyéni Kubernetes RBAC-szerepkörkötés létrehozása a Microsoft Entra-csoport AKS-fürterőforrásán
Konfigurálja az AKS-fürtöt úgy, hogy a Microsoft Entra-csoport hozzáférhessen a fürthöz. Ha csoportokat és felhasználókat szeretne hozzáadni, olvassa el a Bemutatócsoportok létrehozása a Microsoft Entra ID-ban című témakört.
Kérje le a fürt rendszergazdai hitelesítő adatait a
Get-AksHciCredential
következő paranccsal:Get-AksHciCredential -name <name-of-your-cluster>
Hozzon létre egy névteret a Kubernetes-fürtben a
kubectl create namespace
paranccsal. Az alábbi példa létrehoz egy névteret:dev
kubectl create namespace dev
A Kubernetesben a szerepkörök határozzák meg az engedélyeket, a RoleBindings pedig a kívánt felhasználókra vagy csoportokra alkalmazza az engedélyeket. Ezek a hozzárendelések alkalmazhatók egy adott névtérre vagy egy teljes fürtre. További információ: Kubernetes RBAC-hitelesítés használata.
Hozzon létre egy szerepkört a fejlesztői névtérhez. Ez a szerepkör teljes engedélyeket biztosít a névtérhez. Éles környezetekben célszerű részletesebb engedélyeket megadni a különböző felhasználókhoz vagy csoportokhoz.
Hozzon létre egy role-dev-namespace.yaml nevű fájlt, és másolja/illessze be a következő YAML-jegyzékfájlt:
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: ["*"]
Hozza létre a szerepkört a
kubectl apply
paranccsal, és adja meg a YAML-jegyzék fájlnevét:kubectl apply -f role-dev-namespace.yaml
Kérje le az appdev-csoport erőforrás-azonosítóját a
az ad group show
paranccsal. Ez a csoport a következő lépésben a RoleBinding tárgyaként van beállítva:az ad group show --group appdev --query objectId -o tsv
A
az ad group show
parancs a következőként használt értéket adjagroupObjectId
vissza:38E5FA30-XXXX-4895-9A00-050712E3673A
Hozzon létre egy rolebinding-dev-namespace.yaml nevű fájlt, és másolja/illessze be a következő YAML-jegyzékfájlt. Létre kell hoznia azt a szerepkör-kötést, amely lehetővé teszi az appdev-csoport számára a
role-dev-namespace
szerepkör névtér-hozzáféréshez való használatát. Az utolsó sorban cserélje legroupObjectId
a parancs által létrehozott csoportobjektum-azonosítóraaz 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
Tipp.
Ha egyetlen felhasználóhoz szeretné létrehozni a RoleBindinget , adja meg
kind: User
és cserélje legroupObjectId
a mintában szereplő egyszerű felhasználónevet (UPN).Hozza létre a RoleBindinget a
kubectl apply
parancs használatával, és adja meg a YAML-jegyzékfájl fájlnevét:kubectl apply -f rolebinding-dev-namespace.yaml
rolebinding.rbac.authorization.k8s.io/dev-user-access created
Beépített Kubernetes RBAC-szerepkörök használata az AKS-fürterőforráshoz
A Kubernetes beépített felhasználói szerepköröket is biztosít. Ezek a beépített szerepkörök a következők:
- Felügyelői szerepkörök (fürt-rendszergazda)
- A FürtroleBindings használatával fürtszintű szerepköröket kívánnak biztosítani
- Szerepkörök adott névtereken belül a RoleBindings használatával (rendszergazdai, szerkesztési, megtekintési)
A beépített Kubernetes RBAC-szerepkörökkel kapcsolatos további információkért tekintse meg a Kubernetes RBAC felhasználói szerepköreit.
Felhasználói szerepkörök
Alapértelmezett ClusterRole | Alapértelmezett ClusterRoleBinding | Leírás |
---|---|---|
fürt-rendszergazda | system:masters group | Lehetővé teszi a felügyelői hozzáférést, hogy bármilyen műveletet végrehajtson bármely erőforráson. A ClusterRoleBindingben való használat esetén ez a szerepkör teljes körű ellenőrzést biztosít a fürt és az összes névtér összes erőforrása felett. A RoleBindingben való használat esetén teljes körű vezérlést biztosít a szerepkör-kötés névterében lévő összes erőforrás felett, beleértve magát a névteret is. |
felügyelet | Egyik sem | Lehetővé teszi a rendszergazdai hozzáférést, amely egy névtéren belül, szerepkör-kötéssel adható meg. Ha egy szerepkör-kötésben használják, olvasási/írási hozzáférést biztosít a névtérben lévő legtöbb erőforráshoz, beleértve a szerepkörök és szerepkör-kötések névtéren belüli létrehozását is. Ez a szerepkör nem teszi lehetővé az erőforráskvóta vagy a névtér írási hozzáférését. Ez a szerepkör nem teszi lehetővé az írási hozzáférést a Kubernetes v1.22+ verzióval létrehozott fürtök végpontjaihoz. További információ: Hozzáférés írása végpontokhoz. |
Szerkesztés... | Egyik sem | Olvasási/írási hozzáférést tesz lehetővé a névtérben lévő legtöbb objektumhoz. Ez a szerepkör nem teszi lehetővé a szerepkörök vagy szerepkörkötések megtekintését vagy módosítását. Ez a szerepkör azonban lehetővé teszi a titkos kódok elérését és a podok futtatását, mint bármely ServiceAccount a névtérben, így a névtér bármely ServiceAccount API-hozzáférési szintjének megszerzésére használható. Ez a szerepkör nem teszi lehetővé az írási hozzáférést a Kubernetes v1.22+ verzióval létrehozott fürtök végpontjaihoz. További információ: Hozzáférés írása végpontokhoz. |
megtekintés | Egyik sem | Az írásvédett hozzáférés lehetővé teszi a névtérben lévő objektumok többségének megtekintését. Nem teszi lehetővé a szerepkörök vagy szerepkörkötések megtekintését. Ez a szerepkör nem teszi lehetővé a titkos kódok megtekintését, mivel a titkos kódok tartalmának olvasása lehetővé teszi a ServiceAccount hitelesítő adatainak elérését a névtérben, ami lehetővé teszi az API-hozzáférést a névtér bármely ServiceAccount-fiókjaként (a jogosultságok eszkalálásának egy formája). |
Beépített Kubernetes RBAC-szerepkör használata a Microsoft Entra ID-val
Ha egy beépített Kubernetes RBAC-szerepkört szeretne használni a Microsoft Entra ID-val, kövesse az alábbi lépéseket:
Alkalmazza a beépített Kubernetes RBAC-szerepkört
view
a Microsoft Entra-csoportra:kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --group=<Azure AD group object ID>
Alkalmazza a beépített Kubernetes RBAC-szerepkört
view
minden Microsoft Entra-felhasználóra:kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --user=<Azure AD user object ID>
Fürterőforrások használata Microsoft Entra-azonosítókkal
Most tesztelje a várt engedélyeket, amikor erőforrásokat hoz létre és kezel egy Kubernetes-fürtben. Ezekben a példákban a podokat a felhasználó hozzárendelt névterében ütemezheti és tekintheti meg. Ezután próbálja meg ütemezni és megtekinteni a podokat a hozzárendelt névtéren kívül.
Jelentkezzen be az Azure-ba a
$AKSDEV_ID
parancs bemenetekéntaz ad group member add
megadott felhasználói fiókkal. Futtassa aaz connectedk8s proxy
parancsot a fürt csatornájának megnyitásához:az connectedk8s proxy -n <cluster-name> -g <resource-group>
A proxycsatorna létrehozása után nyisson meg egy másik munkamenetet, és ütemezzen egy NGINX-podot a
kubectl run
dev névtérben található paranccsal:kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
Az NGINX sikeres ütemezésekor a következő kimenetnek kell megjelennie:
pod/nginx-dev created
Most használja a parancsot a
kubectl get pods
névtérben lévődev
podok megtekintéséhez:kubectl get pods --namespace dev
Ha az NGINX sikeresen fut, a következő kimenetnek kell megjelennie:
NAME READY STATUS RESTARTS AGE nginx-dev 1/1 Running 0 4m
Fürterőforrások létrehozása és megtekintése a hozzárendelt névtéren kívül
A dev névtéren kívüli podok megtekintéséhez használja a kubectl get pods
következő jelölőt--all-namespaces
:
kubectl get pods --all-namespaces
A felhasználó csoporttagságához nincs olyan Kubernetes-szerepkör, amely lehetővé teszi ezt a műveletet. Az engedély nélkül a parancs hibát okoz:
Error from server (Forbidden): pods is forbidden: User cannot list resource "pods" in API group "" at the cluster scope