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 Local

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 subjekty v řízení přístupu na základě role Kubernetes (Kubernetes RBAC) použít uživatele, skupiny nebo instanční objekty Microsoft Entra. 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.

Pro koncepční přehled viz Azure RBAC pro autorizaci Kubernetes pro AKS aktivovanou pomocí Azure Arc.

Než začnete

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

  • AKS v Azure Local 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.

  • Azure RBAC můžete povolit pomocí Azure CLI nebo webu Azure Portal. Pokud chcete použít Azure CLI, musíte nainstalovat nejnovější verze rozšíření Azure CLI a aksarc a connectedk8s . Mějte na paměti, že k povolení Azure RBAC potřebujete rozšíření aksarc verze 1.1.1 nebo novější. Spusťte az --version pro zjištění aktuální verze. 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 se vyžadují následující oprávnění:

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

AKS Arc poskytuje následující pět předdefinovaných rolí. Jsou podobné předdefinovaným rolím Kubernetes s několika rozdíly, jako je podpora CRD. Podívejte se na úplný seznam akcí povolených každou integrovanou rolí Azure.

Role Popis
Uživatel clusteru Kubernetes s podporou Azure Arc Umožňuje načíst kubeconfig soubor na technologii Cluster Connect pro správu clusterů odkudkoli.
Prohlížeč Kubernetes Azure Arc Umožňuje přístup jen pro čtení k většině objektů v jmenném prostoru.
Nepovoluje zobrazování tajných kódů, protože oprávnění ke čtení tajných kódů umožňuje přístup k přihlašovacím údajům ServiceAccount v oboru názvů. Tyto přihlašovací údaje zase umožňují přístup k rozhraní API prostřednictvím této hodnoty ServiceAccount (forma eskalace oprávnění).
Azure Arc Kubernetes Writer Umožňuje přístup pro čtení a zápis k většině objektů v jmenném prostoru.
Nepovoluje zobrazení nebo úpravu rolí nebo vazeb rolí. Tato role však umožňuje přístup k tajemstvím a spouštění pods ve formě jakéhokoli ServiceAccount v oboru názvů, takže ji lze 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. Účelem je udělit v rámci oboru názvů prostřednictvím roleBinding. Pokud ji použijete ve vazbě rolí, umožní přístup pro čtení a zápis k většině prostředků v oboru názvů, včetně možnosti vytvářet role a vazby rolí v rámci oboru názvů. Tato role neumožňuje zápis kvóty prostředků ani přístup 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. Když ji použijete v ClusterRoleBinding, zajišťuje úplnou kontrolu nad každým prostředkem v clusteru a ve všech oborech názvů. Když ji použijete v RoleBinding, poskytuje plnou kontrolu nad každým prostředkem v oboru názvů RoleBinding, včetně samotného oboru 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 to být assignee-object-id ID Microsoft Entra nebo ID klienta služebního objektu.

Následující příklad přiřadí roli Prohlížeč Kubernetes Azure Arc na cluster Kubernetes:

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

V tomto příkladu je rozsah 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 soubordeploy-view.json , 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 svému 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 kubeconfigu založenému na správci, stejně jako k kubeconfigu založenému na uživateli. Soubor kubeconfig založený na administraci obsahuje tajné informace a měl by být bezpečně uložen a pravidelně měněn. Na druhé straně konfigurační soubor kubeconfig pro Microsoft Entra ID založený na uživatelích neobsahuje žádná tajemství a může být distribuován uživatelům, kteří se připojují ze svých klientských strojů.

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 pomocí kubectl get nodes vypsat uzly v rámci clusteru. Při prvním spuštění se musíte přihlásit, jak je ukázáno na následujícím příkladu:

kubectl get nodes

Získejte přístup ke svému clusteru z klientského zařízení (režim proxy)

Pokud chcete přistupovat 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 Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, která je součástí role uživatele clusteru Kubernetes s podporou Azure Arc .

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

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

  2. Získejte konfiguraci připojení clusteru kubeconfig, která je potřebná ke komunikaci s clusterem odkudkoli (dokonce i mimo firewall obklopující cluster):

    az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

    Poznámka:

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

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

    kubectl get pods -A
    

Nyní byste měli vidět odpověď od klastru obsahující seznam všech podů pod názvovým prostorem default.

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

Upravte zdroje

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