Megosztás a következőn keresztül:


Azure szerepköralapú hozzáférés-vezérlés (RBAC) használata a Kubernetes-engedélyezéshez

A következőkre vonatkozik: AKS az Azure Stack HCI 23H2-n

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 Stack HCI 23H2 AKS 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.
    • Ahhoz, hogy a Kubernetes-fürt bárhonnan elérhető legyen proxy móddal a parancs használatávalaz connectedk8s proxy, szüksége van a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/műveletre, amely az Azure Arc-kompatibilis Kubernetes-fürt felhasználói szerepkör-engedélyében szerepel. Eközben ellenőriznie kell, hogy az ügynökök és az előkészítési folyamatot végrehajtó gép megfelel-e az Azure Arc-kompatibilis Kubernetes hálózati követelményekben meghatározott hálózati követelményeknek.
  • 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 --control-plane-ip $controlplaneIP --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 Azure Arc által engedélyezett AKS a következő beépített szerepköröket biztosítja:

Szerepkör Leírás
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 szerepkörök vagy szerepkörkötések megtekintését.
Nem engedélyezi a megtekintést secrets, mert read a titkos kódokra vonatkozó engedély lehetővé teszi a névtérben lévő hitelesítő adatok elérését ServiceAccount , ami lehetővé teszi az API-hozzáférést a névtérben ( ServiceAccount 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.
Lehetővé teszi a podok névtérbeli bármelyként ServiceAccount való secrets elérését és futtatását, így a névtér bármely api-hozzáférési ServiceAccount szintjének megszerzéséhez használható.
Azure Arc Kubernetes-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.
Nem engedélyezi az írási hozzáférést az erőforráskvóta vagy a névtér számára.
Az Azure Arc Kubernetes-fürt rendszergazdája Lehetővé teszi, hogy a "felügyelő" bármilyen műveletet végrehajtson 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 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 bárhonnan elérhető legyen proxy móddal a parancs használatávalaz connectedk8s proxy, szüksége van a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/műveletre, amely az Azure Arc-kompatibilis Kubernetes-fürt felhasználói szerepkör-engedélyében szerepel.

Futtassa a következő lépéseket egy másik ügyféleszközön:

  1. Bejelentkezés Microsoft Entra-hitelesítéssel

  2. 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.

  3. 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"

Következő lépések