Share via


Hozzáférés szabályozása Microsoft Entra ID és Kubernetes RBAC használatával az Azure Arc által engedélyezett AKS-ben

A következőkre vonatkozik: AKS az Azure Stack HCI 22H2-n, AKS Windows Serveren

Azure Kubernetes Service (AKS) konfigurálható úgy, hogy Microsoft Entra ID használjon a felhasználói hitelesítéshez. Ebben a konfigurációban egy Microsoft Entra hitelesítési jogkivonattal jelentkezik be egy Kubernetes-fürtbe. A hitelesítést követően 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 az AKS Arc-csoporttagság Microsoft Entra alapján. Létrehozhat egy bemutatócsoportot és felhasználókat Microsoft Entra ID. Ezután szerepköröket és szerepkörkötéseket hozhat létre a fürtön, hogy megfelelő engedélyeket biztosítson az erőforrások létrehozásához és megtekintéséhez.

Előfeltételek

Mielőtt beállítja a Kubernetes RBAC-t Microsoft Entra identitással, a következőkre van szüksége:

  • Az AKS Arcban létrehozott Kubernetes-fürt

    Létre kell hoznia egy Kubernetes-fürtöt az AKS Arcban. Ha be kell állítania a fürtöt, útmutatást talál az AKS üzembe helyezéséhez Windows Admin Center vagy PowerShell használatával.

  • Azure Arc-kapcsolat

    Azure Arc-kapcsolattal kell rendelkeznie a Kubernetes-fürthöz. További információ az Azure Arc engedélyezéséről: Azure Kubernetes Service csatlakoztatása az Azure Stack HCI-fürtön 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 parancssori felület (Azure CLI) az Azure-erőforrások létrehozására és kezelésére szolgáló parancsok és szkriptek gyűjteménye. 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. Emellett telepítenie kell a connectedk8s bővítményt , 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

      A Kubernetes parancssori eszköze, a kubectl lehetővé teszi a Kubernetes-fürtökre irányuló parancsok futtatását. Annak ellenőrzéséhez, hogy telepítette-e a kubectl-et, nyisson meg egy parancssori eszközt, é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 v1.24.0.

      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 parancssori rendszerhéjból, szkriptelési nyelvből és konfigurációkezelési keretrendszerből áll. Ha telepítette az AKS Arcot, hozzáférhet az AksHci PowerShell-modulhoz.

Választható első lépések

Ha még nem rendelkezik tagokat tartalmazó Microsoft Entra csoportokkal, érdemes lehet létrehozni egy csoportot, és felvenni néhány tagot, hogy követni tudja a jelen cikkben található 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 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ás Microsoft Entra ID

Először hozza létre a csoportot Microsoft Entra ID a bérlőben az alkalmazásfejlesztők számára az az ad group create paranccsal. Az alábbi példában bejelentkezik 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

Az alkalmazásfejlesztők számára létrehozott Microsoft Entra ID-ben létrehozott példacsoporttal adjunk hozzá egy felhasználót a appdev csoporthoz. Ezzel a felhasználói fiókkal jelentkezhet be 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 az az ad group member add paranccsal. Ha kilép a munkamenetből, csatlakozzon újra az Azure-hoz a használatával 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ás 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érjen a fürthöz. Ha csoportokat és felhasználókat szeretne hozzáadni, tekintse meg Létrehozás bemutatócsoportokat Microsoft Entra ID.

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

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

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

    Létrehozás a dev névtér szerepkörét. Ez a szerepkör teljes körű engedélyeket ad a névtérhez. Éles környezetekben érdemes részletesebb engedélyeket megadni a különböző felhasználókhoz vagy csoportokhoz.

  3. Létrehozás egy role-dev-namespace.yaml nevű fájlt, és 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. Létrehozás a szerepkört a kubectl apply paranccsal, és adja meg a YAML-jegyzékfájl fájlnevét:

    kubectl apply -f role-dev-namespace.yaml
    
  5. Kérje le az appdev csoport erőforrás-azonosítóját az 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álni groupObjectIdkívánt értéket adja vissza:

    38E5FA30-XXXX-4895-9A00-050712E3673A
    
  6. Létrehozás egy rolebinding-dev-namespace.yaml nevű fájlt, és illessze be a következő YAML-jegyzékfájlba. Létrehoz egy szerepkörkötést, amely lehetővé teszi az appdev-csoport számára, hogy a szerepkört használja a role-dev-namespace névtér eléréséhez. Az utolsó sorban cserélje le a elemet groupObjectId a parancs által az ad group show létrehozott csoportobjektum-azonosítóra.

    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ó számára szeretné létrehozni a RoleBindinget , adja meg kind: User és cserélje le a elemet groupObjectId a mintában szereplő egyszerű felhasználónévre (UPN).

  7. Létrehozás a RoleBindinget a kubectl apply paranccsal, é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 clusterRoleBindings használatával fürtszintű jogosultságot biztosítani kívánt szerepkörök
  • Szerepkörbindings (rendszergazda, szerkesztés, megtekintés) használatával adott névtereken belül adható szerepkörök

A beépített Kubernetes RBAC-szerepkörökkel kapcsolatos további információkért lásd: Kubernetes RBAC felhasználói szerepkörök

Felhasználói szerepkörök

Alapértelmezett ClusterRole Alapértelmezett ClusterRoleBinding Description
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ű vezérlést biztosít a fürtben és az összes névtérben található összes erőforrás 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 None Lehetővé teszi a rendszergazdai hozzáférést, amelyet egy névtéren belül szeretne biztosítani egy szerepkörkötés használatával. Ha 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örkötések névtéren belüli létrehozásának képességét. Ez a szerepkör nem teszi lehetővé az írási hozzáférést az erőforráskvóta vagy magához a névtérhez. Ez a szerepkör nem engedélyezi az írási hozzáférést a Kubernetes v1.22+ használatával létrehozott fürtök végpontjaihoz. További információ: Írási hozzáférés végpontokhoz.
szerkesztés None 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 bármely ServiceAccountként való futtatását 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 engedélyezi az írási hozzáférést a Kubernetes v1.22+ használatával létrehozott fürtök végpontjaihoz. További információ: Írási hozzáférés végpontokhoz.
Nézd None Írásvédett hozzáférés engedélyezése a névtérben lévő objektumok többségének megtekintéséhez. 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 kulcsok 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 bármely ServiceAccountként a névtérben (a jogosultságok eszkalálásának egy formája).

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

Ha beépített Kubernetes RBAC-szerepkört szeretne használni Microsoft Entra ID, hajtsa végre 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 identitások használatával

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

  1. Jelentkezzen be az Azure-ba azzal a $AKSDEV_ID felhasználói fiókkal, amelyet a az ad group member add parancs bemeneteként adott át. az connectedk8s proxy A parancs futtatásával nyisson meg egy csatornát a fürt számára:

    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 paranccsal a dev névtérben:

    kubectl run nginx-dev --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --namespace dev
    

    Az NGINX sikeres ütemezése után a következő kimenet jelenik meg:

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

    kubectl get pods --namespace dev
    

    Ha az NGINX sikeresen fut, a következő kimenet jelenik meg:

    $ kubectl get pods --namespace dev
    
    NAME        READY   STATUS    RESTARTS   AGE
    nginx-dev   1/1     Running   0          4m
    

fürterőforrások Létrehozás é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 parancsot a --all-namespaces jelzővel.

kubectl get pods --all-namespaces

A felhasználó csoporttagságához nincs olyan Kubernetes-szerepkör, amely lehetővé teszi ezt a műveletet. Engedély nélkül a parancs hibát jelez.

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

Következő lépések