Azure szerepköralapú hozzáférés-vezérlés használata a Kubernetes-engedélyezéshez
Ez a cikk bemutatja, hogyan használhatja az Azure RBAC-t a Kubernetes-engedélyezéshez, amely lehetővé teszi az Azure-erőforrások, az AKS és a Kubernetes-erőforrások egységes felügyeletét és hozzáférés-vezérlését. További információ: Azure RBAC for Kubernetes Authorization.
Feljegyzés
A Microsoft Entra ID és az AKS közötti integrált hitelesítés használatakor a Microsoft Entra-felhasználókat, csoportokat vagy szolgáltatásneveket használhatja a Kubernetes szerepköralapú hozzáférés-vezérlésének (Kubernetes RBAC) tantárgyaiként. Ezzel a funkcióval nem kell külön kezelnie a Kubernetes felhasználói identitásait és hitelesítő adatait. Az Azure RBAC-t és a Kubernetes RBAC-t azonban külön kell beállítania és kezelnie.
Mielőtt elkezdené
- Telepítenie és konfigurálnia kell az Azure CLI 2.24.0-s vagy újabb verzióját. 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. - Szükség van
kubectl
rá, legalább 1.18.3-as verzióval. - Az Azure RBAC kubernetes-hitelesítéshez való hozzáadásához engedélyeznie kell a fürtön a felügyelt Microsoft Entra-integrációt. Ha engedélyeznie kell a felügyelt Microsoft Entra-integrációt, olvassa el a Microsoft Entra ID használata az AKS-ben című témakört.
- Ha CRD-kkel rendelkezik, és egyéni szerepkördefiníciókat készít, az egyetlen módja annak, hogy a CRD-ket ma lefedje, ha használja
Microsoft.ContainerService/managedClusters/*/read
. A fennmaradó objektumokhoz használhatja az adott API-csoportokat, példáulMicrosoft.ContainerService/apps/deployments/read
. - Az új szerepkör-hozzárendelések propagálása és frissítése akár öt percet is igénybe vehet.
- Az Azure RBAC for Kubernetes Authorization megköveteli, hogy a hitelesítéshez konfigurált Microsoft Entra-bérlő megegyezik az AKS-fürtöt tartalmazó előfizetés bérlőjével.
Új AKS-fürt létrehozása felügyelt Microsoft Entra-integrációval és Azure RBAC for Kubernetes-engedélyezéssel
Hozzon létre egy Azure-erőforráscsoportot a
az group create
paranccsal.export RESOURCE_GROUP=<resource-group-name> export LOCATION=<azure-region> az group create --name $RESOURCE_GROUP --location $LOCATION
Hozzon létre egy AKS-fürtöt a felügyelt Microsoft Entra-integrációval és az
az aks create
Azure RBAC for Kubernetes Authorization paranccsal.export CLUSTER_NAME=<cluster-name> az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --enable-azure-rbac \ --generate-ssh-keys
A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:
"AADProfile": { "adminGroupObjectIds": null, "clientAppId": null, "enableAzureRbac": true, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "****-****-****-****-****" }
Az Azure RBAC engedélyezése meglévő AKS-fürtön
Engedélyezze az Azure RBAC for Kubernetes-hitelesítést egy meglévő AKS-fürtön a
az aks update
--enable-azure-rbac
jelölővel ellátott paranccsal.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac
Az Azure RBAC letiltása Kubernetes-hitelesítéshez egy AKS-fürtből
Távolítsa el az Azure RBAC for Kubernetes Authorizationt egy meglévő AKS-fürtből a
az aks update
--disable-azure-rbac
jelölővel ellátott paranccsal.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
Beépített AKS-szerepkörök
Az AKS a következő beépített szerepköröket biztosítja:
Szerepkör | Leírás |
---|---|
Azure Kubernetes Service RBAC-olvasó | 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 megtekintést Secrets , 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). |
Azure Kubernetes Service RBAC-író | 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 podok elérését Secrets és futtatását a névtér bármely ServiceAccountjaként, így a névtér bármely ServiceAccount API-hozzáférési szintjének megszerzésére használható. |
Azure Kubernetes Service RBAC-rendszergazda | Lehetővé teszi a rendszergazdai hozzáférést, amelynek célja, hogy egy névtéren belül legyen megadva. Olvasási/írási hozzáférést biztosít a névtérben (vagy fürt hatókörében) 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. |
Az Azure Kubernetes Service RBAC-fürt rendszergazdája | Lehetővé teszi, hogy a felügyelők bármilyen műveletet hajtsanak végre bármely erőforráson. Teljes körű vezérlést biztosít a fürt és az összes névtér összes erőforrása felett. |
Szerepkör-hozzárendelések létrehozása fürthozzáféréshez
Kérje le az AKS-erőforrás-azonosítót a
az aks show
paranccsal.AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
Szerepkör-hozzárendelés létrehozása a
az role assignment create
paranccsal.<AAD-ENTITY-ID>
lehet egy szolgáltatásnév felhasználóneve vagy ügyfél-azonosítója. Az alábbi példa létrehoz egy szerepkör-hozzárendelést az Azure Kubernetes Service RBAC-rendszergazdai szerepkörhöz.az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Feljegyzés
A parancs használatával létrehozhatja az Azure Kubernetes Service RBAC-olvasót és az Azure Kubernetes Service RBAC-író szerepkör-hozzárendeléseket a fürt egy adott névterére, és beállíthatja a hatókört a kívánt névtérre.
az role assignment create
az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Egyéni szerepkör-definíciók létrehozása
Az alábbi egyéni szerepkördefiníció lehetővé teszi a felhasználó számára, hogy csak az üzemelő példányokat olvassa, semmi mást. A lehetséges műveletek teljes listájáért tekintse meg a Microsoft.ContainerService-műveleteket.
Saját egyéni szerepkördefiníciók létrehozásához másolja ki a következő fájlt, cserélje le
<YOUR SUBSCRIPTION ID>
a saját előfizetés-azonosítóját, majd mentse aztdeploy-view.json
.{ "Name": "AKS Deployment Reader", "Description": "Lets you view all deployments in cluster/namespace.", "Actions": [], "NotActions": [], "DataActions": [ "Microsoft.ContainerService/managedClusters/apps/deployments/read" ], "NotDataActions": [], "assignableScopes": [ "/subscriptions/<YOUR SUBSCRIPTION ID>" ] }
Hozza létre a szerepkördefiníciót a
az role definition create
paranccsal, és állítsa az--role-definition
deploy-view.json
előző lépésben létrehozott fájlra.az role definition create --role-definition @deploy-view.json
A parancs használatával rendelje hozzá a szerepkördefiníciót egy felhasználóhoz vagy más identitáshoz
az role assignment create
.az role assignment create --role "AKS Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Az Azure RBAC használata Kubernetes-engedélyezéshez kubectl
Győződjön meg arról, hogy rendelkezik beépített Azure Kubernetes-szolgáltatásfürt-felhasználó szerepkörrel, majd kérje le az AKS-fürt kubeconfigját a
az aks get-credentials
paranccsal.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Mostantól kezelheti
kubectl
a fürtöt. Listázhatja például a fürt csomópontjait a használatávalkubectl get nodes
.kubectl get nodes
Példa a kimenetre:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Az Azure RBAC használata Kubernetes-engedélyezéshez kubelogin
Az AKS azért hozta létre a kubelogin
beépülő modult, hogy segítsen feloldani az olyan forgatókönyvek blokkolását, mint a nem interaktív bejelentkezések, a régebbi kubectl
verziók vagy az egyszeri bejelentkezés használata több fürtön anélkül, hogy új fürtbe kellene bejelentkeznie.
Használja a
kubelogin
beépülő modult a következő parancs futtatásával:export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Mostantól kezelheti
kubectl
a fürtöt. Listázhatja például a fürt csomópontjait a használatávalkubectl get nodes
.kubectl get nodes
Példa a kimenetre:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Az erőforrások eltávolítása
Szerepkör-hozzárendelés törlése
Szerepkör-hozzárendelések listázása a
az role assignment list
parancs használatával.az role assignment list --scope $AKS_ID --query [].id --output tsv
Szerepkör-hozzárendelések törlése a
az role assignment delete
paranccsal.az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Szerepkördefiníció törlése
Törölje az egyéni szerepkördefiníciót a
az role definition delete
paranccsal.az role definition delete --name "AKS Deployment Reader"
Erőforráscsoport és AKS-fürt törlése
Törölje az erőforráscsoportot és az AKS-fürtöt a
az group delete
paranccsal.az group delete --name $RESOURCE_GROUP --yes --no-wait
Következő lépések
Az AKS-hitelesítéssel, az engedélyezéssel, a Kubernetes RBAC-vel és az Azure RBAC-vel kapcsolatos további információkért lásd:
Azure Kubernetes Service