Azure szerepköralapú hozzáférés-vezérlés (RBAC) használata a Kubernetes-engedélyezéshez
A következőkre vonatkozik: AKS on Azure Local, version 23H2
Az infrastruktúra-rendszergazdák azure-beli szerepköralapú hozzáférés-vezérléssel (Azure RBAC) szabályozhatják, hogy ki férhet hozzá a kubeconfig fájlhoz és az engedélyükhöz. A Kubernetes-operátorok a kubectl eszközzel kezelhetik a Kubernetes-fürtöket a megadott engedélyek alapján. Az Azure CLI segítségével egyszerűen lekérheti a hozzáférési hitelesítő adatokat és a kubeconfig konfigurációs fájlt az AKS-fürtökhöz való csatlakozáshoz a kubectl használatával.
Ha integrált hitelesítést használ a Microsoft Entra ID és az AKS között, 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) tantárgyaké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 azt ismerteti, hogyan használhatja az Azure RBAC-t a Kubernetes-fürt engedélyezéséhez Microsoft Entra-azonosítóval és Azure-szerepkör-hozzárendelésekkel.
Elméleti áttekintésért tekintse meg az Azure RBAC for Kubernetes Authorization for AKS-t, amelyet az Azure Arc engedélyez.
Mielőtt elkezdené
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:
Az Azure Local AKS 23H2-es verziója jelenleg csak a Kubernetes-fürt létrehozásakor támogatja az Azure RBAC engedélyezését. A Kubernetes-fürt létrehozása után nem engedélyezheti az Azure RBAC-t.
Telepítse az aksarc és a connectedk8s Azure CLI-bővítmények legújabb verzióját. Vegye figyelembe, hogy az Azure RBAC engedélyezéséhez az aksarc bővítmény 1.1.1-es vagy újabb verzióját kell futtatnia. Futtassa
az --version
az aktuális verziót. Ha telepítenie vagy frissítenie kell az Azure CLI-t, tekintse meg az Azure CLI telepítését.az extension add --name aksarc az extension add --name connectedk8s
Ha már telepítette a bővítményt
aksarc
, frissítse a bővítményt a legújabb verzióra:az extension update --name aksarc az extension update --name connectedk8s
A Kubernetes-fürtök használatához telepítenie kell a kubectl és a kubelogin rendszert.
Kubernetes-fürt létrehozásakor az Azure RBAC engedélyezéséhez a következő engedélyekre van szüksége:
- Kubernetes-fürt létrehozásához az Azure Kubernetes Service Arc közreműködői szerepkörre van szüksége.
- A
--enable-azure-rbac
paraméter használatához a Microsoft.Authorization/roleAssignments/write engedélyhez való hozzáféréshez a szerepköralapú hozzáférés-vezérlési rendszergazdai szerepkörre van szükség. További információ: Beépített Azure-szerepkörök. - Az új szerepkör-hozzárendelések propagálása és frissítése akár öt percet is igénybe vehet.
Ha az Azure RBAC engedélyezve van, a kubernetes-fürtöt a megadott engedélyekkel érheti el közvetlen vagy proxy módban.
- Ahhoz, hogy a Kubernetes-fürtöt közvetlenül a
az aksarc get-credentials
paranccsal elérhesse, a Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action fájlra van szüksége, amely az Azure Kubernetes Service Arc-fürt felhasználói szerepkör-engedélyében szerepel. - A Kubernetes-fürt proxy móddal bárhonnan, a parancs használatával
az connectedk8s proxy
vagy az Azure Portalról való eléréséhez a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action műveletre van szüksége, amely az Azure Arc-kompatibilis Kubernetes-fürt felhasználói szerepkör-engedélyében szerepel. Eközben ellenőriznie kell, hogy az előkészítési folyamatot végrehajtó ügynökök és a gép megfelelnek-e az Azure Arc-kompatibilis Kubernetes hálózati követelményekben meghatározott hálózati követelményeknek.
- Ahhoz, hogy a Kubernetes-fürtöt közvetlenül a
A kubectl használatához az Azure RBAC vagy az AAD felügyeleti csoport használatával férhet hozzá.
- A kubectl Azure RBAC-vel való használatához az Azure Arc Kubernetes Viewer szerepkörre van szükség, amely a csatlakoztatott fürterőforrásra terjed ki.
- A kubectl az AAD felügyeleti csoporttal való használatához nincs szükség konkrét szerepkörre, de meg kell győződnie arról, hogy a csatlakoztatott fürterőforrás bővítmény-rendszergazdai csoportlistájában szerepel valamelyik csoportban.
1. lépés: Azure RBAC-kompatibilis Kubernetes-fürt létrehozása
Létrehozhat egy Azure RBAC-kompatibilis Kubernetes-fürtöt az engedélyezéshez, és egy Microsoft Entra-azonosítót a hitelesítéshez.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --enable-azure-rbac
Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.
2. lépés: Szerepkör-hozzárendelések létrehozása a felhasználók számára a fürt eléréséhez
Az Arc által engedélyezett AKS az alábbi öt beépített szerepkört biztosítja. Hasonlóak a Kubernetes beépített szerepköreihez , néhány különbséggel, például a CRD-k támogatásával. Tekintse meg az egyes Beépített Azure-szerepkörök által engedélyezett műveletek teljes listáját.
Szerepkör | Leírás |
---|---|
Azure Arc-kompatibilis Kubernetes-fürtfelhasználó | Lehetővé teszi a fürt connect-alapú kubeconfig fájljának lekérését a fürtök bárhonnan történő kezeléséhez. |
Azure Arc Kubernetes Viewer | 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 engedélyezi a titkos kódok megtekintését, mert a titkos kódok olvasási engedélye lehetővé teszi a ServiceAccount hitelesítő adatainak elérését a névtérben. Ezek a hitelesítő adatok viszont lehetővé teszik az API-hozzáférést ezen a ServiceAccount-értéken keresztül (a jogosultságok eszkalálásának egy formája). |
Azure Arc Kubernetes-író | Olvasási/írási hozzáférést tesz lehetővé a névtérben lévő legtöbb objektumhoz. Nem engedélyezi 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 kulcsok elérését és a podok futtatását a névtér bármely ServiceAccount-értékeként , így bármely ilyen ServiceAccount-érték API-hozzáférési szintjei a névtérben megszerezhetők. |
Azure Arc Kubernetes-rendszergazda | Engedélyezi a rendszergazdai hozzáférést. A névtérben a RoleBinding használatával adható meg. Ha a RoleBindingben használja, az olvasási/írási hozzáférést tesz lehetővé 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á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 Arc Kubernetes-fürt rendszergazdája | Engedélyezi a "superuser" hozzáférést bármely erőforráson végrehajtott műveletek végrehajtásához. Amikor a ClusterRoleBindingben használja, teljes körű vezérlést biztosít a fürt és az összes névtér összes erőforrása felett. Amikor a RoleBindingben használja, teljes körű vezérlést biztosít a szerepkörkötési névtér összes erőforrása felett, beleértve magát a névteret is. |
A parancs használatával az role assignment create
szerepkör-hozzárendeléseket hozhat létre.
Először szerezze be azt a $ARM-ID
célfürtöt, amelyhez szerepkört szeretne hozzárendelni.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Ezután a az role assignment create
paranccsal rendeljen szerepköröket a Kubernetes-fürthöz. Meg kell adnia az $ARM_ID
első lépést és a assignee-object-id
lépéshez tartozót. Ez assignee-object-id
lehet Microsoft Entra-azonosító vagy szolgáltatásnév ügyfél-azonosítója.
Az alábbi példa az Azure Arc Kubernetes Viewer szerepkört rendeli a Kubernetes-fürthöz:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
Ebben a példában a hatókör a fürt Azure Resource Manager-azonosítója. Ez lehet a Kubernetes-fürtöt tartalmazó erőforráscsoport is.
Egyéni szerepkör-definíciók létrehozása
Saját szerepkördefiníciót hozhat létre a szerepkör-hozzárendelésekben való használatra.
Az alábbi példa egy szerepkördefiníciót mutat be, amely lehetővé teszi a felhasználó számára, hogy csak az üzemelő példányokat olvassa. További információkért tekintse meg a szerepkördefiníciók létrehozásához használható adatműveletek teljes listáját. Az egyéni szerepkörök létrehozásával kapcsolatos további információkért tekintse meg az egyéni szerepkör létrehozásának lépéseit
Saját egyéni szerepkördefiníciók létrehozásához másolja a következő JSON-objektumot egy custom-role.json nevű fájlba. Cserélje le a <subscription-id>
helyőrzőt a tényleges előfizetés-azonosítóra. Az egyéni szerepkör az egyik adatműveletet használja, és lehetővé teszi az összes üzembe helyezés megtekintését abban a hatókörben (fürtben vagy névtérben), ahol a szerepkör-hozzárendelés létrejön.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Az egyéni szerepkörökről és azok szerzői módjáról az Azure egyéni szerepköreivel kapcsolatos információk találhatók.
Hozza létre a szerepkördefiníciót a az role definition create
paranccsal, és állítsa a --role-definition
paramétert az előző lépésben létrehozott deploy-view.json fájlra:
az role definition create --role-definition @deploy-view.json
Rendelje hozzá a szerepkördefiníciót egy felhasználóhoz vagy más identitáshoz a az role assignment create
következő paranccsal:
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
3. lépés: A Kubernetes-fürt elérése
Most már elérheti a Kubernetes-fürtöt a megadott engedélyekkel, közvetlen vagy proxy módban.
A fürt elérése kubectl használatával (közvetlen mód)
A Kubernetes-fürt adott engedélyekkel való eléréséhez a Kubernetes-operátornak szüksége van a Microsoft Entra kubeconfigra, amelyet a az aksarc get-credentials
parancs használatával érhet el. Ez a parancs hozzáférést biztosít a rendszergazdai kubeconfighoz, valamint egy felhasználóalapú kubeconfighoz. A rendszergazdai kubeconfig fájl titkos kódokat tartalmaz, ezért rendszeresen biztonságosan kell tárolni és elforgatni. A felhasználóalapú Microsoft Entra ID kubeconfig azonban nem tartalmaz titkos kulcsokat, és terjeszthető az ügyfélszámítógépeikről csatlakozó felhasználók számára.
Az Azure CLI-parancs futtatásához a Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action parancsra van szüksége, amely az Azure Kubernetes Service Arc-fürt felhasználói szerepkör-engedélyében található:
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
Most már használhatja a kubectl-fürtö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 az alábbi példában látható módon:
kubectl get nodes
A fürt elérése ügyféleszközről (proxy mód)
Ahhoz, hogy a Kubernetes-fürtöt bárhonnan elérhesse proxy móddal a parancs használatávalaz connectedk8s proxy
, a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/műveletre van szüksége, amely az Azure Arc-kompatibilis Kubernetes-fürtfelhasználói szerepkör engedély részét képezi.
Futtassa a következő lépéseket egy másik ügyféleszközön:
Bejelentkezés Microsoft Entra-hitelesítéssel
Kérje le a fürt csatlakoztatásához szükséges kubeconfigot , hogy bárhonnan (akár a fürtöt körülvevő tűzfalon kívülről is) kommunikáljon a fürttel:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Feljegyzés
Ez a parancs megnyitja a proxyt, és letiltja az aktuális rendszerhéjat.
Egy másik rendszerhéj-munkamenetben
kubectl
a kéréseket a fürtnek küldheti el:kubectl get pods -A
Ekkor megjelenik a fürt válasza, amely tartalmazza a névtérben lévő default
összes pod listáját.
További információ: A fürt elérése ügyféleszközről.
Az erőforrások eltávolítása
Szerepkör-hozzárendelés törlése
# List role assignments
az role assignment list --scope $ARM_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 -n "AKS Arc Deployment Reader"