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


Hozzáférés szabályozása a Windows Serverhez készült Microsoft Entra ID és Kubernetes RBAC használatával

A következőkre vonatkozik: AKS on Azure Stack HCI 22H2, AKS on Windows Server

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 microsoft Entra hitelesítési jogkivonat használatával jelentkezik be egy Kubernetes-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 azt ismerteti, hogyan szabályozható a hozzáférés a Kubernetes RBAC használatával egy Kubernetes-fürtben a Microsoft Entra csoporttagság alapján az AKS Arcban. Egy bemutatócsoportot és felhasználókat hozhat létre a Microsoft Entra ID-ban. Ezután szerepköröket és szerepkörkötéseket hozhat létre a fürtben, hogy megfelelő engedélyeket adjon az erőforrások létrehozásához és megtekintéséhez.

Előfeltételek

Mielőtt beállítja a Kubernetes RBAC-t a Microsoft Entra ID használatával, a következő előfeltételekre van szüksége:

  • Az AKS Arcban létrehozott Kubernetes-fürt. Ha be kell állítania a fürtöt, tekintse meg a Windows Felügyeleti központ vagy a PowerShell AKS üzembe helyezésére vonatkozó utasításait.
  • Azure Arc-kapcsolat. Azure Arc-kapcsolattal kell rendelkeznie a Kubernetes-fürthöz. Az Azure Arc engedélyezésével kapcsolatos információkért lásd : Azure Stack HCI-fürtön futó Azure Kubernetes Service csatlakoztatása az Azure Arc-kompatibilis Kuberneteshez.
  • A következő parancssori eszközökhöz kell hozzáférnie:
    • Az Azure CLI és a connectedk8s bővítmény. Az Azure CLI az Azure-erőforrások létrehozásához és kezeléséhez használt parancsok készlete. Annak ellenőrzéséhez, hogy rendelkezik-e az Azure CLI-vel, nyisson meg egy parancssori eszközt, és írja be a következőt: az -v. Telepítse a connectedk8s bővítményt is, hogy csatornát nyisson a Kubernetes-fürthöz. A telepítési utasításokért lásd : Az Azure CLI telepítése.
    • Kubectl. Ez a Kubernetes parancssori eszköz lehetővé teszi a Kubernetes-fürtöket célzó parancsok futtatását. A kubectl telepítésének ellenőrzéséhez nyisson meg egy parancssort, és írja be a következőt: kubectl version --client. Győződjön meg arról, hogy a Kubectl-ügyfél verziója legalább 1.24.0-s verziójú. A telepítési utasításokért lásd: kubectl.
    • A PowerShell és az AksHci PowerShell modul. A PowerShell egy platformfüggetlen feladatautomatizálási megoldás, amely egy parancssori rendszerhéjból, egy szkriptelési nyelvből és egy konfigurációkezelési keretrendszerből áll. Ha telepítette az AKS Arcot, hozzáférhet az AksHci PowerShell-modulhoz.
    • Ahhoz, hogy a Kubernetes-fürt bárhonnan elérhető legyen proxy móddal a parancs használatávalaz connectedk8s proxy, a Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action fájlra van szükség, 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ényeinek.

Választható első lépések

Ha még nem rendelkezik tagokat tartalmazó Microsoft Entra-csoporttal, érdemes lehet létrehozni egy csoportot, és felvenni néhány tagot, hogy követni tudja a cikkben leírt utasításokat.

A Microsoft Entra ID és a Kubernetes RBAC használatának bemutatásához létrehozhat egy Microsoft Entra-csoportot az alkalmazásfejlesztők számára, amely bemutatja, hogyan szabályozza a Kubernetes RBAC és a Microsoft Entra ID a fürterőforrásokhoz való hozzáférést. Éles környezetben meglévő felhasználókat és csoportokat használhat egy Microsoft Entra-bérlőn belül.

Bemutatócsoport létrehozása a Microsoft Entra-azonosítóban

Először hozza létre a csoportot a Microsoft Entra-azonosítóban a bérlőben a parancsot használó az ad group create alkalmazásfejlesztők számára. Az alábbi példa arra kéri, hogy jelentkezzen be az Azure-bérlőbe, majd létrehoz egy appdev nevű csoportot:

az login
az ad group create --display-name appdev --mail-nickname appdev

Felhasználók hozzáadása a csoporthoz

A Microsoft Entra ID-ban az alkalmazásfejlesztők számára létrehozott példacsoporttal adjon hozzá egy felhasználót a appdev csoporthoz. Ezzel a felhasználói fiókkal bejelentkezhet az AKS-fürtbe, és tesztelheti a Kubernetes RBAC-integrációt.

Adjon hozzá egy felhasználót az előző szakaszban létrehozott appdev-csoporthoz a az ad group member add paranccsal. Ha kilép a munkamenetből, csatlakozzon újra az Azure-hoz a az login.

$AKSDEV_ID = az ad user create --display-name <name> --password <strongpassword> --user-principal-name <name>@contoso.onmicrosoft.com
az ad group member add --group appdev --member-id $AKSDEV_ID

Egyéni Kubernetes RBAC-szerepkörkötés létrehozása a Microsoft Entra-csoport AKS-fürterőforrásán

Konfigurálja az AKS-fürtöt úgy, hogy a Microsoft Entra-csoport hozzáférhessen a fürthöz. Ha csoportokat és felhasználókat szeretne hozzáadni, olvassa el a Bemutatócsoportok létrehozása a Microsoft Entra ID-ban című témakört.

  1. Kérje le a fürt rendszergazdai hitelesítő adatait a Get-AksHciCredential következő paranccsal:

    Get-AksHciCredential -name <name-of-your-cluster>
    
  2. Hozzon létre egy névteret a Kubernetes-fürtben a kubectl create namespace paranccsal. Az alábbi példa létrehoz egy névteret:dev

    kubectl create namespace dev
    

    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 az engedélyeket. Ezek a hozzárendelések alkalmazhatók egy adott névtérre vagy egy teljes fürtre. További információ: Kubernetes RBAC-hitelesítés használata.

    Hozzon létre egy szerepkört a fejlesztői névtérhez. Ez a szerepkör teljes engedélyeket biztosít a névtérhez. Éles környezetekben célszerű részletesebb engedélyeket megadni a különböző felhasználókhoz vagy csoportokhoz.

  3. Hozzon létre egy role-dev-namespace.yaml nevű fájlt, és másolja/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: ["*"]
    
  4. 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
    
  5. 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 a RoleBinding tárgyaként van beállítva:

    az ad group show --group appdev --query objectId -o tsv
    

    A az ad group show parancs a következőként használt értéket adja groupObjectIdvissza:

    38E5FA30-XXXX-4895-9A00-050712E3673A
    
  6. Hozzon létre egy rolebinding-dev-namespace.yaml nevű fájlt, és másolja/illessze be a következő YAML-jegyzékfájlt. Létre kell hoznia azt a szerepkör-kötést, amely lehetővé teszi az appdev-csoport számára a role-dev-namespace szerepkör névtér-hozzáféréshez való használatát. Az utolsó sorban cserélje le groupObjectId a parancs által létrehozott csoportobjektum-azonosítóra az ad group show :

    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 kind: User és cserélje le groupObjectId a mintában szereplő egyszerű felhasználónevet (UPN).

  7. 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
    
    rolebinding.rbac.authorization.k8s.io/dev-user-access created
    

Beépített Kubernetes RBAC-szerepkörök használata az AKS-fürterőforráshoz

A Kubernetes beépített felhasználói szerepköröket is biztosít. Ezek a beépített szerepkörök a következők:

  • Felügyelői szerepkörök (fürt-rendszergazda)
  • A FürtroleBindings használatával fürtszintű szerepköröket kívánnak biztosítani
  • Szerepkörök adott névtereken belül a RoleBindings használatával (rendszergazdai, szerkesztési, megtekintési)

A beépített Kubernetes RBAC-szerepkörökkel kapcsolatos további információkért tekintse meg a Kubernetes RBAC felhasználói szerepköreit.

Felhasználói szerepkörök

Alapértelmezett ClusterRole Alapértelmezett ClusterRoleBinding Leírás
fürt-rendszergazda system:masters group Lehetővé teszi a felügyelői hozzáférést, hogy bármilyen műveletet végrehajtson bármely erőforráson. A ClusterRoleBindingben való használat esetén ez a szerepkör teljes körű ellenőrzést biztosít a fürt és az összes névtér összes erőforrása felett. A RoleBindingben való használat esetén teljes körű vezérlést biztosít a szerepkör-kötés névterében lévő összes erőforrás felett, beleértve magát a névteret is.
felügyelet Egyik sem Lehetővé teszi a rendszergazdai hozzáférést, amely egy névtéren belül, szerepkör-kötéssel adható meg. Ha egy szerepkör-kötésben használják, olvasási/írási hozzáférést biztosít a névtérben 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. Ez a szerepkör nem teszi lehetővé az írási hozzáférést a Kubernetes v1.22+ verzióval létrehozott fürtök végpontjaihoz. További információ: Hozzáférés írása végpontokhoz.
Szerkesztés... Egyik sem 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 titkos kódok elérését és a podok futtatását, mint bármely ServiceAccount a névtérben, így a névtér bármely ServiceAccount API-hozzáférési szintjének megszerzésére használható. Ez a szerepkör nem teszi lehetővé az írási hozzáférést a Kubernetes v1.22+ verzióval létrehozott fürtök végpontjaihoz. További információ: Hozzáférés írása végpontokhoz.
megtekintés Egyik sem 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 titkos kódok megtekintését, 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).

Beépített Kubernetes RBAC-szerepkör használata a Microsoft Entra ID-val

Ha egy beépített Kubernetes RBAC-szerepkört szeretne használni a Microsoft Entra ID-val, kövesse az alábbi lépéseket:

  1. Alkalmazza a beépített Kubernetes RBAC-szerepkört view a Microsoft Entra-csoportra:

    kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --group=<Azure AD group object ID>
    
  2. Alkalmazza a beépített Kubernetes RBAC-szerepkört view minden Microsoft Entra-felhasználóra:

    kubectl create clusterrolebinding <name of your cluster role binding> --clusterrole=view --user=<Azure AD user object ID>
    

Fürterőforrások használata Microsoft Entra-azonosítókkal

Most tesztelje a várt engedélyeket, amikor erőforrásokat hoz létre és kezel egy Kubernetes-fürtben. Ezekben a példákban a podokat a felhasználó hozzárendelt névterében ütemezheti és tekintheti meg. Ezután próbálja meg ütemezni és megtekinteni a podokat a hozzárendelt névtéren kívül.

  1. Jelentkezzen be az Azure-ba a $AKSDEV_ID parancs bemeneteként az ad group member add megadott felhasználói fiókkal. Futtassa a az connectedk8s proxy parancsot a fürt csatornájának megnyitásához:

    az connectedk8s proxy -n <cluster-name> -g <resource-group>
    
  2. A proxycsatorna létrehozása után nyisson meg egy másik munkamenetet, és ütemezzen egy 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
    

    Az NGINX sikeres ütemezésekor a következő kimenetnek kell megjelennie:

    pod/nginx-dev created
    
  3. Most használja a parancsot a kubectl get pods névtérben lévő dev podok megtekintéséhez:

    kubectl get pods --namespace dev
    

    Ha az NGINX sikeresen fut, a következő kimenetnek kell megjelennie:

    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

A dev névtéren kívüli podok megtekintéséhez használja a kubectl get pods következő jelölőt--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. Az engedély nélkül a parancs hibát okoz:

Error from server (Forbidden): pods is forbidden: User cannot list resource "pods" in API group "" at the cluster scope

Következő lépések