Azure szerepköralapú hozzáférés-vezérlés használata a Kubernetes-engedélyezéshez
Ha a Microsoft Entra ID és az AKS közötti integrált hitelesítést használja, a Microsoft Entra felhasználóit, csoportjait vagy szolgáltatásneveit használhatja a Kubernetes szerepköralapú hozzáférés-vezérlésének (Kubernetes RBAC) alanyaként. Ez a funkció lehetővé teszi a Kubernetes felhasználói identitásainak és hitelesítő adatainak külön kezelését. Az Azure RBAC-t és a Kubernetes RBAC-t azonban külön kell beállítania és kezelnie.
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.
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.
az group create --name myResourceGroup --location westus2
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.
az aks create --resource-group myResourceGroup --name myManagedCluster --enable-aad --enable-azure-rbac
A kimenet a következő példakimenethez hasonlóan fog kinézni:
"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
Adja hozzá az Azure RBAC for Kubernetes Authorizationt egy meglévő AKS-fürthöz a az aks update
enable-azure-rbac
jelölővel ellátott paranccsal.
az aks update --resource-group myResourceGroup --name myAKSCluster --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 myResourceGroup --name myAKSCluster --disable-azure-rbac
Szerepkör-hozzárendelések létrehozása a felhasználók számára a fürt eléréséhez
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. |
Azure Kubernetes Service RBAC-fürt Rendszergazda | 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. |
A teljes AKS-fürtre vonatkozó szerepkör-hozzárendelések elvégezhetők a fürterőforrás Hozzáférés-vezérlés (IAM) paneljén az Azure Portalon, vagy az alábbi Azure CLI-parancsokkal:
Kérje le az AKS-erőforrás-azonosítót a az aks show
paranccsal.
AKS_ID=$(az aks show --resource-group myResourceGroup --name myManagedCluster --query id -o 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 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>
Feljegyzés
Az Azure Portalon a kívánt névtérre hatókörrel rendelkező szerepkör-hozzárendelések létrehozása után a névtérhez tartozó "szerepkör-hozzárendelések" nem láthatók a hatókörben. Ezt a parancs használatával, vagy egy az role assignment list
olyan felhasználó vagy csoport szerepkör-hozzárendeléseinek listázásával találja meg, amelyhez a szerepkört hozzárendelte.
az role assignment list --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 azt deploy-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 myResourceGroup --name myManagedCluster
Most már használhatja kubectl
a fürt kezelését. Listázhatja például a fürt csomópontjait a használatával kubectl get nodes
. Az első futtatáskor be kell jelentkeznie a következő példában látható módon:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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 a további forgatókönyveket, például a nem interaktív bejelentkezéseket, a régebbi kubectl
verziókat vagy az egyszeri bejelentkezés használatát több fürtön anélkül, hogy új fürtbe kellene bejelentkeznie.
A beépülő modult az kubelogin
alábbi parancs futtatásával használhatja:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
kubectl
Ehhez hasonlóan az első futtatáskor be kell jelentkeznie a következő példában látható módon:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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
# List role assignments
az role assignment list --scope $AKS_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Szerepkördefiníció törlése
az role definition delete --name "AKS Deployment Reader"
Erőforráscsoport és AKS-fürt törlése
az group delete --name myResourceGroup
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: