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

Ha a Microsoft Entra ID és az AKS közötti integrált hitelesítést használja, 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) alanyaké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 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.

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

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

az group create --name myResourceGroup --location westus2

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.

az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac

A kimenet a következő példakimenethez hasonlóan fog kinézni:

"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

Adja hozzá az Azure RBAC for Kubernetes Authorizationt egy meglévő AKS-fürthöz a az aks updateenable-azure-rbac jelölővel ellátott paranccsal.

az aks update -g myResourceGroup -n myAKSCluster --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 updatedisable-azure-rbac jelölővel ellátott paranccsal.

az aks update -g myResourceGroup -n myAKSCluster --disable-azure-rbac

Szerepkör-hozzárendelések létrehozása a felhasználók számára a fürt eléréséhez

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.
Azure Kubernetes Service RBAC-fürt Rendszergazda 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.

A teljes AKS-fürtre vonatkozó szerepkör-hozzárendelések elvégezhetők a fürterőforrás Hozzáférés-vezérlés (IAM) paneljén az Azure Portalon, vagy az alábbi Azure CLI-parancsokkal:

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

AKS_ID=$(az aks show -g myResourceGroup -n myManagedCluster --query id -o tsv)

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

Feljegyzés

Az Azure Portalon a kívánt névtérre hatókörrel rendelkező szerepkör-hozzárendelések létrehozása után a névtérhez tartozó "szerepkör-hozzárendelések" nem láthatók a hatókörben. Ezt a parancs használatával, vagy egy az role assignment list olyan felhasználó vagy csoport szerepkör-hozzárendeléseinek listázásával találja meg, amelyhez a szerepkört hozzárendelte.

az role assignment list --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.

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>"
    ]
}

Hozza létre a szerepkördefiníciót a az role definition create paranccsal, és állítsa az --role-definitiondeploy-view.json előző lépésben létrehozott fájlra.

az role definition create --role-definition @deploy-view.json 

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

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 -g myResourceGroup -n myManagedCluster

Most már használhatja kubectl a fürt kezelésé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 a következő példában látható módon:

kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

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 a további forgatókönyveket, például a nem interaktív bejelentkezéseket, a régebbi kubectl verziókat vagy az egyszeri bejelentkezés használatát több fürtön anélkül, hogy új fürtbe kellene bejelentkeznie.

A beépülő modult az kubelogin alábbi parancs futtatásával használhatja:

export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig

kubectlEhhez hasonlóan az első futtatáskor be kell jelentkeznie a következő példában látható módon:

kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

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

# List role assignments
az role assignment list --scope $AKS_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 Deployment Reader"

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

az group delete -n myResourceGroup

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: