Compartilhar via


Proteger o acesso ao servidor de API usando intervalos de endereços IP autorizados no AKS (Serviço de Kubernetes do Azure)

Este artigo mostra como usar intervalos de endereços IP autorizados do servidor de API para limitar quais endereços IP e CIDRs podem acessar pontos de extremidade do plano de controle para suas cargas de trabalho do AKS (Serviço de Kubernetes do Azure).

Pré-requisitos

  • Azure CLI versão 2.0.76 ou posterior instalada e configurada. Verifique a versão usando o comando az --version. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
  • Para saber quais endereços IP incluir ao integrar seu cluster do AKS ao Azure DevOps, consulte endereços IP permitidos e URLs de domínio.

Dica

No portal do Azure, você pode usar o Azure Copilot para fazer alterações nos endereços IP que podem acessar o cluster. Para obter mais informações, consulte Trabalhar com clusters do AKS com eficiência usando o Azure Copilot.

Limitações e considerações

  • Esse recurso só tem suporte no balanceador de carga de SKU Standard para clusters criados após outubro de 2019. Todos os clusters existentes no balanceador de carga de SKU Básico com o recurso habilitado devem continuar funcionando corretamente se a versão do Kubernetes e o plano de controle forem atualizados. No entanto, você não pode migrar esses clusters para o balanceador de carga de SKU Standard.
  • Você não pode usar esse recurso com clusters privados.
  • Ao usar esse recurso com clusters que usam IPs públicos de nó, os pools de nós que usam os IPs públicos de nó devem usar prefixos IP públicos. Você deve adicionar os prefixos IP públicos como intervalos autorizados.
  • Você pode especificar até 200 intervalos de IP autorizados. Para ir além desse limite, considere usar a Integração VNet do Servidor de API, que dá suporte a até 2.000 intervalos de IP autorizados.

Visão geral de intervalos de IP autorizados do servidor de API

O servidor de API do Kubernetes expõe as APIs subjacentes do Kubernetes e fornece a interação para ferramentas de gerenciamento como o kubectl e o painel do Kubernetes. O AKS fornece um plano de controle de cluster de locatário único com um servidor de API dedicado. O servidor de API recebe um endereço IP público por padrão. Você pode controlar o acesso usando o controle de acesso baseado em função do Kubernetes (Kubernetes RBAC) ou o Azure RBAC.

Para proteger o acesso ao servidor do plano de controle AKS/API publicamente acessível, você pode habilitar e usar intervalos de IP autorizados. Esses intervalos de IP autorizados permitem que apenas os intervalos de endereços IP definidos se comuniquem com o servidor de API. Todas as solicitações feitas ao servidor de API a partir de um endereço IP que não faça parte desses intervalos de IP autorizados serão bloqueadas. A propagação das regras pode levar até dois minutos. Aguarde esse período ao testar a conexão.

É recomendável incluir os seguintes intervalos de endereços IP na configuração de intervalos de IP autorizados do servidor de API:

  • O endereço IP de saída do cluster (firewall, gateway NAT ou outro endereço, dependendo do seu tipo de saída).
  • Qualquer intervalo que represente as redes das quais você administrará o cluster.

Criar um cluster do AKS com o recurso intervalos de IP autorizados do servidor de API habilitado

Observação

Quando você habilita intervalos de IP autorizados do servidor de API durante a criação do cluster, o IP público do servidor de API e o IP público de saída do balanceador de carga de SKU Standard são automaticamente permitidos por padrão, além de quaisquer intervalos especificados.

Caso especial - 0.0.0.0/32: esse é um valor especial que informa ao AKS para permitir que apenas o IP público de saída do balanceador de carga de SKU Standard acesse o servidor de API. O valor 0.0.0.0/32 atua como um espaço reservado que:

  • Desabilita o comportamento padrão de permitir intervalos de IP de cliente extras.
  • Restringe o acesso do servidor de API apenas ao IP de saída do próprio cluster.
  • É útil para cenários em que você deseja que o cluster seja autogerenciado, mas bloqueie o acesso externo.

Ao criar um cluster com intervalos de IP autorizados do servidor de API habilitados, você fornece uma lista de intervalos de endereços IP públicos autorizados. Ao especificar um intervalo CIDR, você deve usar o endereço de rede (primeiro endereço IP no intervalo). Por exemplo, se você quiser permitir o intervalo de 137.117.106.88 a 137.117.106.95, você deve especificar 137.117.106.88/29.

  • Crie um cluster AKS com intervalos de IP autorizados do servidor de API habilitados usando o comando az aks create com o parâmetro --api-server-authorized-ip-ranges. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup e permite que o intervalo 73.140.245.0/24 de endereços IP acesse o servidor de API:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    
  • Crie um cluster AKS com intervalos de IP autorizados do servidor de API habilitados usando o cmdlet New-AzAksCluster com o parâmetro -ApiServerAccessAuthorizedIpRange. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup e permite que o intervalo 73.140.245.0/24 de endereços IP acesse o servidor de API:

    New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '73.140.245.0/24' -GenerateSshKey
    
  1. Na página inicial do portal do Azure, selecione Criar um recurso>Contêineres>Serviço de Kubernetes do Azure (AKS).
  2. Defina as configurações de cluster conforme necessário.
  3. Na seção Rede em Acesso público, selecione Definir intervalos de IP autorizados.
  4. Para Especificar intervalos de IP, insira os intervalos de endereços IP que você deseja autorizar a acessar o servidor de API.
  5. Defina o restante das configurações do cluster conforme necessário.
  6. Quando estiver pronto, selecione Revisar + criar>Criar para criar o cluster.

Especificar IPs de saída para um balanceador de carga SKU padrão

Ao criar um cluster com intervalos de IP autorizados do servidor de API habilitados, você também pode especificar os endereços IP de saída ou prefixos para o cluster usando os parâmetros --load-balancer-outbound-ips ou --load-balancer-outbound-ip-prefixes. Todos os IPs fornecidos nos parâmetros são permitidos junto com os IPs no parâmetro --api-server-authorized-ip-ranges.

  • Crie um cluster AKS com intervalos de IP autorizados do servidor de API habilitados e especifique os endereços IP de saída para o balanceador de carga de SKU padrão usando o parâmetro --load-balancer-outbound-ips. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup, permite que o intervalo 73.140.245.0/24 de endereços IP acesse o servidor de API e especifica dois endereços IP de saída para o balanceador de carga de SKU Standard. Certifique-se de substituir os espaços reservados <public-ip-id-1> e <public-ip-id-2> pelos IDs de recurso reais dos seus endereços IP públicos.

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
    

Permitir somente o IP público de saída do balanceador de carga do SKU Standard

  • Crie um cluster AKS com intervalos de IP autorizados do servidor de API habilitados e permita apenas o IP público de saída do balanceador de carga de SKU padrão usando o parâmetro --api-server-authorized-ip-ranges. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup com intervalos de IP autorizados do servidor de API habilitados e permite apenas o IP público de saída do balanceador de carga de SKU padrão:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
    
  • Crie um cluster AKS com intervalos de IP autorizados do servidor de API habilitados e permita apenas o IP público de saída do balanceador de carga de SKU padrão usando o parâmetro -ApiServerAccessAuthorizedIpRange. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup com intervalos de IP autorizados do servidor de API habilitados e permite apenas o IP público de saída do balanceador de carga de SKU padrão:

    New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '0.0.0.0/32' -GenerateSshKey
    
  1. Na página inicial do portal do Azure, selecione Criar um recurso>Contêineres>Serviço de Kubernetes do Azure (AKS).
  2. Defina as configurações de cluster conforme necessário.
  3. Na seção Rede em Acesso público, selecione Definir intervalos de IP autorizados.
  4. Para especificar intervalos de IP, insira0.0.0.0/32 . Essa configuração permite apenas o IP público de saída do balanceador de carga de SKU Standard.
  5. Defina o restante das configurações do cluster conforme necessário.
  6. Quando estiver pronto, selecione Revisar + criar>Criar para criar o cluster.

Atualizar os intervalos de IP autorizados do servidor de API em um cluster existente

  • Atualize os intervalos de IP autorizados do servidor de API de um cluster existente usando o comando az aks update com o parâmetro --api-server-authorized-ip-ranges. O exemplo a seguir atualiza os intervalos de IP autorizados do servidor de API no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup e atualiza o intervalo de endereços IP para 73.140.245.0/24:

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

Permitir vários intervalos de endereços IP

Para permitir vários intervalos de endereços IP, você pode listar vários endereços IP, separados por vírgulas.

  • Atualize os intervalos de IP autorizados do servidor de API de um cluster existente para permitir vários intervalos de endereços IP usando o az aks update comando com o --api-server-authorized-ip-ranges parâmetro. O exemplo a seguir atualiza os intervalos de IP autorizados do servidor de API no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup e permite vários intervalos de endereços IP:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24,193.168.1.0/24,194.168.1.0/24
    
  • Atualize os intervalos de IP autorizados do servidor de API de um cluster existente usando o cmdlet Set-AzAksCluster com o parâmetro -ApiServerAccessAuthorizedIpRange. O exemplo a seguir atualiza os intervalos de IP autorizados do servidor de API no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup e atualiza o intervalo de endereços IP para 73.140.245.0/24:

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange '73.140.245.0/24'
    
  1. Navegue até o portal do Azure e selecione o cluster AKS que você deseja atualizar.
  2. No menu de serviço, em Configurações, selecione Rede.
  3. Em Configurações de recurso, selecione Gerenciar.
  4. Na página Intervalos de IP autorizados atualize os Intervalos de IP autorizados conforme necessário.
  5. Quando terminar, selecione Salvar.

Desabilitar intervalos de IP autorizados do servidor de API em um cluster existente

  • Desabilite os intervalos de IP autorizados do servidor de API usando o az aks update comando e especifique um intervalo "" vazio para o --api-server-authorized-ip-ranges parâmetro.

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    
  • Desabilite os intervalos de IP autorizados do servidor de API usando o Set-AzAksCluster cmdlet e especifique um intervalo '' vazio para o -ApiServerAccessAuthorizedIpRange parâmetro.

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange ''
    
  1. Navegue até o portal do Azure e selecione o cluster AKS que você deseja atualizar.
  2. No menu de serviço, em Configurações, selecione Rede.
  3. Em Configurações de recurso, selecione Gerenciar.
  4. Na página Intervalos de IP autorizados desmarque a caixa de seleção Definir intervalos de IP autorizados caixa.
  5. Clique em Salvar.

Localizar os intervalos de IP autorizados existentes do servidor de API

  • Localize os intervalos de IP autorizados do servidor de API existentes usando o az aks show comando com o --query parâmetro definido como apiServerAccessProfile.authorizedIpRanges.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
    

    Exemplo de saída:

    [
      "73.140.245.0/24"
    ]
    
  • Localize os intervalos de IP autorizados do servidor de API existentes usando o Get-AzAksCluster cmdlet.

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster | Select-Object -ExpandProperty ApiServerAccessProfile
    

    Exemplo de saída:

    AuthorizedIPRanges: {73.140.245.0/24}
    ...
    
  1. Navegue até o portal do Azure e selecione seu cluster do AKS.

  2. No menu de serviço, em Configurações, selecione Rede. Os intervalos de IP autorizados do servidor de API existentes são listados nas configurações de recurso.

    Captura de tela dos intervalos de IP autorizados do servidor de API no portal do Azure.

Acessar o servidor de API de seu computador de desenvolvimento, ferramentas ou automação

Você precisa adicionar seus computadores de desenvolvimento, ferramentas ou endereços IP de automação à lista de intervalos de IP aprovados no cluster do AKS para acessar o servidor de API com eles.

Outra opção é configurar um Jumpbox com as ferramentas necessárias dentro de uma sub-rede separada na rede virtual do firewall. Essa opção pressupõe que seu ambiente tenha um firewall com a respectiva rede e que você adicionou os IPs de firewall às faixas autorizadas. Da mesma forma, se você forçar o túnel da sub-rede do AKS para a sub-rede do firewall, também será possível colocar o jumpbox na sub-rede do cluster.

Observação

O exemplo a seguir adiciona outro endereço IP aos intervalos aprovados. Ele ainda inclui o endereço IP existente. Se você não incluir o endereço IP existente, esse comando o substituirá pelo novo em vez de adicioná-lo aos intervalos autorizados.

  1. Recupere o endereço IP e defina-o como uma variável de ambiente usando o seguinte comando:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Adicione seu endereço IP à lista aprovada usando o az aks update comando com o --api-server-authorized-ip-ranges parâmetro. O exemplo a seguir adiciona seu endereço IP atual aos intervalos de IP autorizados do servidor de API existentes no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
  1. Recupere o endereço IP e defina-o como uma variável de ambiente usando o seguinte comando:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Adicione seu endereço IP à lista aprovada usando o Set-AzAksCluster cmdlet com o -ApiServerAccessAuthorizedIpRange parâmetro. O exemplo a seguir adiciona seu endereço IP atual aos intervalos de IP autorizados do servidor de API existentes no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Outra opção é usar o seguinte comando em sistemas Windows para obter o endereço IPv4 público:

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Você também pode seguir as etapas em Localizar seu endereço IP ou pesquisar no que é meu endereço IP? Em um navegador da Internet.

Para saber mais sobre segurança no AKS, confira os seguintes artigos: