Hozzáférés szabályozása Microsoft Entra ID és Kubernetes RBAC használatával az Azure Arc által engedélyezett AKS-ben
A következőkre vonatkozik: AKS az Azure Stack HCI 22H2-n, AKS Windows Serveren
Azure Kubernetes Service (AKS) konfigurálható úgy, hogy Microsoft Entra ID használjon a felhasználói hitelesítéshez. Ebben a konfigurációban egy Microsoft Entra hitelesítési jogkivonattal jelentkezik be egy Kubernetes-fürtbe. A hitelesítést követően 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 az AKS Arc-csoporttagság Microsoft Entra alapján. Létrehozhat egy bemutatócsoportot és felhasználókat Microsoft Entra ID. Ezután szerepköröket és szerepkörkötéseket hozhat létre a fürtön, hogy megfelelő engedélyeket biztosítson az erőforrások létrehozásához és megtekintéséhez.
Előfeltételek
Mielőtt beállítja a Kubernetes RBAC-t Microsoft Entra identitással, a következőkre van szüksége:
Az AKS Arcban létrehozott Kubernetes-fürt
Létre kell hoznia egy Kubernetes-fürtöt az AKS Arcban. Ha be kell állítania a fürtöt, útmutatást talál az AKS üzembe helyezéséhez Windows Admin Center vagy PowerShell használatával.
Azure Arc-kapcsolat
Azure Arc-kapcsolattal kell rendelkeznie a Kubernetes-fürthöz. További információ az Azure Arc engedélyezéséről: Azure Kubernetes Service csatlakoztatása az Azure Stack HCI-fürtön 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 parancssori felület (Azure CLI) az Azure-erőforrások létrehozására és kezelésére szolgáló parancsok és szkriptek gyűjteménye. 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
. Emellett telepítenie kell a connectedk8s bővítményt , 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
A Kubernetes parancssori eszköze, a kubectl lehetővé teszi a Kubernetes-fürtökre irányuló parancsok futtatását. Annak ellenőrzéséhez, hogy telepítette-e a kubectl-et, nyisson meg egy parancssori eszközt, é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ábbv1.24.0
.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 parancssori rendszerhéjból, szkriptelési nyelvből és konfigurációkezelési keretrendszerből áll. Ha telepítette az AKS Arcot, hozzáférhet az AksHci PowerShell-modulhoz.
Választható első lépések
Ha még nem rendelkezik tagokat tartalmazó Microsoft Entra csoportokkal, érdemes lehet létrehozni egy csoportot, és felvenni néhány tagot, hogy követni tudja a jelen cikkben található 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 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ás Microsoft Entra ID
Először hozza létre a csoportot Microsoft Entra ID a bérlőben az alkalmazásfejlesztők számára az az ad group create paranccsal. Az alábbi példában bejelentkezik 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
Az alkalmazásfejlesztők számára létrehozott Microsoft Entra ID-ben létrehozott példacsoporttal adjunk hozzá egy felhasználót a appdev
csoporthoz. Ezzel a felhasználói fiókkal jelentkezhet be 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 az az ad group member add paranccsal. Ha kilép a munkamenetből, csatlakozzon újra az Azure-hoz a használatával 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ás 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érjen a fürthöz. Ha csoportokat és felhasználókat szeretne hozzáadni, tekintse meg Létrehozás bemutatócsoportokat Microsoft Entra ID.
Kérje le a fürt rendszergazdai hitelesítő adatait a Get-AksHciCredential paranccsal:
Get-AksHciCredential -name <name-of-your-cluster>
Létrehozás egy névteret a Kubernetes-fürtben a kubectl create namespace paranccsal. Az alábbi példa egy nevű
dev
névteret hoz létre: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 egy adott névtérre vagy egy teljes fürtre alkalmazhatók. További információ: Kubernetes RBAC-hitelesítés használata.
Létrehozás a dev névtér szerepkörét. Ez a szerepkör teljes körű engedélyeket ad a névtérhez. Éles környezetekben érdemes részletesebb engedélyeket megadni a különböző felhasználókhoz vagy csoportokhoz.
Létrehozás egy role-dev-namespace.yaml nevű fájlt, és 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: ["*"]
Létrehozás a szerepkört a kubectl apply paranccsal, és adja meg a YAML-jegyzékfájl fájlnevét:
kubectl apply -f role-dev-namespace.yaml
Kérje le az appdev csoport erőforrás-azonosítóját az 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álnigroupObjectId
kívánt értéket adja vissza:38E5FA30-XXXX-4895-9A00-050712E3673A
Létrehozás egy rolebinding-dev-namespace.yaml nevű fájlt, és illessze be a következő YAML-jegyzékfájlba. Létrehoz egy szerepkörkötést, amely lehetővé teszi az appdev-csoport számára, hogy a szerepkört használja a
role-dev-namespace
névtér eléréséhez. Az utolsó sorban cserélje le a elemetgroupObjectId
a parancs általaz ad group show
létrehozott csoportobjektum-azonosítóra.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ó számára szeretné létrehozni a RoleBindinget , adja meg
kind: User
és cserélje le a elemetgroupObjectId
a mintában szereplő egyszerű felhasználónévre (UPN).Létrehozás a RoleBindinget a kubectl apply paranccsal, é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 clusterRoleBindings használatával fürtszintű jogosultságot biztosítani kívánt szerepkörök
- Szerepkörbindings (rendszergazda, szerkesztés, megtekintés) használatával adott névtereken belül adható szerepkörök
A beépített Kubernetes RBAC-szerepkörökkel kapcsolatos további információkért lásd: Kubernetes RBAC felhasználói szerepkörök
Felhasználói szerepkörök
Alapértelmezett ClusterRole | Alapértelmezett ClusterRoleBinding | Description |
---|---|---|
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ű vezérlést biztosít a fürtben és az összes névtérben található összes erőforrás 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 | None | Lehetővé teszi a rendszergazdai hozzáférést, amelyet egy névtéren belül szeretne biztosítani egy szerepkörkötés használatával. Ha 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örkötések névtéren belüli létrehozásának képességét. Ez a szerepkör nem teszi lehetővé az írási hozzáférést az erőforráskvóta vagy magához a névtérhez. Ez a szerepkör nem engedélyezi az írási hozzáférést a Kubernetes v1.22+ használatával létrehozott fürtök végpontjaihoz. További információ: Írási hozzáférés végpontokhoz. |
szerkesztés | None | 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 bármely ServiceAccountként való futtatását 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 engedélyezi az írási hozzáférést a Kubernetes v1.22+ használatával létrehozott fürtök végpontjaihoz. További információ: Írási hozzáférés végpontokhoz. |
Nézd | None | Írásvédett hozzáférés engedélyezése a névtérben lévő objektumok többségének megtekintéséhez. 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 kulcsok 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 bármely ServiceAccountként a névtérben (a jogosultságok eszkalálásának egy formája). |
Beépített Kubernetes RBAC-szerepkör használata Microsoft Entra ID
Ha beépített Kubernetes RBAC-szerepkört szeretne használni Microsoft Entra ID, hajtsa végre 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 identitások használatával
Most tesztelje a várt engedélyeket, amikor erőforrásokat hoz létre és kezel egy Kubernetes-fürtön. Ezekben a példákban podokat ütemezhet és tekinthet meg a felhasználó hozzárendelt névterében. Ezután megpróbálja ütemezni és megtekinteni a podokat a hozzárendelt névtéren kívül.
Jelentkezzen be az Azure-ba azzal a
$AKSDEV_ID
felhasználói fiókkal, amelyet aaz ad group member add
parancs bemeneteként adott át.az connectedk8s proxy
A parancs futtatásával nyisson meg egy csatornát a fürt számára: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 paranccsal a dev névtérben:
kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
Az NGINX sikeres ütemezése után a következő kimenet jelenik meg:
pod/nginx-dev created
Most használja a kubectl get pods parancsot a névtérben lévő
dev
podok megtekintéséhez:kubectl get pods --namespace dev
Ha az NGINX sikeresen fut, a következő kimenet jelenik meg:
$ kubectl get pods --namespace dev NAME READY STATUS RESTARTS AGE nginx-dev 1/1 Running 0 4m
fürterőforrások Létrehozás é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 parancsot a --all-namespaces
jelzővel.
kubectl get pods --all-namespaces
A felhasználó csoporttagságához nincs olyan Kubernetes-szerepkör, amely lehetővé teszi ezt a műveletet. Engedély nélkül a parancs hibát jelez.
Error from server (Forbidden): pods is forbidden: User cannot list resource "pods" in API group "" at the cluster scope
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: