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

Este artigo mostra-lhe como usar intervalos de endereços IP autorizados por servidores API para limitar quais endereços IP e CIDRs podem aceder aos endpoints do plano de controlo para as suas cargas de trabalho do Azure Kubernetes Service (AKS).

Pré-requisitos

Sugestão

No portal Azure, use Azure Copilot para alterar os endereços IP que podem aceder ao seu cluster. Para mais informações, consulte Trabalhar com clusters AKS de forma eficiente usando o Azure Copilot.

Limitações e considerações

  • O AKS suporta esta funcionalidade apenas com o balanceador de carga Standard SKU. O AKS já não suporta o balanceador de carga SKU Basic. Se tiver um cluster existente que use o SKU Basic, migre para o SKU Standard. A migração requer tempo de inatividade e tem pré-requisitos adicionais.
  • Não podes usar esta funcionalidade com clusters privados.
  • Para clusters que utilizam IPs públicos de Node, cada pool de nós com IPs públicos deve usar prefixos de IP públicos. Adicione esses prefixos como intervalos autorizados.
  • Pode especificar até 200 intervalos de IP autorizados. Para ultrapassar este limite, considere usar a API Server VNet Integration, que suporta até 2.000 intervalos de IP autorizados.

Visão geral dos intervalos de IP autorizados pelo servidor de API

O servidor API Kubernetes expõe as APIs Kubernetes subjacentes. Ferramentas de gestão como kubectl o painel Kubernetes interagem com o cluster através deste servidor API. O AKS fornece um plano de controlo de inquilino único com um servidor API dedicado e atribui ao servidor um endereço IP público por defeito. Pode controlar o acesso usando o controlo de acesso baseado em papéis Kubernetes (Kubernetes RBAC) ou Azure RBAC.

Para proteger o servidor API do plano de controlo do AKS, que de outra forma seria acessível publicamente, ative os intervalos de IP autorizados. Os intervalos de IP autorizados permitem apenas que intervalos definidos de endereços IP comuniquem com o servidor API. O servidor API bloqueia pedidos de endereços IP que não estão incluídos nos intervalos autorizados. As regras podem levar até dois minutos para se propagar. Espere até dois minutos antes de testar a ligação.

Recomendamos incluir os seguintes intervalos de endereços IP na configuração dos seus intervalos de IP autorizados por servidor API:

  • O endereço IP de saída do cluster (firewall, gateway NAT ou outro endereço, dependendo do tipo de saída).
  • Os intervalos de endereços IP para as redes que usas para administrar o cluster.

Criar um cluster AKS com intervalos de IP autorizados pelo servidor API ativado

Nota

Quando ativas os intervalos de IP autorizados pelo servidor API durante a criação do cluster, o AKS adiciona o IP público do servidor API e o IP público de saída do balanceador de carga do SKU Standard à lista de intervalos de IP autorizados por defeito, além de quaisquer intervalos que especifiques.

Caso especial - 0.0.0.0/32: O 0.0.0.0/32 marcador indica ao AKS para permitir apenas o IP público de saída do balanceador de carga Standard SKU aceder ao servidor API. O marcador apresenta os seguintes comportamentos:

Comportamento Description
Intervalos adicionais de IP do cliente Desativa o comportamento padrão de permitir intervalos adicionais de IP dos clientes.
Acesso ao servidor API Restringe o acesso do servidor API apenas ao IP de saída do cluster.
Autogestão Permite que o cluster se gere sozinho enquanto bloqueia o acesso externo.

Para criar um cluster com os intervalos de IP autorizados pelo servidor API ativados, forneça uma lista de intervalos de endereços IP públicos autorizados. Para um intervalo CIDR, use o endereço de rede, que é o primeiro endereço IP no intervalo. Por exemplo, para permitir que o intervalo 137.117.106.88 seja 137.117.106.95, especifique 137.117.106.88/29.

Use o az aks create comando com o --api-server-authorized-ip-ranges parâmetro para criar um cluster AKS com os intervalos de IP autorizados pelo servidor API ativados. O exemplo seguinte 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 aceda ao servidor 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

Use o New-AzAksCluster cmdlet com o -ApiServerAccessAuthorizedIpRange parâmetro para criar um cluster AKS com os intervalos de IP autorizados pelo servidor API ativados. O exemplo seguinte 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 aceda ao servidor API:

New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '73.140.245.0/24' -GenerateSshKey
  1. Na home page do portal do Azure, selecione >
  2. Configure as configurações do cluster conforme necessário.
  3. Na seção Rede, em Acesso público, selecione Definir intervalos de IP autorizados.
  4. Em Especificar intervalos de IP, insira os intervalos de endereços IP que você deseja autorizar para acessar o servidor de API.
  5. Configure o restante das configurações do cluster conforme necessário.
  6. Quando estiver pronto, selecione Rever + criar>Criar para criar o cluster.

Especifique IPs de saída para um balanceador de carga SKU Standard usando CLI do Azure

Quando cria um cluster com intervalos de IP autorizados por servidor API ativados, também pode especificar os seus endereços IP de saída ou prefixos usando os --load-balancer-outbound-ips parâmetros ou --load-balancer-outbound-ip-prefixes . O AKS permite estes endereços IP além dos endereços IP no --api-server-authorized-ip-ranges parâmetro.

Use o --load-balancer-outbound-ips parâmetro para criar um cluster AKS com intervalos de IP autorizados por servidor API ativados e especifique os endereços IP de saída para o balanceador de carga do SKU Standard. O exemplo seguinte cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup, permite 73.140.245.0/24 aceder ao servidor API e especifica dois endereços IP de saída para o balanceador de carga do SKU Standard. Substitua <public-ip-id-1> e <public-ip-id-2> pelos IDs de recursos 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 apenas o IP público de saída do balanceador de carga SKU padrão

Use o --api-server-authorized-ip-ranges parâmetro para criar um cluster AKS que permita apenas ao IP público de saída do balanceador de carga Standard SKU aceder ao servidor API. O exemplo seguinte cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

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

Use o -ApiServerAccessAuthorizedIpRange parâmetro para criar um cluster AKS que permita apenas ao IP público de saída do balanceador de carga Standard SKU aceder ao servidor API. O exemplo seguinte cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '0.0.0.0/32' -GenerateSshKey
  1. Na home page do portal do Azure, selecione >
  2. Configure as configurações do 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 0.0.0.0/32. Esta configuração permite apenas o IP público de saída do balanceador de carga do SKU Standard.
  5. Configure o restante das configurações do cluster conforme necessário.
  6. Quando estiver pronto, selecione Rever + criar>Criar para criar o cluster.

Atualize os intervalos de IP autorizados pelo servidor API num cluster existente

Use o az aks update comando com o --api-server-authorized-ip-ranges parâmetro para atualizar os intervalos de IP autorizados do servidor API de um cluster. O exemplo seguinte define o intervalo autorizado para 73.140.245.0/24 para o cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

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

Permitir múltiplos intervalos de endereços IP usando o CLI do Azure

Para permitir múltiplos intervalos de endereços IP, separe-os com vírgulas.

Use o az aks update comando com o --api-server-authorized-ip-ranges parâmetro para autorizar múltiplos intervalos de endereços IP. O exemplo seguinte atualiza o cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

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

Use o Set-AzAksCluster cmdlet com o -ApiServerAccessAuthorizedIpRange parâmetro para atualizar os intervalos de IP autorizados por servidor API de um cluster. O exemplo seguinte define o intervalo autorizado para 73.140.245.0/24 para o cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

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 deseja atualizar.
  2. No menu de serviço, em Configurações, selecione Rede.
  3. Em Configurações de recursos, selecione Gerenciar.
  4. Na página Intervalos de IP autorizados, atualize os intervalos de IP autorizados conforme necessário.
  5. Quando tiver terminado, selecione Guardar.

Desativar os intervalos de IP autorizados por servidor API num cluster existente

Para desativar os intervalos de IP autorizados pelo servidor API, use 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 ""

Para desativar intervalos IP autorizados pelo servidor API, use 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 deseja atualizar.
  2. No menu de serviço, em Configurações, selecione Rede.
  3. Em Configurações de recursos, selecione Gerenciar.
  4. Na página Intervalos de IP autorizados, desmarque a caixa de seleção Definir intervalos de IP autorizados.
  5. Selecione Guardar.

Encontre intervalos de IP autorizados para servidores API existentes

Para encontrar os intervalos de IP autorizados pelos servidores de API, use o az aks show comando com o --query parâmetro definido para apiServerAccessProfile.authorizedIpRanges.

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

Exemplo de saída:

[
    "73.140.245.0/24"
]

Para encontrar os intervalos de IP autorizados por servidores API, use 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 AKS.

  2. No menu de serviço, em Configurações, selecione Rede.

    A secção de Definições de Recursos na página de Rede mostra os intervalos de IP autorizados atualmente configurados.

    Captura de ecrã que mostra os intervalos de IP autorizados nas definições de Recursos no portal Azure.

Acede ao servidor API a partir da tua máquina de desenvolvimento, ferramentas ou automação

Para aceder ao servidor API a partir de uma máquina de desenvolvimento, ferramenta ou sistema de automação, adicione o seu endereço IP público às faixas autorizadas de IP do cluster.

Em alternativa, configure uma jumpbox com as ferramentas necessárias numa sub-rede separada na rede virtual do firewall e adicione os endereços IP do firewall aos intervalos autorizados. Se a sub-rede do cluster AKS usar tunelamento forçado através do firewall, podes colocar essa jumpbox na sub-rede do cluster AKS.

Nota

O exemplo seguinte preserva o intervalo autorizado existente e adiciona outro endereço IP. Se omitir um endereço IP existente, o comando substitui-o pelo novo intervalo.

  1. Execute o seguinte comando para recuperar o seu endereço IP e defina-o como variável de ambiente:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Use o az aks update comando com o --api-server-authorized-ip-ranges parâmetro para adicionar o seu endereço IP aos intervalos autorizados. O exemplo seguinte adiciona o seu endereço IP atual aos intervalos 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/32,73.140.245.0/24
    
  1. Execute o seguinte comando para recuperar o seu endereço IP e defina-o como variável de ambiente:

    # Retrieve your IP address
    $CURRENT_IP = (Invoke-RestMethod -Uri 'https://ipinfo.io/json').ip
    
  2. Use o Set-AzAksCluster cmdlet com o -ApiServerAccessAuthorizedIpRange parâmetro para adicionar o seu endereço IP aos intervalos autorizados. O exemplo seguinte adiciona o seu endereço IP atual aos intervalos existentes no cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup:

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

Para outra forma de identificar o seu endereço IP, veja Encontrar o seu endereço IP ou pesquise qual é o meu endereço IP? num navegador web.

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