A Kubernetes szerepköralapú hozzáférés-vezérlésének használata a Microsoft Entra-azonosítóval az Azure Kubernetes Service-ben
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 egy Microsoft Entra hitelesítési jogkivonat használatával jelentkezik be egy AKS-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 bemutatja, hogyan:
- Hozzáférés vezérlése a Kubernetes RBAC használatával egy AKS-fürtön a Microsoft Entra-csoporttagság alapján.
- Hozzon létre példacsoportokat és felhasználókat a Microsoft Entra-azonosítóban.
- Szerepkörök és szerepkörbindingek létrehozása egy AKS-fürtben az erőforrások létrehozásához és megtekintéséhez szükséges engedélyek megadásához.
Mielőtt elkezdené
- Van egy meglévő AKS-fürtje, amelyen engedélyezve van a Microsoft Entra integrációja. Ha ezzel a konfigurációval rendelkező AKS-fürtre van szüksége, olvassa el a Microsoft Entra ID integrálása az AKS-sel című témakört.
- A Kubernetes RBAC alapértelmezés szerint engedélyezve van az AKS-fürt létrehozása során. Ha frissíteni szeretné a fürtöt a Microsoft Entra-integrációval és a Kubernetes RBAC-vel, engedélyezze a Microsoft Entra integrációját a meglévő AKS-fürtön.
- Győződjön meg arról, hogy az Azure CLI 2.0.61-es vagy újabb verziója telepítve van és konfigurálva van. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése. - Ha a Terraformot használja, telepítse a Terraform 2.99.0-s vagy újabb verzióját.
Az Azure Portal vagy az Azure CLI használatával ellenőrizze, hogy a Microsoft Entra integrációja engedélyezve van-e a Kubernetes RBAC-vel.
Az Azure Portal használatának ellenőrzése:
- Jelentkezzen be az Azure Portalra , és keresse meg az AKS-fürterőforrást.
- A szolgáltatásmenü Beállítások csoportjában válassza a Fürtkonfiguráció lehetőséget.
- A Hitelesítés és engedélyezés szakaszban ellenőrizze, hogy a Microsoft Entra-hitelesítés kubernetes RBAC-beállítással van-e kiválasztva.
Bemutatócsoportok létrehozása a Microsoft Entra-azonosítóban
Ebben a cikkben két felhasználói szerepkört hozunk létre, amelyek bemutatják, hogyan szabályozza a Kubernetes RBAC és a Microsoft Entra ID a fürterőforrásokhoz való hozzáférést. A rendszer a következő két példaszerepkört használja:
- Alkalmazásfejlesztő
- Egy aksdev nevű felhasználó, amely az appdev csoport része.
- Webhely-megbízhatósági mérnök
- Egy akssre nevű felhasználó, amely az opssre csoport része.
Éles környezetben meglévő felhasználókat és csoportokat használhat egy Microsoft Entra-bérlőn belül.
Először kérje le az AKS-fürt erőforrás-azonosítóját a
az aks show
paranccsal. Ezután rendelje hozzá az erőforrás-azonosítót egy AKS_ID nevű változóhoz, hogy más parancsokban hivatkozni lehessen rá.AKS_ID=$(az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query id -o tsv)
Hozza létre az első példacsoportot a Microsoft Entra-azonosítóban a parancsot használó
az ad group create
alkalmazásfejlesztők számára. Az alábbi példa egy appdev nevű csoportot hoz létre:APPDEV_ID=$(az ad group create --display-name appdev --mail-nickname appdev --query id -o tsv)
Hozzon létre egy Azure-szerepkör-hozzárendelést az appdev-csoporthoz a
az role assignment create
paranccsal. Ezzel a hozzárendeléssel a csoport bármely tagja használhatjakubectl
az AKS-fürttel való interakciót az Azure Kubernetes szolgáltatásfürt felhasználói szerepkörének biztosításával.az role assignment create \ --assignee $APPDEV_ID \ --role "Azure Kubernetes Service Cluster User Role" \ --scope $AKS_ID
Tipp.
Ha például Principal 35bfec9328bd4d8d9b54dea6dac57b82 doesn't exist in the directory a5443dcd-cd0e-494d-a387-3039b419f0d5.
hibaüzenetet kap, várjon néhány másodpercet, amíg a Microsoft Entra-csoport objektumazonosítója propagálja a könyvtárat, majd próbálkozzon újra a az role assignment create
paranccsal.
Hozzon létre egy második példacsoportot opssre nevű SREs-ekhez.
OPSSRE_ID=$(az ad group create --display-name opssre --mail-nickname opssre --query id -o tsv)
Azure-szerepkör-hozzárendelés létrehozása a csoport tagjainak az Azure Kubernetes szolgáltatásfürt felhasználói szerepkörének megadásához.
az role assignment create \ --assignee $OPSSRE_ID \ --role "Azure Kubernetes Service Cluster User Role" \ --scope $AKS_ID
Demófelhasználók létrehozása a Microsoft Entra-azonosítóban
Most, hogy két példacsoportot hoztunk létre a Microsoft Entra-azonosítóban az alkalmazásfejlesztők és az SRE-k számára, két példafelhasználót hozunk létre. A Cikk végén a Kubernetes RBAC-integráció teszteléséhez ezekkel a fiókokkal kell bejelentkeznie az AKS-fürtbe.
Az egyszerű felhasználónév és jelszó beállítása az alkalmazásfejlesztők számára
Adja meg az egyszerű felhasználónevet (UPN) és a jelszót az alkalmazásfejlesztők számára. Az UPN-nek tartalmaznia kell például aksdev@contoso.com
a bérlő ellenőrzött tartománynevét.
A következő parancssor kéri az UPN-t, és beállítja AAD_DEV_UPN, hogy egy későbbi parancsban is használható legyen:
echo "Please enter the UPN for application developers: " && read AAD_DEV_UPN
A következő parancs kéri a jelszót, és beállítja, hogy AAD_DEV_PW egy későbbi parancsban való használatra:
echo "Please enter the secure password for application developers: " && read AAD_DEV_PW
A felhasználói fiókok létrehozása
- Hozza létre az első felhasználói fiókot a Microsoft Entra ID-ban a
az ad user create
paranccsal. Az alábbi példa létrehoz egy AKS Dev nevű felhasználót, valamint az UPN-t és biztonságos jelszót a AAD_DEV_UPN és AAD_DEV_PW értékeinek használatával:
AKSDEV_ID=$(az ad user create \
--display-name "AKS Dev" \
--user-principal-name $AAD_DEV_UPN \
--password $AAD_DEV_PW \
--query id -o tsv)
- Adja hozzá a felhasználót az előző szakaszban létrehozott appdev-csoporthoz a
az ad group member add
paranccsal.
az ad group member add --group appdev --member-id $AKSDEV_ID
- Állítsa be az UPN-t és a jelszót az SRE-khez. Az UPN-nek tartalmaznia kell például
akssre@contoso.com
a bérlő ellenőrzött tartománynevét. A következő parancssor kéri az UPN-t, és beállítja, hogy AAD_SRE_UPN egy későbbi parancsban való használatra:
echo "Please enter the UPN for SREs: " && read AAD_SRE_UPN
- A következő parancs kéri a jelszót, és beállítja, hogy AAD_SRE_PW egy későbbi parancsban való használatra:
echo "Please enter the secure password for SREs: " && read AAD_SRE_PW
- Hozzon létre egy második felhasználói fiókot. Az alábbi példa egy AKS SRE és upn nevű felhasználót hoz létre, és biztonságos jelszót hoz létre a AAD_SRE_UPN és AAD_SRE_PW értékeinek használatával:
# Create a user for the SRE role
AKSSRE_ID=$(az ad user create \
--display-name "AKS SRE" \
--user-principal-name $AAD_SRE_UPN \
--password $AAD_SRE_PW \
--query id -o tsv)
# Add the user to the opssre Azure AD group
az ad group member add --group opssre --member-id $AKSSRE_ID
AKS-fürterőforrások létrehozása alkalmazásfejlesztésekhez
Létrehoztuk a Microsoft Entra-csoportokat, a felhasználókat és az Azure-szerepkör-hozzárendeléseket. Most konfiguráljuk az AKS-fürtöt, hogy ezek a csoportok hozzáférjenek bizonyos erőforrásokhoz.
- Kérje le a fürt rendszergazdai hitelesítő adatait a
az aks get-credentials
paranccsal. Az alábbi szakaszok egyikében a szokásos felhasználói fürt hitelesítő adatait kapja meg a Microsoft Entra hitelesítési folyamat működés közbeni megtekintéséhez.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
- Hozzon létre egy névteret az AKS-fürtben a
kubectl create namespace
paranccsal. Az alábbi példa létrehoz egy névtérnév-fejlesztést:
kubectl create namespace dev
Feljegyzés
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 őket. Ezek a hozzárendelések alkalmazhatók egy adott névtérre vagy a teljes fürtre. További információ: Kubernetes RBAC-hitelesítés használata.
Ha a Kubernetes RBAC-kötést megadó felhasználó ugyanabban a Microsoft Entra-bérlőben van, rendeljen hozzá engedélyeket a userPrincipalName (UPN) alapján. Ha a felhasználó egy másik Microsoft Entra-bérlőben van, inkább az objectId tulajdonságot kérdezi le és használja.
- Hozzon létre egy szerepkört a fejlesztői névtérhez, amely teljes körű engedélyeket biztosít a névtérhez. Éles környezetben részletesebb engedélyeket adhat meg a különböző felhasználókhoz vagy csoportokhoz. Hozzon létre egy elnevezett
role-dev-namespace.yaml
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: ["*"]
- 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 egy RoleBinding tárgyaként van beállítva.
az ad group show --group appdev --query id -o tsv
- Hozzon létre egy RoleBindinget az appdev-csoport számára a korábban létrehozott szerepkör névtér-hozzáféréshez való használatához. Hozzon létre egy elnevezett
rolebinding-dev-namespace.yaml
fájlt, és illessze be a következő YAML-jegyzékfájlt. Az utolsó sorban cserélje le a groupObjectId azonosítót az előző parancs csoportobjektum-azonosító kimenetére.
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 a következő típust: Felhasználó , és cserélje le a groupObjectId azonosítót a fenti mintában szereplő egyszerű felhasználónévre (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
Az AKS-fürt erőforrásainak létrehozása az SRE-k számára
Most megismételjük az előző lépéseket, hogy létrehozzuk a névteret, a szerepkört és a RoleBindinget az SRE-k számára.
- Hozzon létre egy névteret a sre számára a
kubectl create namespace
parancs használatával.
kubectl create namespace sre
- Hozzon létre egy elnevezett
role-sre-namespace.yaml
fájlt, és illessze be a következő YAML-jegyzékfájlt:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: sre-user-full-access
namespace: sre
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-sre-namespace.yaml
- Kérje le az opssre-csoport erőforrás-azonosítóját az az ad group show paranccsal.
az ad group show --group opssre --query id -o tsv
- Hozzon létre egy RoleBindinget az opssre csoport számára a korábban létrehozott szerepkör névtér-hozzáféréshez való használatához. Hozzon létre egy elnevezett
rolebinding-sre-namespace.yaml
fájlt, és illessze be a következő YAML-jegyzékfájlt. Az utolsó sorban cserélje le a groupObjectId azonosítót az előző parancs csoportobjektum-azonosító kimenetére.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: sre-user-access
namespace: sre
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: sre-user-full-access
subjects:
- kind: Group
namespace: sre
name: groupObjectId
- Hozza létre a RoleBindinget a
kubectl apply
paranccsal, és adja meg a YAML-jegyzékfájl fájlnevét.
kubectl apply -f rolebinding-sre-namespace.yaml
Fürterőforrások használata Microsoft Entra-identitásokkal
Most teszteljük, hogy a várt engedélyek működnek-e, amikor erőforrásokat hoz létre és kezel egy AKS-fürtben. Ezekben a példákban ütemezzük és tekintjük meg a podokat a felhasználó hozzárendelt névterében, és megpróbáljuk ütemezni és megtekinteni a podokat a hozzárendelt névtéren kívül.
- Állítsa alaphelyzetbe a kubeconfig környezetet a
az aks get-credentials
paranccsal. Az előző szakaszban a környezet beállítása a fürt rendszergazdai hitelesítő adataival történik. A rendszergazda felhasználó átadja a Microsoft Entra bejelentkezési kéréseit. A--admin
paraméter nélkül a felhasználói környezet lesz alkalmazva, amely megköveteli, hogy az összes kérést hitelesíteni kell a Microsoft Entra-azonosítóval.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --overwrite-existing
- Ütemezzen egy alapszintű 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
- Adja meg a cikk elején létrehozott saját
appdev@contoso.com
fiókjához tartozó hitelesítő adatokat bejelentkezési kérésként. Miután sikeresen bejelentkezett, a fiók jogkivonata gyorsítótárazva lesz a jövőbelikubectl
parancsokhoz. Az NGINX sikeresen ütemezve van, ahogy az a következő példakimenetben is látható:
$ kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code B24ZD6FP8 to authenticate.
pod/nginx-dev created
- A parancs használatával megtekintheti a
kubectl get pods
podokat a fejlesztői névtérben.
kubectl get pods --namespace dev
- Győződjön meg arról, hogy az NGINX-pod állapota fut. A kimenet a következő kimenethez hasonlóan fog kinézni:
$ kubectl get pods --namespace dev
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
Próbálja meg megtekinteni a fejlesztői névtéren kívüli podokat. Ezúttal ismét használja a kubectl get pods
parancsot.--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, ahogyan az alábbi példakimenetben látható:
Error from server (Forbidden): pods is forbidden: User "aksdev@contoso.com" cannot list resource "pods" in API group "" at the cluster scope
Ugyanígy próbáljon meg ütemezni egy podot egy másik névtérben, például a sre névtérben. A felhasználó csoporttagság nem egyezik a Kubernetes-szerepkörrel és a RoleBindinggel az engedélyek megadásához, ahogyan az alábbi példakimenetben látható:
$ kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace sre
Error from server (Forbidden): pods is forbidden: User "aksdev@contoso.com" cannot create resource "pods" in API group "" in the namespace "sre"
Az SRE hozzáférésének tesztelése az AKS-fürt erőforrásaihoz
Annak ellenőrzéséhez, hogy a Microsoft Entra-csoporttagság és a Kubernetes RBAC megfelelően működik-e a különböző felhasználók és csoportok között, próbálja ki az előző parancsokat, amikor opssre-felhasználóként jelentkezik be.
- Állítsa alaphelyzetbe a kubeconfig környezetet az aksdev-felhasználó
az aks get-credentials
korábban gyorsítótárazott hitelesítési jogkivonatának törlésére szolgáló paranccsal.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --overwrite-existing
- Próbálja meg ütemezni és megtekinteni a podokat a hozzárendelt sre névtérben. Amikor a rendszer kéri, jelentkezzen be a cikk elején létrehozott saját
opssre@contoso.com
hitelesítő adataival.
kubectl run nginx-sre --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace sre
kubectl get pods --namespace sre
A következő példakimenetben látható módon sikeresen létrehozhatja és megtekintheti a podokat:
$ kubectl run nginx-sre --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace sre
3. To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code BM4RHP3FD to authenticate.
pod/nginx-sre created
$ kubectl get pods --namespace sre
NAME READY STATUS RESTARTS AGE
nginx-sre 1/1 Running 0
- Próbálja meg megtekinteni vagy ütemezni a podokat a hozzárendelt SRE-névtéren kívül.
kubectl get pods --all-namespaces
kubectl run nginx-sre --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
Ezek a kubectl
parancsok sikertelenek, ahogy az alábbi példakimenetben is látható. A felhasználó csoporttagság és a Kubernetes-szerepkör és a RoleBindings nem ad engedélyeket az erőforrások más névterekben való létrehozásához vagy felügyeletéhez.
$ kubectl get pods --all-namespaces
Error from server (Forbidden): pods is forbidden: User "akssre@contoso.com" cannot list pods at the cluster scope
$ kubectl run nginx-sre --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
Error from server (Forbidden): pods is forbidden: User "akssre@contoso.com" cannot create pods in the namespace "dev"
Az erőforrások eltávolítása
Ebben a cikkben erőforrásokat hozott létre az AKS-fürtben, valamint a Microsoft Entra ID-ban lévő felhasználókat és csoportokat. Az összes erőforrás törléséhez futtassa a következő parancsokat:
# Get the admin kubeconfig context to delete the necessary cluster resources.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
# Delete the dev and sre namespaces. This also deletes the pods, Roles, and RoleBindings.
kubectl delete namespace dev
kubectl delete namespace sre
# Delete the Azure AD user accounts for aksdev and akssre.
az ad user delete --upn-or-object-id $AKSDEV_ID
az ad user delete --upn-or-object-id $AKSSRE_ID
# Delete the Azure AD groups for appdev and opssre. This also deletes the Azure role assignments.
az ad group delete --group appdev
az ad group delete --group opssre
Következő lépések
A Kubernetes-fürtök biztonságossá tételéről további információt az AKS hozzáférési és identitásbeállításai című témakörben talál.
Az identitás- és erőforrás-vezérléssel kapcsolatos ajánlott eljárásokért tekintse meg az AKS-ben való hitelesítés és engedélyezés ajánlott eljárásait.
Azure Kubernetes Service