Možnosti identit a přístupu pro Azure Kubernetes Service (AKS)Access and identity options for Azure Kubernetes Service (AKS)

Existují různé způsoby ověřování, řízení přístupu, autorizaci a zabezpečení clusterů Kubernetes.There are different ways to authenticate, control access/authorize and secure Kubernetes clusters. Pomocí Kubernetes řízení přístupu založeného na rolích (Kubernetes RBAC) můžete uživatelům, skupinám a účtům služeb udělit přístup pouze k potřebným prostředkům.Using Kubernetes role-based access control (Kubernetes RBAC), you can grant users, groups, and service accounts access to only the resources they need. Pomocí služby Azure Kubernetes Service (AKS) můžete dál zdokonalit strukturu zabezpečení a oprávnění pomocí Azure Active Directory a Azure RBAC.With Azure Kubernetes Service (AKS), you can further enhance the security and permissions structure by using Azure Active Directory and Azure RBAC. Tyto přístupy vám pomůžou zabezpečit přístup ke clusteru a poskytnout jenom minimální požadovaná oprávnění vývojářům a operátorům.These approaches help you secure your cluster access and provide only the minimum required permissions to developers and operators.

V tomto článku se seznámíte se základními koncepcemi, které vám pomůžou ověřit a přiřadit oprávnění v AKS.This article introduces the core concepts that help you authenticate and assign permissions in AKS.

Oprávnění služby AKSAKS service permissions

Při vytváření clusteru AKS vytvoří nebo upraví prostředky, které potřebuje k vytvoření a spuštění clusteru, jako jsou virtuální počítače a síťové karty, jménem uživatele, který vytváří cluster.When creating a cluster, AKS creates or modifies resources it needs to create and run the cluster, such as VMs and NICs, on behalf of the user creating the cluster. Tato identita se liší od oprávnění identity clusteru, které se vytváří při vytváření clusteru.This identity is distinct from the cluster's identity permission, which is created during cluster creation.

Identita, která vytváří a pracuje s oprávněními clusteruIdentity creating and operating the cluster permissions

Identita, která vytváří a provozuje cluster, vyžaduje následující oprávnění.The following permissions are needed by the identity creating and operating the cluster.

OprávněníPermission DůvodReason
Microsoft. COMPUTE/diskEncryptionSets/ReadMicrosoft.Compute/diskEncryptionSets/read Vyžaduje se pro čtení ID sady šifrování disku.Required to read disk encryption set ID.
Microsoft. COMPUTE/proximityPlacementGroups/WriteMicrosoft.Compute/proximityPlacementGroups/write Vyžaduje se pro aktualizaci skupin umístění blízkosti.Required for updating proximity placement groups.
Microsoft. Network/applicationGateways/ReadMicrosoft.Network/applicationGateways/read
Microsoft. Network/applicationGateways/WriteMicrosoft.Network/applicationGateways/write
Microsoft. Network/virtualNetworks/subnets/JOIN/ActionMicrosoft.Network/virtualNetworks/subnets/join/action
Vyžaduje se ke konfiguraci aplikačních bran a připojení k podsíti.Required to configure application gateways and join the subnet.
Microsoft. Network/virtualNetworks/subnets/JOIN/ActionMicrosoft.Network/virtualNetworks/subnets/join/action Vyžaduje se ke konfiguraci skupiny zabezpečení sítě pro podsíť při použití vlastní virtuální sítě.Required to configure the Network Security Group for the subnet when using a custom VNET.
Microsoft. Network/publicIPAddresses/JOIN/ActionMicrosoft.Network/publicIPAddresses/join/action
Microsoft. Network/publicIPPrefixes/JOIN/ActionMicrosoft.Network/publicIPPrefixes/join/action
Vyžaduje se ke konfiguraci odchozích veřejných IP adres na Standard Load Balancer.Required to configure the outbound public IPs on the Standard Load Balancer.
Microsoft. OperationalInsights/pracovní prostory/sharedkeys/čístMicrosoft.OperationalInsights/workspaces/sharedkeys/read
Microsoft. OperationalInsights/pracovní prostory/čístMicrosoft.OperationalInsights/workspaces/read
Microsoft. OperationsManagement/Solutions/WriteMicrosoft.OperationsManagement/solutions/write
Microsoft. OperationsManagement/Solutions/ReadMicrosoft.OperationsManagement/solutions/read
Microsoft. ManagedIdentity/userAssignedIdentities/Assign/ActionMicrosoft.ManagedIdentity/userAssignedIdentities/assign/action
Vyžaduje se k vytváření a aktualizaci Log Analyticsch pracovních prostorů a monitorování Azure pro kontejnery.Required to create and update Log Analytics workspaces and Azure monitoring for containers.

Oprávnění pro identitu clusteru AKSAKS cluster identity permissions

Následující oprávnění používá identita clusteru AKS, která je vytvořená a přidružená ke clusteru AKS při vytváření clusteru.The following permissions are used by the AKS cluster identity, which is created and associated with the AKS cluster when the cluster is created. Každé oprávnění se používá z následujících důvodů:Each permission is used for the reasons below:

OprávněníPermission DůvodReason
Microsoft. Network/loadBalancers/DELETEMicrosoft.Network/loadBalancers/delete
Microsoft. Network/loadBalancers/ReadMicrosoft.Network/loadBalancers/read
Microsoft. Network/loadBalancers/WriteMicrosoft.Network/loadBalancers/write
Vyžaduje se ke konfiguraci nástroje pro vyrovnávání zatížení pro službu Vyrovnávání zatížení.Required to configure the load balancer for a LoadBalancer service.
Microsoft. Network/publicIPAddresses/DELETEMicrosoft.Network/publicIPAddresses/delete
Microsoft. Network/publicIPAddresses/ReadMicrosoft.Network/publicIPAddresses/read
Microsoft. Network/publicIPAddresses/WriteMicrosoft.Network/publicIPAddresses/write
Je nutné najít a nakonfigurovat veřejné IP adresy pro službu Vyrovnávání zatížení.Required to find and configure public IPs for a LoadBalancer service.
Microsoft. Network/publicIPAddresses/JOIN/ActionMicrosoft.Network/publicIPAddresses/join/action Vyžaduje se pro konfiguraci veřejných IP adres pro službu Vyrovnávání zatížení.Required for configuring public IPs for a LoadBalancer service.
Microsoft. Network/networkSecurityGroups/ReadMicrosoft.Network/networkSecurityGroups/read
Microsoft. Network/networkSecurityGroups/WriteMicrosoft.Network/networkSecurityGroups/write
Je nutné vytvořit nebo odstranit pravidla zabezpečení pro službu Vyrovnávání zatížení.Required to create or delete security rules for a LoadBalancer service.
Microsoft. COMPUTE/disks/DELETEMicrosoft.Compute/disks/delete
Microsoft. COMPUTE/disky/čístMicrosoft.Compute/disks/read
Microsoft. COMPUTE/disks/WriteMicrosoft.Compute/disks/write
Microsoft. COMPUTE/Locations/DiskOperations/ReadMicrosoft.Compute/locations/DiskOperations/read
Vyžaduje se ke konfiguraci AzureDisks.Required to configure AzureDisks.
Microsoft. Storage/storageAccounts/DELETEMicrosoft.Storage/storageAccounts/delete
Microsoft. Storage/storageAccounts/klíče listkey/ActionMicrosoft.Storage/storageAccounts/listKeys/action
Microsoft. Storage/storageAccounts/ReadMicrosoft.Storage/storageAccounts/read
Microsoft. Storage/storageAccounts/WriteMicrosoft.Storage/storageAccounts/write
Microsoft. Storage/Operations/ReadMicrosoft.Storage/operations/read
Vyžaduje se ke konfiguraci účtů úložiště pro AzureFile nebo AzureDisk.Required to configure storage accounts for AzureFile or AzureDisk.
Microsoft. Network/routeTables/ReadMicrosoft.Network/routeTables/read
Microsoft. Network/routeTables/Routes/DELETEMicrosoft.Network/routeTables/routes/delete
Microsoft. Network/routeTables/Routes/ReadMicrosoft.Network/routeTables/routes/read
Microsoft. Network/routeTables/Routes/WriteMicrosoft.Network/routeTables/routes/write
Microsoft. Network/routeTables/WriteMicrosoft.Network/routeTables/write
Vyžaduje se ke konfiguraci směrovacích tabulek a tras pro uzly.Required to configure route tables and routes for nodes.
Microsoft. COMPUTE/virtualMachines/ReadMicrosoft.Compute/virtualMachines/read Vyžaduje se k vyhledání informací pro virtuální počítače v VMAS, jako jsou zóny, doména selhání, velikost a datové disky.Required to find information for virtual machines in a VMAS, such as zones, fault domain, size, and data disks.
Microsoft. COMPUTE/virtualMachines/WriteMicrosoft.Compute/virtualMachines/write Vyžaduje se k připojení AzureDisks k virtuálnímu počítači v VMAS.Required to attach AzureDisks to a virtual machine in a VMAS.
Microsoft. COMPUTE/virtualMachineScaleSets/ReadMicrosoft.Compute/virtualMachineScaleSets/read
Microsoft. COMPUTE/virtualMachineScaleSets/virtualMachines/ReadMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/read
Microsoft. COMPUTE/virtualMachineScaleSets/VirtualMachines/instanceView/ReadMicrosoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read
Vyžaduje se k vyhledání informací o virtuálních počítačích v sadě škálování virtuálních počítačů, jako jsou zóny, doména selhání, velikost a datové disky.Required to find information for virtual machines in a virtual machine scale set, such as zones, fault domain, size, and data disks.
Microsoft. Network/networkInterfaces/WriteMicrosoft.Network/networkInterfaces/write Vyžadováno pro přidání virtuálního počítače do VMAS do fondu adres back-endu nástroje pro vyrovnávání zatížení.Required to add a virtual machine in a VMAS to a load balancer backend address pool.
Microsoft. COMPUTE/virtualMachineScaleSets/WriteMicrosoft.Compute/virtualMachineScaleSets/write Vyžaduje se pro přidání škály virtuálních počítačů do back-endového fondu adres služby Load Balancer a navýšení kapacity uzlů v sadě škálování virtuálního počítače.Required to add a virtual machine scale set to a load balancer backend address pools and scale out nodes in a virtual machine scale set.
Microsoft. COMPUTE/virtualMachineScaleSets/VirtualMachines/WriteMicrosoft.Compute/virtualMachineScaleSets/virtualmachines/write Vyžaduje se pro připojení AzureDisks a přidání virtuálního počítače ze sady škálování virtuálního počítače do nástroje pro vyrovnávání zatížení.Required to attach AzureDisks and add a virtual machine from a virtual machine scale set to the load balancer.
Microsoft. Network/networkInterfaces/ReadMicrosoft.Network/networkInterfaces/read Vyžadováno pro hledání interních IP adres a back-endové fondy adres pro virtuální počítače v VMAS.Required to search internal IPs and load balancer backend address pools for virtual machines in a VMAS.
Microsoft. COMPUTE/virtualMachineScaleSets/virtualMachines/networkInterfaces/ReadMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read Vyžadováno pro hledání interních IP adres a back-endové fondy adres pro virtuální počítač v sadě škálování virtuálního počítače.Required to search internal IPs and load balancer backend address pools for a virtual machine in a virtual machine scale set.
Microsoft. COMPUTE/virtualMachineScaleSets/virtualMachines/networkInterfaces/IPConfiguration/publicipaddresses/čístMicrosoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ ipconfigurations/publicipaddresses/read Vyžaduje se najít veřejné IP adresy pro virtuální počítač v sadě škálování virtuálního počítače.Required to find public IPs for a virtual machine in a virtual machine scale set.
Microsoft. Network/virtualNetworks/ReadMicrosoft.Network/virtualNetworks/read
Microsoft. Network/virtualNetworks/podsítí/čteníMicrosoft.Network/virtualNetworks/subnets/read
Vyžaduje se k ověření, jestli podsíť existuje pro interní nástroj pro vyrovnávání zatížení v jiné skupině prostředků.Required to verify if a subnet exists for the internal load balancer in another resource group.
Microsoft. COMPUTE/snímky/odstranitMicrosoft.Compute/snapshots/delete
Microsoft. COMPUTE/snímky/čístMicrosoft.Compute/snapshots/read
Microsoft. COMPUTE/snímky/zápisMicrosoft.Compute/snapshots/write
Vyžaduje se ke konfiguraci snímků pro AzureDisk.Required to configure snapshots for AzureDisk.
Microsoft. COMPUTE/Locations/povolených velikostí/ReadMicrosoft.Compute/locations/vmSizes/read
Microsoft. COMPUTE/umístění/operace/čteníMicrosoft.Compute/locations/operations/read
Vyžadovaná k nalezení velikostí virtuálních počítačů pro hledání AzureDisk limitů svazků.Required to find virtual machine sizes for finding AzureDisk volume limits.

Další oprávnění pro identitu clusteruAdditional cluster identity permissions

Při vytváření clusteru se specifickými atributy jsou pro identitu clusteru potřeba tato další oprávnění.The following additional permissions are needed by the cluster identity when creating a cluster with specific attributes. Tato oprávnění se automaticky nepřiřazují, takže musíte po jejím vytvoření přidat tato oprávnění do identity clusteru.These permissions are not automatically assigned so you must add these permissions to the cluster identity after its created.

OprávněníPermission DůvodReason
Microsoft. Network/networkSecurityGroups/WriteMicrosoft.Network/networkSecurityGroups/write
Microsoft. Network/networkSecurityGroups/ReadMicrosoft.Network/networkSecurityGroups/read
Vyžaduje se, pokud používáte skupinu zabezpečení sítě v jiné skupině prostředků.Required if using a network security group in another resource group. Vyžaduje se ke konfiguraci pravidel zabezpečení pro službu Vyrovnávání zatížení.Required to configure security rules for a LoadBalancer service.
Microsoft. Network/virtualNetworks/podsítí/čteníMicrosoft.Network/virtualNetworks/subnets/read
Microsoft. Network/virtualNetworks/subnets/JOIN/ActionMicrosoft.Network/virtualNetworks/subnets/join/action
Vyžaduje se, pokud používáte podsíť v jiné skupině prostředků, jako je třeba vlastní virtuální síť.Required if using a subnet in another resource group such as a custom VNET.
Microsoft. Network/routeTables/Routes/ReadMicrosoft.Network/routeTables/routes/read
Microsoft. Network/routeTables/Routes/WriteMicrosoft.Network/routeTables/routes/write
Vyžaduje se, pokud používáte podsíť přidruženou k tabulce směrování v jiné skupině prostředků, jako je například vlastní virtuální síť s vlastní směrovací tabulkou.Required if using a subnet associated with a route table in another resource group such as a custom VNET with a custom route table. Vyžaduje se, aby se ověřilo, jestli pro podsíť v jiné skupině prostředků už existuje podsíť.Required to verify if a subnet already exists for the subnet in the other resource group.
Microsoft. Network/virtualNetworks/podsítí/čteníMicrosoft.Network/virtualNetworks/subnets/read Vyžaduje se, pokud používáte interní nástroj pro vyrovnávání zatížení v jiné skupině prostředků.Required if using an internal load balancer in another resource group. Vyžaduje se, aby se ověřilo, jestli už podsíť pro interní nástroj pro vyrovnávání zatížení ve skupině prostředků existuje.Required to verify if a subnet already exists for the internal load balancer in the resource group.

Kubernetes řízení přístupu na základě role (Kubernetes RBAC)Kubernetes role-based access control (Kubernetes RBAC)

K zajištění podrobného filtrování akcí, které mohou uživatelé provádět, Kubernetes používá řízení přístupu na základě role Kubernetes (Kubernetes RBAC).To provide granular filtering of the actions that users can do, Kubernetes uses Kubernetes role-based access control (Kubernetes RBAC). Tento řídicí mechanismus umožňuje přiřadit uživatele nebo skupiny uživatelů, oprávnění k provádění akcí, jako je vytváření nebo úpravy prostředků, nebo zobrazení protokolů ze spuštěných úloh aplikací.This control mechanism lets you assign users, or groups of users, permission to do things like create or modify resources, or view logs from running application workloads. Tato oprávnění můžou být vymezená na jeden obor názvů nebo udělená v rámci celého clusteru AKS.These permissions can be scoped to a single namespace, or granted across the entire AKS cluster. Pomocí Kubernetes RBAC vytvoříte role pro definování oprávnění a pak jim přiřadíte tyto role uživatelům s vazbami rolí.With Kubernetes RBAC, you create roles to define permissions, and then assign those roles to users with role bindings.

Další informace najdete v tématu použití autorizace KUBERNETES RBAC.For more information, see Using Kubernetes RBAC authorization.

Role a ClusterRolesRoles and ClusterRoles

Než přiřadíte oprávnění uživatelům pomocí Kubernetes RBAC, nejprve tato oprávnění definujte jako roli.Before you assign permissions to users with Kubernetes RBAC, you first define those permissions as a Role. Role Kubernetes udělují oprávnění.Kubernetes roles grant permissions. Neexistuje žádný koncept oprávnění Odepřít .There's no concept of a deny permission.

Role slouží k udělení oprávnění v rámci oboru názvů.Roles are used to grant permissions within a namespace. Pokud potřebujete udělit oprávnění napříč celým clusterem nebo prostředky clusteru mimo daný obor názvů, můžete místo toho použít ClusterRoles.If you need to grant permissions across the entire cluster, or to cluster resources outside a given namespace, you can instead use ClusterRoles.

ClusterRole funguje stejným způsobem jako udělení oprávnění k prostředkům, ale lze je použít na prostředky v celém clusteru, nikoli na konkrétní obor názvů.A ClusterRole works in the same way to grant permissions to resources, but can be applied to resources across the entire cluster, not a specific namespace.

RoleBindings a ClusterRoleBindingsRoleBindings and ClusterRoleBindings

Jakmile jsou role definované pro udělení oprávnění k prostředkům, přiřaďte tato oprávnění Kubernetes RBAC k RoleBinding.Once roles are defined to grant permissions to resources, you assign those Kubernetes RBAC permissions with a RoleBinding. Pokud se váš cluster AKS integruje s Azure Active Directory (Azure AD), vazby jsou tím, jak se těmto uživatelům Azure AD uděluje oprávnění k provádění akcí v rámci clusteru, najdete v tématu Jak řídit přístup k prostředkům clusteru pomocí řízení přístupu založeného na rolích Kubernetes a Azure Active Directory identit.If your AKS cluster integrates with Azure Active Directory (Azure AD), bindings are how those Azure AD users are granted permissions to perform actions within the cluster, see how in Control access to cluster resources using Kubernetes role-based access control and Azure Active Directory identities.

Vazby role slouží k přiřazení rolí pro daný obor názvů.Role bindings are used to assign roles for a given namespace. Tento přístup umožňuje logicky oddělit jeden AKS cluster s uživateli, kteří mají jenom přístup k prostředkům aplikace v jejich přiřazeném oboru názvů.This approach lets you logically segregate a single AKS cluster, with users only able to access the application resources in their assigned namespace. Pokud potřebujete navazovat role napříč celým clusterem nebo prostředky clusteru mimo daný obor názvů, můžete místo toho použít ClusterRoleBindings.If you need to bind roles across the entire cluster, or to cluster resources outside a given namespace, you can instead use ClusterRoleBindings.

ClusterRoleBinding funguje stejným způsobem jako vázání rolí uživatelům, ale lze je použít na prostředky v celém clusteru, nikoli na konkrétní obor názvů.A ClusterRoleBinding works in the same way to bind roles to users, but can be applied to resources across the entire cluster, not a specific namespace. Tento přístup vám umožní udělit správcům nebo pracovníkům podpory přístup ke všem prostředkům v clusteru AKS.This approach lets you grant administrators or support engineers access to all resources in the AKS cluster.

Poznámka

Všechny akce clusteru prováděné Microsoftem a AKS se provádí s souhlasem uživatele v rámci předdefinované Kubernetes role aks-service a předdefinované vazby role aks-service-rolebinding .Any cluster actions taken by Microsoft/AKS are made with user consent under a built-in Kubernetes role aks-service and built-in role binding aks-service-rolebinding. Tato role umožňuje AKS řešit a diagnostikovat problémy s clustery, ale nemůže měnit oprávnění ani vytvářet role nebo vazby rolí ani jiné akce s vysokou úrovní oprávnění.This role enables AKS to troubleshoot and diagnose cluster issues, but can't modify permissions nor create roles or role bindings, or other high privilege actions. Přístup k rolím je povolený jenom v aktivních lístkech podpory s přístupem JIT (just-in-time).Role access is only enabled under active support tickets with just-in-time (JIT) access. Přečtěte si další informace o zásadách podpory AKS.Read more about AKS support policies.

Účty služby KubernetesKubernetes service accounts

Jedním z primárních uživatelských typů v Kubernetes je účet služby.One of the primary user types in Kubernetes is a service account. Účet služby existuje v a spravuje ho rozhraní Kubernetes API.A service account exists in, and is managed by, the Kubernetes API. Přihlašovací údaje pro účty služeb se ukládají jako tajné kódy Kubernetes, což umožňuje jejich použití autorizovanými lusky ke komunikaci se serverem API.The credentials for service accounts are stored as Kubernetes secrets, which allows them to be used by authorized pods to communicate with the API Server. Většina požadavků rozhraní API poskytuje ověřovací token pro účet služby nebo běžný uživatelský účet.Most API requests provide an authentication token for a service account or a normal user account.

Běžné uživatelské účty umožňují pružnější přístup pro lidské správce nebo vývojáře, ne jenom pro služby a procesy.Normal user accounts allow more traditional access for human administrators or developers, not just services, and processes. Kubernetes sám neposkytuje řešení pro správu identit, ve kterém jsou uložené běžné uživatelské účty a hesla.Kubernetes itself doesn't provide an identity management solution where regular user accounts and passwords are stored. Místo toho je možné integrovat do Kubernetes řešení externích identit.Instead, external identity solutions can be integrated into Kubernetes. V případě AKS clusterů je toto integrované řešení identity Azure Active Directory.For AKS clusters, this integrated identity solution is Azure Active Directory.

Další informace o možnostech identity v Kubernetes najdete v tématu ověřování Kubernetes.For more information on the identity options in Kubernetes, see Kubernetes authentication.

Integrace Azure Active DirectoryAzure Active Directory integration

Zabezpečení clusterů AKS se dá zvýšit integrací Azure Active Directory (AD).The security of AKS clusters can be enhanced with the integration of Azure Active Directory (AD). Služba Azure AD je postavená na základě počtu desetiletí správy podnikových identit ve více tenantůch, cloudových adresářích a službě správy identit, které spojují základní adresářové služby, správu přístupu k aplikacím a Identity Protection.Built on decades of enterprise identity management, Azure AD is a multi-tenant, cloud-based directory, and identity management service that combines core directory services, application access management, and identity protection. Pomocí Azure AD můžete integrovat místní identity do clusterů AKS a poskytnout tak jeden zdroj pro správu a zabezpečení účtů.With Azure AD, you can integrate on-premises identities into AKS clusters to provide a single source for account management and security.

Azure Active Directory integrace s clustery AKS

S integrovanými clustery AKS Azure AD můžete uživatelům nebo skupinám udělit přístup k prostředkům Kubernetes v rámci oboru názvů nebo napříč clusterem.With Azure AD-integrated AKS clusters, you can grant users or groups access to Kubernetes resources within a namespace or across the cluster. Aby mohl kubectl uživatel získat kontext konfigurace, může spustit příkaz AZ AKS Get-Credentials .To obtain a kubectl configuration context, a user can run the az aks get-credentials command. Když uživatel potom komunikuje s clusterem AKS s kubectl , zobrazí se jim výzva k přihlášení pomocí přihlašovacích údajů Azure AD.When a user then interacts with the AKS cluster with kubectl, they're prompted to sign in with their Azure AD credentials. Tento přístup poskytuje jeden zdroj pro správu uživatelských účtů a přihlašovací údaje k heslům.This approach provides a single source for user account management and password credentials. Uživatel má přístup pouze k prostředkům definovaným správcem clusteru.The user can only access the resources as defined by the cluster administrator.

Ověřování Azure AD je k dispozici pro clustery AKS s OpenID Connect.Azure AD authentication is provided to AKS clusters with OpenID Connect. OpenID Connect je vrstva identity postavená nad protokolem OAuth 2,0.OpenID Connect is an identity layer built on top of the OAuth 2.0 protocol. Další informace o OpenID připojení najdete v dokumentaci k otevřenému ID Connect.For more information on OpenID Connect, see the Open ID connect documentation. V rámci clusteru Kubernetes se ověřování pomocí tokenu Webhooku používá k ověření ověřovacích tokenů.From inside of the Kubernetes cluster, Webhook Token Authentication is used to verify authentication tokens. Ověřování tokenu Webhooku je nakonfigurované a spravované jako součást clusteru AKS.Webhook token authentication is configured and managed as part of the AKS cluster.

Webhook a Server APIWebhook and API server

Tok ověřování serveru Webhook a API

Jak je znázorněno na obrázku výše, Server rozhraní API volá server Webhooku AKS a provede následující kroky:As shown in the graphic above, the API server calls the AKS webhook server and performs the following steps:

  1. Klientská aplikace Azure AD se používá v kubectl k přihlašování uživatelů pomocí toku udělení autorizace zařízení OAuth 2,0.The Azure AD client application is used by kubectl to sign in users with OAuth 2.0 device authorization grant flow.
  2. Azure AD poskytuje access_token, id_token a refresh_token.Azure AD provides an access_token, id_token, and a refresh_token.
  3. Uživatel vytvoří požadavek na kubectl s access_token z kubeconfig.The user makes a request to kubectl with an access_token from kubeconfig.
  4. Kubectl odesílá access_token do serveru API.Kubectl sends the access_token to API Server.
  5. Server rozhraní API je nakonfigurovaný se serverem Webhooku ověřování a provede ověření.The API Server is configured with the Auth WebHook Server to perform validation.
  6. Server Webhooku ověřování potvrdí, že je podpis JSON Web Token platný, kontrolou veřejného podpisového klíče Azure AD.The authentication webhook server confirms the JSON Web Token signature is valid by checking the Azure AD public signing key.
  7. Serverová aplikace používá k dotazování členství přihlášeného uživatele ze služby MS Graph API uživateli zadané přihlašovací údaje.The server application uses user-provided credentials to query group memberships of the logged-in user from the MS Graph API.
  8. Do serveru rozhraní API se pošle odpověď s informacemi o uživateli, jako je například deklarace identity přístupového tokenu (UPN) hlavního názvu uživatele (UPN), a členství uživatele ve skupině na základě ID objektu.A response is sent to the API Server with user information such as the user principal name (UPN) claim of the access token, and the group membership of the user based on the object ID.
  9. Rozhraní API provede rozhodnutí o autorizaci na základě role Kubernetes nebo RoleBinding.The API performs an authorization decision based on the Kubernetes Role/RoleBinding.
  10. Po ověření Server API vrátí odpověď na kubectl.Once authorized, the API server returns a response to kubectl.
  11. Kubectl poskytuje zpětnou vazbu uživateli.Kubectl provides feedback to the user.

Naučte se integrovat AKS do AAD.Learn how to integrate AKS with AAD here.

Řízení přístupu na základě role Azure (Azure RBAC)Azure role-based access control (Azure RBAC)

Azure RBAC je autorizačním systémem postaveným na Azure Resource Manager , který poskytuje jemně odstupňovanou správu přístupu k prostředkům Azure.Azure RBAC is an authorization system built on Azure Resource Manager that provides fine-grained access management of Azure resources.

Služba Azure RBAC je navržená tak, aby fungovala s prostředky v rámci vašeho předplatného Azure, zatímco Kubernetes RBAC je navržená pro práci na Kubernetesch prostředcích v rámciAzure RBAC is designed to work on resources within your Azure subscription while Kubernetes RBAC is designed to work on Kubernetes resources within your AKS cluster.

Pomocí Azure RBAC můžete vytvořit definici role , která bude mít přehled o oprávněních, která se mají použít.With Azure RBAC, you create a role definition that outlines the permissions to be applied. Uživateli nebo skupině se pak přiřadí tato definice role prostřednictvím přiřazení role pro konkrétní obor, což může být individuální prostředek, skupina prostředků nebo celé předplatné.A user or group is then assigned this role definition via a role assignment for a particular scope, which could be an individual resource, a resource group, or across the subscription.

Další informace najdete v tématu co je řízení přístupu na základě role Azure (Azure RBAC)?For more information, see What is Azure role-based access control (Azure RBAC)?

Existují dvě úrovně přístupu, které jsou potřeba k plnému provozu clusteru AKS:There are two levels of access needed to fully operate an AKS cluster:

  1. Přístup k prostředku AKS ve vašem předplatném Azure.Access the AKS resource in your Azure subscription. Tento proces vám umožní řídit, jak škálovat nebo upgradovat cluster pomocí rozhraní AKS API, a také načíst vaše kubeconfig.This process allows you to control things scaling or upgrading your cluster using the AKS APIs as well as pull your kubeconfig.
  2. Přístup k rozhraní Kubernetes API.Access to the Kubernetes API. Tento přístup se řídí buď KUBERNETES RBAC (tradičně), nebo integrací Azure RBAC s AKS pro autorizaci Kubernetes .This access is controlled either by Kubernetes RBAC (traditionally) or by integrating Azure RBAC with AKS for Kubernetes authorization

Azure RBAC pro autorizaci přístupu k prostředku AKSAzure RBAC to authorize access to the AKS resource

Pomocí služby Azure RBAC můžete uživatelům (nebo identitám) poskytnout podrobný přístup k AKS prostředkům v jednom nebo několika předplatných.With Azure RBAC, you can provide your users (or identities) with granular access to AKS resources across one or more subscriptions. Můžete mít například roli Přispěvatel služby Azure Kubernetes , která umožňuje provádět akce jako škálování a upgradovat cluster.For example, you could have the Azure Kubernetes Service Contributor role that allows you to do actions like scale and upgrade your cluster. I když by jiný uživatel mohl mít roli Správce clusteru služby Azure Kubernetes , která uděluje oprávnění pouze k vyžádání kubeconfig správce.While another user could have the Azure Kubernetes Service Cluster Admin role that only gives permission to pull the Admin kubeconfig.

Další možností je poskytnout uživateli obecnou roli přispěvatele , která by zahrnovala výše uvedená oprávnění a každou akci v prostředku AKS s výjimkou oprávnění ke správě samotného.Alternatively you could give your user the general Contributor role, which would encompass the above permissions and every action possible on the AKS resource with the exception of managing permissions itself.

Podívejte se na Další informace o použití služby Azure RBAC k zabezpečení přístupu k souboru kubeconfig, který poskytuje přístup k rozhraní Kubernetes API.See more how to use Azure RBAC to secure the access to the kubeconfig file that gives access to the Kubernetes API here.

Azure RBAC pro autorizaci Kubernetes (Preview)Azure RBAC for Kubernetes Authorization (Preview)

Díky integraci Azure RBAC AKS použije server Webhooku Kubernetes pro autorizaci, který vám umožní spravovat oprávnění a přiřazení prostředků clusteru K8s integrovaných do Azure AD pomocí definice role Azure a přiřazení rolí.With the Azure RBAC integration, AKS will use a Kubernetes Authorization webhook server to enable you to manage permissions and assignments of Azure AD-integrated K8s cluster resources using Azure role definition and role assignments.

Azure RBAC pro Kubernetes autorizační tok

Jak je vidět na výše uvedeném diagramu, při použití Integrace Azure RBAC všechny požadavky na rozhraní Kubernetes API se budou řídit stejným tokem ověřování, jak je vysvětleno v části věnované integraci Azure Active Directory.As shown on the above diagram, when using the Azure RBAC integration all requests to the Kubernetes API will follow the same authentication flow as explained on the Azure Active Directory integration section.

Ale i po tom, místo výhradně se spoléháte na Kubernetes RBAC o autorizaci, je požadavek ve skutečnosti ověřený v Azure, pokud identita, která požadavek vytvořila, existuje v AAD.But after that, instead of solely relying on Kubernetes RBAC for Authorization, the request is actually going to be authorized by Azure, as long as the identity that made the request exists in AAD. Pokud identita v AAD neexistuje, třeba účet služby Kubernetes, služba Azure RBAC se nepřipojí a bude to normální Kubernetes RBAC.If the identity doesn't exist in AAD, for example a Kubernetes service account, then the Azure RBAC won't kick in, and it will be the normal Kubernetes RBAC.

V tomto scénáři můžete uživatelům udělit jednu ze čtyř integrovaných rolí nebo vytvářet vlastní role, jako byste to provedli s rolemi Kubernetes, ale v tomto případě pomocí mechanismů Azure RBAC a rozhraní API.In this scenario you could give users one of the four built-in roles, or create custom roles as you would do with Kubernetes roles but in this case using the Azure RBAC mechanisms and APIs.

Tato funkce vám umožní například nejen udělit uživatelům oprávnění k prostředku AKS napříč předplatnými, ale nastavit a udělit jim role a oprávnění, která budou mít v každém z těchto clusterů, které řídí přístup k rozhraní Kubernetes API.This feature will allow you to, for example, not only give users permissions to the AKS resource across subscriptions but set up and give them the role and permissions that they will have inside each of those clusters that controls the access to the Kubernetes API. Můžete například udělit Azure Kubernetes Service RBAC Viewer roli v oboru předplatného a její příjemce bude moci vypsat a načíst všechny Kubernetes objekty ze všech clusterů, ale nebude je upravovat.For example, you can grant the Azure Kubernetes Service RBAC Viewer role on the subscription scope and its recipient will be able to list and get all Kubernetes objects from all clusters, but not modify them.

Důležité

Před použitím této funkce je potřeba povolit Azure RBAC pro autorizaci Kubernetes.Please note that you need to enable Azure RBAC for Kubernetes authorization before using this feature. Další podrobnosti a podrobné pokyny najdete tady.For more details and step by step guidance, see here.

Vestavěné roleBuilt-in roles

AKS poskytuje následující čtyři předdefinované role.AKS provides the following four built-in roles. Jsou podobné integrovaným rolím Kubernetes , ale s několika rozdíly, jako je podpora CRDs.They are similar to the Kubernetes built-in roles but with a few differences like supporting CRDs. Úplný seznam akcí povolených jednotlivými integrovanými rolemi najdete tady.For the full list of actions allowed by each built-in role, see here.

RoleRole PopisDescription
Prohlížeč RBAC pro službu Azure KubernetesAzure Kubernetes Service RBAC Viewer Povoluje přístup jen pro čtení k zobrazení většiny objektů v oboru názvů.Allows read-only access to see most objects in a namespace. Nepovoluje zobrazení rolí nebo vazeb rolí.It doesn't allow viewing roles or role bindings. Tato role nepovoluje zobrazení Secrets , protože čtení obsahu tajných kódů umožňuje přístup k ServiceAccount přihlašovacím údajům v oboru názvů, což by mohlo povolit přístup k rozhraní API jako jakékoli ServiceAccount v oboru názvů (forma eskalace oprávnění).This role doesn't allow viewing Secrets, since reading the contents of Secrets enables access to ServiceAccount credentials in the namespace, which would allow API access as any ServiceAccount in the namespace (a form of privilege escalation)
Zapisovač RBAC služby Azure KubernetesAzure Kubernetes Service RBAC Writer Povoluje přístup pro čtení a zápis většiny objektů v oboru názvů.Allows read/write access to most objects in a namespace. Tato role nepovoluje prohlížení a úpravy rolí nebo vazeb rolí.This role doesn't allow viewing or modifying roles or role bindings. Tato role však umožňuje přístup k Secrets luskům a jejich spuštění jako libovolných ServiceAccount v oboru názvů, takže se dá použít k získání úrovní přístupu rozhraní API všech ServiceAccount v oboru názvů.However, this role allows accessing Secrets and running Pods as any ServiceAccount in the namespace, so it can be used to gain the API access levels of any ServiceAccount in the namespace.
Správce RBAC služby Azure KubernetesAzure Kubernetes Service RBAC Admin Povoluje přístup správce, který má být udělen v rámci oboru názvů.Allows admin access, intended to be granted within a namespace. Umožňuje přístup pro čtení a zápis většiny 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ů.Allows read/write access to most resources in a namespace (or cluster scope), including the ability to create roles and role bindings within the namespace. Tato role nepovoluje přístup pro zápis k kvótě prostředků nebo samotnému oboru názvů.This role doesn't allow write access to resource quota or to the namespace itself.
Správce clusteru RBAC služby Azure KubernetesAzure Kubernetes Service RBAC Cluster Admin Umožňuje přístupu super uživatele k provedení jakékoli akce u libovolného prostředku.Allows super-user access to perform any action on any resource. Poskytuje plnou kontrolu nad všemi prostředky v clusteru a ve všech oborech názvů.It gives full control over every resource in the cluster and in all namespaces.

SouhrnSummary

Tato tabulka shrnuje způsoby, kterými se uživatelé můžou Kubernetes ověřit, když je povolená integrace služby Azure AD.This table summarizes the ways users can authenticate to Kubernetes when Azure AD integration is enabled. Ve všech případech je sekvence příkazů uživatele následující:In all cases, the user's sequence of commands is:

  1. Spusťte az login ověřování v Azure.Run az login to authenticate to Azure.
  2. Spusťte az aks get-credentials ke stažení pověření pro cluster do .kube/config .Run az aks get-credentials to download credentials for the cluster into .kube/config.
  3. Spusťte kubectl příkazy (první z nich může aktivovat ověřování založené na prohlížeči pro ověření v clusteru, jak je popsáno v následující tabulce).Run kubectl commands (the first of which may trigger browser-based authentication to authenticate to the cluster, as described in the following table).

Udělená role, na kterou odkazuje druhý sloupec, je udělení role Azure RBAC zobrazené na kartě Access Control v Azure Portal.The Role Grant referred to in the second column is the Azure RBAC role grant shown on the Access Control tab in the Azure portal. Skupina Azure AD pro správu clusteru se zobrazuje na kartě Konfigurace na portálu (nebo s názvem parametru --aad-admin-group-object-ids v Azure CLI).The Cluster Admin Azure AD Group is shown on the Configuration tab in the portal (or with parameter name --aad-admin-group-object-ids in the Azure CLI).

DescriptionDescription Požadováno udělení roleRole grant required Skupiny Azure AD pro správu clusteruCluster admin Azure AD group(s) Kdy je použítWhen to use
Starší přihlašovací údaje správce pomocí klientského certifikátuLegacy admin login using client certificate Role správce Azure Kubernetes.Azure Kubernetes Admin Role. Tato role umožňuje az aks get-credentials použití s --admin příznakem, který do uživatele stáhne starší certifikát Správce clusteru (mimo Azure AD) .kube/config .This role allows az aks get-credentials to be used with the --admin flag, which downloads a legacy (non-Azure AD) cluster admin certificate into the user's .kube/config. Toto je jediný účel role správce Azure Kubernetes.This is the only purpose of "Azure Kubernetes Admin Role". Není k dispozicin/a Pokud jste trvale zablokovali přístup k platné skupině Azure AD s přístupem k vašemu clusteru.If you're permanently blocked by not having access to a valid Azure AD group with access to your cluster.
Azure AD s ručním (cluster) RoleBindingsAzure AD with manual (Cluster)RoleBindings Role uživatele Azure Kubernetes.Azure Kubernetes User Role. Roli "uživatel" lze az aks get-credentials použít bez --admin příznaku.The "User" role allows az aks get-credentials to be used without the --admin flag. (Toto je jediný účel "role uživatele Azure Kubernetes".) Výsledkem je, že na clusteru s podporou Azure AD je stažení prázdné položky do .kube/config , která aktivuje ověřování založené na prohlížeči při prvním použití nástrojem kubectl .(This is the only purpose of "Azure Kubernetes User Role".) The result, on an Azure AD-enabled cluster, is the download of an empty entry into .kube/config, which triggers browser-based authentication when it's first used by kubectl. Uživatel není v žádné z těchto skupin.User is not in any of these groups. Vzhledem k tomu, že uživatel není ve všech skupinách správců clusteru, budou jeho práva řízena výhradně všemi RoleBindings nebo ClusterRoleBindings, které byly nastaveny pomocí Správce clusterů.Because the user is not in any Cluster Admin groups, their rights will be controlled entirely by any RoleBindings or ClusterRoleBindings that have been set up by cluster admins. (Cluster) RoleBindings je navržený jako uživatelé Azure AD nebo skupiny Azure AD subjects .The (Cluster)RoleBindings nominate Azure AD users or Azure AD groups as their subjects. Pokud žádné takové vazby nejsou nastavené, uživatel nebude moct excute žádné kubectl příkazy.If no such bindings have been set up, the user will not be able to excute any kubectl commands. Pokud chcete jemně odstupňované řízení přístupu a nepoužíváte Azure RBAC pro autorizaci Kubernetes.If you want fine-grained access control, and you're not using Azure RBAC for Kubernetes Authorization. Všimněte si, že uživatel, který nastavuje vazby, se musí přihlásit jednou z dalších metod uvedených v této tabulce.Note that the user who sets up the bindings must log in by one of the other methods listed in this table.
Azure AD podle člena skupiny správcůAzure AD by member of admin group Stejný jako výše uvedenýSame as above Uživatel je členem jedné ze skupin, které jsou zde uvedeny.User is a member of one of the groups listed here. AKS automaticky generuje ClusterRoleBinding, který váže všechny uvedené skupiny k cluster-admin roli Kubernetes.AKS automatically generates a ClusterRoleBinding that binds all of the listed groups to the cluster-admin Kubernetes role. Takže uživatelé v těchto skupinách můžou spouštět všechny kubectl příkazy jako cluster-admin .So users in these groups can run all kubectl commands as cluster-admin. Pokud chcete uživatelům pohodlně udělit úplná práva správce a nepoužíváte pro autorizaci KUBERNETES Azure RBAC.If you want to conveniently grant users full admin rights, and are not using Azure RBAC for Kubernetes authorization.
Azure AD s Azure RBAC pro autorizaci KubernetesAzure AD with Azure RBAC for Kubernetes Authorization Dvě role: první, role uživatele Azure Kubernetes (jak je uvedeno výše).Two roles: First, Azure Kubernetes User Role (as above). Druhý, jedna z "Azure Kubernetes Service RBAC..." výše uvedené role nebo vlastní alternativy.Second, one of the "Azure Kubernetes Service RBAC..." roles listed above, or your own custom alternative. Pole role správce na kartě konfigurace není důležité, pokud je povolená možnost Azure RBAC pro Kubernetes autorizaci.The admin roles field on the Configuration tab is irrelevant when Azure RBAC for Kubernetes Authorization is enabled. Pro autorizaci Kubernetes používáte Azure RBAC.You are using Azure RBAC for Kubernetes authorization. Tento přístup poskytuje jemně odstupňovaný ovládací prvek bez nutnosti nastavovat RoleBindings nebo ClusterRoleBindings.This approach gives you fine-grained control, without the need to set up RoleBindings or ClusterRoleBindings.

Další krokyNext steps

Další informace o základních konceptech Kubernetes a AKS najdete v následujících článcích:For more information on core Kubernetes and AKS concepts, see the following articles: