Acesso seguro de rede ao Kubernetes

Azure Bastion
DNS do Azure
AKS (Serviço de Kubernetes do Azure)
Link Privado do Azure
Rede Virtual do Azure

Este artigo compara os modos de rede do Serviço de Kubernetes do Azure (AKS) e do Amazon Elastic Kubernetes Service (Amazon EKS). O artigo descreve como melhorar a segurança da conexão com o servidor de API gerenciado de um cluster do AKS e as diferentes opções para restringir o acesso à rede pública.

Observação

Este artigo faz parte de uma série de artigos que ajudam profissionais familiarizados com o Amazon EKS a entender o Serviço Azure Kubernetes (AKS).

Modos de rede do Amazon EKS

Com a Amazon Virtual Private Cloud (Amazon VPC), você pode executar recursos da Amazon Web Services (AWS) em uma rede virtual composta por sub-redes públicas e privadas ou intervalos de endereços IP na VPC. Uma sub-rede pública hospeda recursos que devem estar conectados à Internet e uma sub-rede privada hospeda recursos que não estão conectados à Internet pública. O Amazon EKS pode provisionar grupos de nós gerenciados em sub-redes públicas e privadas.

O controle de acesso ao ponto de extremidade permite configurar se o ponto de extremidade do Servidor de API pode ser acessado pela Internet pública ou pela VPC. O EKS fornece várias maneiras de controlar o acesso ao ponto de extremidade do cluster. Você pode habilitar o ponto de extremidade público padrão, um ponto de extremidade privado ou ambos os pontos de extremidade simultaneamente. Ao habilitar o ponto de extremidade público, você pode adicionar restrições de Roteamento de domínio interno sem classe (CIDR) para limitar os endereços IP do cliente que podem se conectar ao ponto de extremidade público.

A forma como os nós do Amazon EKS se conectam ao plano de controle gerenciado do Kubernetes é determinada por qual configuração de ponto de extremidade é configurada para o cluster. Você pode alterar as configurações de ponto de extremidade a qualquer momento por meio do console do Amazon EKS ou da API. Para obter mais informações, veja Controle de acesso aos pontos de extremidade do cluster do Amazon EKS.

Somente ponto de extremidade público

Expor o plano de controle por meio de um ponto de extremidade público é o modo padrão para novos clusters do Amazon EKS. Quando apenas o ponto de extremidade público do cluster está habilitado, as solicitações de API do Kubernetes originadas na Amazon VPC, como o nó de trabalho para controlar a comunicação do avião, saem da VPC, mas não da Amazon. Para que os nós se conectem ao plano de controle, eles devem usar um endereço IP público e uma rota para um gateway da Internet ou um gateway da conversão de endereço de rede (NAT) onde possam usar o endereço IP público do gateway da NAT.

Pontos de extremidade públicos e privados

Quando os pontos de extremidade públicos e privados estão habilitados, as solicitações de API do Kubernetes de dentro da VPC se comunicam com o plano de controle por meio das interfaces de rede elástica (ENI) gerenciadas pelo Amazon EKS na VPC. O servidor de API de cluster é acessível a partir da Internet.

Apenas ponto de extremidade privado

Quando apenas o ponto de extremidade privado está habilitado, todo o tráfego para o servidor de API do cluster, como comandos kubectl ou helm, deve vir de dentro da VPC do cluster ou de uma rede conectada. O acesso público ao servidor da API a partir da Internet está desabilitado. Você pode implementar esse modo de acesso usando a rede privada virtual do AWS (AWS VPN) ou o AWS DirectConnect na VPC. Para restringir o acesso ao ponto de extremidade sem AWS VPN ou DirectConnect, você pode adicionar restrições CIDR ao ponto de extremidade público para limitar as conexões sem configurar mais rede.

Para obter mais informações sobre opções de conectividade, consulte Acessar um servidor de API somente privado.

Acesso de rede do AKS ao servidor de API

Há duas opções para proteger o acesso à rede para a API do Kubernetes no AKS, um cluster de AKS privado ou intervalos de IP autorizados.

Cluster do AKS particular

Um cluster privado do AKS garante que o tráfego de rede entre o servidor de API e os pools de nós permaneça dentro da rede virtual. Em um cluster do AKS privado, o plano de controle ou o servidor de API tem um endereço IP interno que só é acessível por meio de um ponto de extremidade privado do Azure localizado na mesma rede virtual. Qualquer máquina virtual (VM) na mesma rede virtual pode se comunicar de forma privada com o plano de controle por meio do ponto de extremidade privado. O plano de controle ou o servidor de API é hospedado na assinatura gerenciada pelo Azure, enquanto o cluster do AKS e seus pools de nós estão na assinatura do cliente.

O diagrama a seguir ilustra uma configuração de cluster privado.

Diagrama que mostra um cluster do AKS privado.

Baixe um Arquivo Visio dessa arquitetura.

Para provisionar um cluster do AKS privado, o provedor de recursos do AKS cria um nome de domínio totalmente qualificado (FQDN) privado para o grupo de recursos do nó em uma zona DNS privado. Opcionalmente, o AKS também pode criar um FQDN público com um registro de endereço (A) correspondente na zona do DNS público do Azure. Os nós do agente ainda usam o registro A na zona do DNS privado para resolver o endereço IP do ponto de extremidade privado para comunicação com o servidor de API.

O provedor de recursos do AKS pode criar a zona do DNS privado no grupo de recursos do nó ou você pode criar a zona do DNS privado e enviar sua ID de recurso para o sistema de provisionamento. Você pode criar um cluster privado ao usar o Terraform com Azure, Bicep, modelos ARM, CLI do Azure, módulo do PowerShell do Azure ou API REST do Azure para criar o cluster.

Você pode habilitar um FQDN público para o servidor de API durante o provisionamento ou usando o comando az aks update com o parâmetro --enable-public-fqdn em clusters existentes. Se você habilitar o FQDN público, qualquer VM que acessar o servidor, como um agente auto-hospedado do Azure DevOps ou um executor auto-hospedado do GitHub Actions, deverá estar na mesma rede virtual que hospeda o cluster ou em uma rede conectada via emparelhamento de rede virtual ou VPN site a site.

Para um cluster do AKS privado, desabilite o FQDN público do servidor de API. Para se comunicar com o plano de controle privado, uma VM deve estar na mesma rede virtual ou em uma rede virtual emparelhada com um link de rede virtual para a zona do DNS privado. O registro A na zona do DNS privado resolve o FQDN do servidor de API para o endereço IP de ponto de extremidade privado que se comunica com o plano de controle subjacente. Para obter mais informações, consulte Criar um cluster particular do Serviço de Kubernetes do Azure.

Opções de implantação de cluster privado

O provedor de recursos do AKS expõe os seguintes parâmetros para personalizar a implantação de cluster do AKS privado:

  • authorizedIpRanges (string) especifica intervalos de IP permitidos no formato CIDR.
  • disableRunCommand (booleano) especifica se o comando run deve ou não ser desabilitado para o cluster.
  • enablePrivateCluster (booleano) especifica se o cluster deve ou não ser criado como privado.
  • enablePrivateClusterPublicFQDN (booleano) especifica se deve ou não criar outro FQDN público para o cluster privado.
  • privateDnsZone (string) especifica uma zona do DNS privado no grupo de recursos do nó. Se você não especificar um valor, o provedor de recursos criará a zona. É possível especificar os seguintes valores:
    • System é o valor padrão.
    • None usa como padrão o DNS público, portanto, o AKS não cria uma zona do DNS privado.
    • <Your own private DNS zone resource ID> usa uma zona do DNS privado criada no formato privatelink.<region>.azmk8s.io ou <subzone>.privatelink.<region>.azmk8s.io.

A tabela a seguir mostra as opções de configuração de DNS para implantar um cluster do AKS privado:

Opções de zona do DNS privado enablePrivateClusterPublicFQDN: true enablePrivateClusterPublicFQDN: false
Sistema Os nós do agente e quaisquer outras VMs na rede virtual do cluster do AKS ou em qualquer rede virtual conectada à zona do DNS privado usam o registro A da zona do DNS privado para resolver o endereço IP privado do ponto de extremidade privado.

Qualquer outra VM usa o FQDN público do servidor de API.
Os nós do agente e quaisquer outras VMs na rede virtual do cluster do AKS ou em qualquer rede virtual conectada à zona do DNS privado usam o registro A da zona do DNS privado para resolver o endereço IP privado do ponto de extremidade privado.

Nenhum FQDN de servidor de API público está disponível.
Nenhuma Todas as VMs, incluindo nós de agente, usam o FQDN público do servidor de API disponível por meio de um registro A em uma zona do DNS público gerenciada pelo Azure. Configuração incorreta. O cluster do AKS privado precisa de pelo menos uma zona do DNS público ou privado para a resolução de nomes do servidor de API.
Seu próprio ID de recurso de zona do DNS privado Os nós do agente e quaisquer outras VMs na rede virtual do cluster do AKS ou em qualquer rede virtual conectada à zona do DNS privado usam o registro A da zona do DNS privado para resolver o endereço IP privado do ponto de extremidade privado.

Quaisquer outras VMs usam o FQDN público do servidor de API.
Os nós do agente e quaisquer outras VMs na rede virtual do cluster do AKS ou em qualquer rede virtual conectada à zona do DNS privado usam o registro A da zona do DNS privado para resolver o endereço IP privado do ponto de extremidade privado.

Nenhum FQDN de servidor de API público está disponível.

Conectividade e gerenciamento de cluster privado

Há várias opções para estabelecer a conectividade de rede com o cluster privado.

Você pode gerenciar um cluster do AKS privado usando a ferramenta de linha de comando kubectl de uma VM de gerenciamento na mesma rede virtual ou em uma rede virtual emparelhada.

Você pode usar o Azure Bastion na mesma rede virtual ou em uma rede virtual emparelhada para se conectar a uma VM de gerenciamento de jumpbox. O Azure Bastion é uma plataforma como serviço (PaaS) totalmente gerenciada que permite que você se conecte a uma VM usando seu navegador e o portal do Azure. O Azure Bastion fornece conectividade de VM segura e contínua de protocolo RDP ou SSH (Secure Shell) por TLS, diretamente do portal do Azure. Quando as VMs se conectam por meio do Azure Bastion, elas não precisam de um endereço IP público, nem de um agente e tampouco de um software cliente especial.

Você também pode usar o comando az aks invoke para executar comandos kubectl ou helm no seu cluster do AKS privado sem precisar se conectar a uma VM jumpbox.

Intervalos de IP autorizados

A segunda opção para melhorar a segurança do cluster e minimizar os ataques ao servidor de API é usar intervalos de IP autorizados. IPs autorizados restringem o acesso ao plano de controle de um cluster do AKS público a uma lista conhecida de endereços IP e CIDRs. Quando você usa essa opção, o servidor de API ainda é exposto publicamente, mas o acesso é limitado. Para obter mais informações, confira Proteger acesso ao servidor de API usando intervalos de endereços IP autorizados no AKS (Serviço de Kubernetes do Azure).

O seguinte comando az aks update da CLI do Azure autoriza intervalos de IP:

 az aks update \
     --resource-group myResourceGroup \
     --name myAKSCluster \
     --api-server-authorized-ip-ranges  73.140.245.0/24

Considerações sobre conectividade do AKS

  • Um cluster do AKS privado fornece maior segurança e isolamento do que IPs autorizados. No entanto, não é possível converter um cluster do AKS público existente em um cluster privado. Você pode habilitar IPs autorizados para qualquer cluster do AKS existente.

  • Não é possível aplicar intervalos de IP autorizados a um ponto de extremidade de servidor de API privado. Os IPs autorizados aplicam-se somente ao servidor de API público.

  • Os clusters privados não oferecem suporte a agentes hospedados no Azure DevOps. Considere o uso de agentes auto-hospedados.

  • Para permitir que o Registro de Contêiner do Azure funcione com um cluster do AKS privado, configure um link privado para o registro de contêiner na rede virtual do cluster. Ou configure o emparelhamento entre a rede virtual do Registro de Contêiner e a rede virtual do cluster privado.

  • As limitações do serviço de Link Privado do Azure se aplicam a clusters privados.

  • Se você excluir ou modificar o ponto de extremidade privado na sub-rede do cliente de um cluster privado, o cluster deixará de funcionar.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Outros colaboradores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas

As referências a seguir fornecem links para documentação e exemplos de automação para implantar clusters do AKS com uma API segura: