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


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

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.

Feljegyzés

A Microsoft Entra ID és az AKS közötti integrált hitelesítés használatakor a Microsoft Entra-felhasználókat, csoportokat vagy szolgáltatásneveket használhatja a Kubernetes szerepköralapú hozzáférés-vezérlésének (Kubernetes RBAC) tantárgyaiként. Ezzel a funkcióval nem kell külön kezelnie a Kubernetes felhasználói identitásait és hitelesítő adatait. Az Azure RBAC-t és a Kubernetes RBAC-t azonban külön kell beállítania és kezelnie.

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 kubectlrá, 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ául Microsoft.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

  1. Hozzon létre egy Azure-erőforráscsoportot a az group create paranccsal.

    export RESOURCE_GROUP=<resource-group-name>
    export LOCATION=<azure-region>
    
    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. 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.

    export CLUSTER_NAME=<cluster-name>
    
    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --enable-aad \
        --enable-azure-rbac \
        --generate-ssh-keys
    

    A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:

    "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

  • Engedélyezze az Azure RBAC for Kubernetes-hitelesítést egy meglévő AKS-fürtön a az aks update --enable-azure-rbac jelölővel ellátott paranccsal.

    az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --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 $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
    

Beépített AKS-szerepkörök

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.
Az Azure Kubernetes Service RBAC-fürt rendszergazdája 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.

Szerepkör-hozzárendelések létrehozása fürthozzáféréshez

  1. Kérje le az AKS-erőforrás-azonosítót a az aks show paranccsal.

    AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
    
  2. 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 alábbi példa létrehoz egy szerepkör-hozzárendelést az Azure Kubernetes Service RBAC-rendszergazdai szerepkörhöz.

    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>
    

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.

  1. 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>"
        ]
    }
    
  2. 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 
    
  3. 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

  1. 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 $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Mostantól kezelheti kubectl a fürtöt. Listázhatja például a fürt csomópontjait a használatával kubectl get nodes.

    kubectl get nodes
    

    Példa a kimenetre:

    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 az olyan forgatókönyvek blokkolását, mint a nem interaktív bejelentkezések, a régebbi kubectl verziók vagy az egyszeri bejelentkezés használata több fürtön anélkül, hogy új fürtbe kellene bejelentkeznie.

  1. Használja a kubelogin beépülő modult a következő parancs futtatásával:

    export KUBECONFIG=/path/to/kubeconfig
    kubelogin convert-kubeconfig
    
  2. Mostantól kezelheti kubectl a fürtöt. Listázhatja például a fürt csomópontjait a használatával kubectl get nodes.

    kubectl get nodes
    

    Példa a kimenetre:

    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

  1. Szerepkör-hozzárendelések listázása a az role assignment list parancs használatával.

    az role assignment list --scope $AKS_ID --query [].id --output tsv
    
  2. Szerepkör-hozzárendelések törlése a az role assignment delete paranccsal.

    az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
    

Szerepkördefiníció törlése

  • Törölje az egyéni szerepkördefiníciót a az role definition delete paranccsal.

    az role definition delete --name "AKS Deployment Reader"
    

Erőforráscsoport és AKS-fürt törlése

  • Törölje az erőforráscsoportot és az AKS-fürtöt a az group delete paranccsal.

    az group delete --name $RESOURCE_GROUP --yes --no-wait
    

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: