Sdílet prostřednictvím


Použití řízení přístupu na základě role v Azure (RBAC) pro autorizaci Kubernetes

Platí pro: AKS v Azure Stack HCI 23H2

Správci infrastruktury můžou pomocí řízení přístupu na základě role v Azure (Azure RBAC) řídit, kdo má přístup k souboru kubeconfig a jaká oprávnění mají. Operátoři Kubernetes můžou pracovat s clustery Kubernetes pomocí nástroje kubectl na základě daných oprávnění. Azure CLI poskytuje snadný způsob, jak získat přístupové přihlašovací údaje a konfigurační soubor kubeconfig pro připojení ke clusterům AKS pomocí kubectl.

Pokud používáte integrované ověřování mezi ID Microsoft Entra a AKS, můžete jako předměty použít uživatele, skupiny nebo instanční objekty Microsoftu jako předměty řízení přístupu na základě role Kubernetes (Kubernetes RBAC). Tato funkce vám umožňuje samostatně spravovat identity uživatelů a přihlašovací údaje pro Kubernetes. Přesto ale musíte nastavit a spravovat Azure RBAC a RBAC Kubernetes samostatně.

Tento článek popisuje, jak používat Azure RBAC pro autorizaci clusteru Kubernetes s id Microsoft Entra a přiřazeními rolí Azure.

Koncepční přehled najdete v tématu Azure RBAC pro autorizaci Kubernetes pro AKS povolenou službou Azure Arc.

Než začnete

Než začnete, ujistěte se, že máte následující požadavky:

  • AKS v Azure Stack HCI 23H2 v současné době podporuje povolení Azure RBAC pouze během vytváření clusteru Kubernetes. Po vytvoření clusteru Kubernetes nemůžete azure RBAC povolit.

  • Nainstalujte nejnovější verzi rozšíření aksarc a connectedk8s Azure CLI. Pokud chcete povolit Azure RBAC, musíte spustit rozšíření aksarc verze 1.1.1 nebo novější. Spuštěním vyhledejte az --version aktuální verzi. Pokud potřebujete nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI.

    az extension add --name aksarc
    az extension add --name connectedk8s
    

    Pokud jste rozšíření už nainstalovali aksarc , aktualizujte rozšíření na nejnovější verzi:

    az extension update --name aksarc
    az extension update --name connectedk8s
    
  • Pokud chcete pracovat s clustery Kubernetes, musíte nainstalovat kubectl a kubelogin.

  • K povolení Azure RBAC při vytváření clusteru Kubernetes potřebujete následující oprávnění:

    • K vytvoření clusteru Kubernetes potřebujete roli Přispěvatel arc služby Azure Kubernetes Service.
    • Pokud chcete použít --enable-azure-rbac parametr, potřebujete roli správce řízení přístupu na základě role pro přístup k oprávnění Microsoft.Authorization/roleAssignments/write . Další informace najdete v tématu Předdefinované role v Azure.
    • Rozšíření nových přiřazení rolí může trvat až pět minut, než se autorizační server aktualizuje.
  • Jakmile je Azure RBAC povolený, můžete ke clusteru Kubernetes přistupovat s danými oprávněními pomocí přímého režimu nebo režimu proxy serveru.

    • Pokud chcete získat přístup ke clusteru Kubernetes přímo pomocí az aksarc get-credentials příkazu, potřebujete akci Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, která je součástí oprávnění uživatele clusteru Azure Kubernetes Service Arc.
    • Pokud chcete přistupovat ke clusteru Kubernetes odkudkoli pomocí režimu proxy serveru pomocí az connectedk8s proxy příkazu nebo z webu Azure Portal, potřebujete akci Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action , která je součástí oprávnění role uživatele clusteru Kubernetes s podporou Azure Arc. Mezitím musíte ověřit, že agenti a počítač provádějící proces onboardingu splňují síťové požadavky stanovené v síťových požadavcích Kubernetes s podporou Azure Arc.
  • Pokud chcete použít kubectl, můžete k němu přistupovat pomocí Azure RBAC nebo skupiny pro správu AAD.

    • Pokud chcete použít kubectl s Azure RBAC, potřebujete roli Prohlížeče Kubernetes Azure Arc vymezenou na připojený prostředek clusteru.
    • Pokud chcete použít kubectl se skupinou pro správu AAD, nepotřebujete žádnou konkrétní roli, ale musíte se ujistit, že jste v některé ze skupin v seznamu skupin doplňků pro prostředek připojeného clusteru.

Krok 1: Vytvoření clusteru Kubernetes s podporou Azure RBAC

Můžete vytvořit cluster Kubernetes s podporou Azure RBAC pro autorizaci a ID Microsoft Entra pro ověřování.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

Krok 2: Vytvoření přiřazení rolí pro uživatele pro přístup ke clusteru

Služba AKS povolená službou Azure Arc poskytuje následující předdefinované role:

Role Popis
Prohlížeč Kubernetes Azure Arc Umožňuje přístup jen pro čtení k zobrazení většiny objektů v oboru názvů.
Nepovoluje zobrazování rolí nebo vazeb rolí.
Nepovoluje prohlížení secrets, protože read oprávnění k tajným kódům umožňují přístup k ServiceAccount přihlašovacím údajům v oboru názvů, což umožňuje přístup k rozhraní API jako jakýkoliv ServiceAccount v oboru názvů (forma eskalace oprávnění).
Azure Arc Kubernetes Writer Umožňuje přístup pro čtení a zápis k většině objektů v oboru názvů.
Nepovoluje zobrazení nebo úpravu rolí nebo vazeb rolí.
Umožňuje přistupovat secrets k podům a spouštět je jako jakýkoliv ServiceAccount v oboru názvů, takže ho můžete použít k získání úrovní přístupu rozhraní API libovolného ServiceAccount v oboru názvů.
Správce Kubernetes Azure Arc Umožňuje přístup správce, který má být udělen v rámci oboru názvů.
Umožňuje přístup pro čtení a zápis k většině prostředků v oboru názvů (nebo oboru clusteru), včetně možnosti vytvářet role a vazby rolí v rámci oboru názvů.
Nepovoluje přístup k zápisu do kvóty prostředků ani k samotnému oboru názvů.
Správce clusteru Azure Arc Kubernetes Umožňuje přístup superuživatele k provedení jakékoli akce u libovolného prostředku.
Poskytuje úplnou kontrolu nad všemi prostředky v clusteru a ve všech oborech názvů.

Pomocí příkazu můžete az role assignment create vytvořit přiřazení rolí.

Nejprve získejte $ARM-ID pro cílový cluster, ke kterému chcete přiřadit roli.

$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)

Potom pomocí az role assignment create příkazu přiřaďte role ke clusteru Kubernetes. Musíte zadat $ARM_ID z prvního kroku a assignee-object-id pro tento krok. Může assignee-object-id to být ID Microsoft Entra nebo ID klienta instančního objektu.

Následující příklad přiřadí roli Čtenář Kubernetes Azure Arc ke clusteru Kubernetes:

az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID

V tomto příkladu je obor ID Azure Resource Manageru clusteru. Může to být také skupina prostředků obsahující cluster Kubernetes.

Vytváření vlastních definic rolí

Můžete si vytvořit vlastní definici role pro použití v přiřazeních rolí.

Následující příklad ukazuje definici role, která uživateli umožňuje pouze čtení nasazení. Další informace najdete v úplném seznamu akcí dat, které můžete použít k vytvoření definice role. Další informace o vytvoření vlastní role najdete v tématu Postup vytvoření vlastní role.

Pokud chcete vytvořit vlastní definice rolí, zkopírujte následující objekt JSON do souboru s názvem custom-role.json. <subscription-id> Zástupný symbol nahraďte skutečným ID předplatného. Vlastní role používá jednu z akcí dat a umožňuje zobrazit všechna nasazení v oboru (clusteru nebo oboru názvů), ve kterém se přiřazení role vytvoří.

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

Informace o vlastních rolích a jejich vytváření najdete v tématu Vlastní role Azure.

Pomocí příkazu vytvořte definici az role definition create role a nastavte --role-definition parametr na deploy-view.json soubor, který jste vytvořili v předchozím kroku:

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

Pomocí příkazu přiřaďte definici role uživateli nebo jiné identitě az role assignment create :

az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID

Krok 3: Přístup ke clusteru Kubernetes

Ke clusteru Kubernetes teď můžete přistupovat s danými oprávněními pomocí přímého režimu nebo režimu proxy serveru.

Přístup ke clusteru pomocí kubectl (přímý režim)

Pro přístup ke clusteru Kubernetes s danými oprávněními potřebuje operátor Kubernetes microsoft Entra kubeconfig, který můžete získat pomocí az aksarc get-credentials příkazu. Tento příkaz poskytuje přístup k kubeconfig založenému na správci a také k kubeconfigu založenému na uživatelích. Soubor kubeconfig založený na správci obsahuje tajné kódy a měl by se bezpečně ukládat a pravidelně obměňovat. Na druhé straně uživatel-based Microsoft Entra ID kubeconfig neobsahuje tajné kódy a lze je distribuovat uživatelům, kteří se připojují ze svých klientských počítačů.

Ke spuštění tohoto příkazu Azure CLI potřebujete microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, která je součástí oprávnění role uživatele clusteru Azure Kubernetes Service Arc:

az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>

Teď můžete ke správě clusteru použít kubectl. Můžete například vypsat uzly v clusteru pomocí kubectl get nodes. Při prvním spuštění se musíte přihlásit, jak je znázorněno v následujícím příkladu:

kubectl get nodes

Přístup ke clusteru z klientského zařízení (režim proxy serveru)

Pokud chcete získat přístup ke clusteru Kubernetes odkudkoli s režimem proxy pomocí az connectedk8s proxy příkazu, potřebujete oprávnění role uživatele clusteru Kubernetes s podporou Služby Kubernetes/connectedClusters/listClusterUserCredential/action, která je součástí role uživatele clusteru Kubernetes s podporou Azure Arc.

Na jiném klientském zařízení spusťte následující kroky:

  1. Přihlášení pomocí ověřování Microsoft Entra

  2. Získejte kubeconfig pro připojení clusteru potřebný ke komunikaci s clusterem odkudkoli (dokonce i mimo bránu firewall kolem clusteru):

    az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

    Poznámka:

    Tento příkaz otevře proxy server a zablokuje aktuální prostředí.

  3. V jiné relaci prostředí použijte kubectl k odesílání požadavků do clusteru:

    kubectl get pods -A
    

Teď by se měla zobrazit odpověď z clusteru obsahujícího seznam všech podů v default oboru názvů.

Další informace najdete v tématu Přístup ke clusteru z klientského zařízení.

Vyčištění prostředků

Odstranit přiřazení role

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

Odstranění definice role

az role definition delete -n "AKS Arc Deployment Reader"

Další kroky