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

Este artigo mostra como usar o recurso de intervalos de endereços IP autorizados pelo servidor de API para limitar quais endereços IP e CIDRs podem acessar o plano de controle.

O servidor de API do Kubernetes é o núcleo do plano de controle do Kubernetes e é a maneira central de interagir e gerenciar seus clusters. Para melhorar a segurança de seus clusters e minimizar o risco de ataques, recomendamos limitar os intervalos de endereços IP que podem acessar o servidor de API. Para fazer isso, você pode usar o recurso de intervalos de IP autorizados pelo servidor de API.

Antes de começar

  • Você precisa da CLI do Azure versão 2.0.76 ou posterior instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
  • Para saber quais endereços IP incluir ao integrar seu cluster AKS com o Azure DevOps, consulte o artigo Endereços IP permitidos e URLs de domínio do Azure DevOps.

Limitações

O recurso de intervalos de IP autorizados do servidor de API tem as seguintes limitações:

  • O recurso de intervalos de IP autorizados pelo servidor de API foi removido da visualização em outubro de 2019. Para clusters criados depois que o recurso foi movido para fora da visualização, esse recurso só é suportado no balanceador de carga SKU padrão . Todos os clusters existentes no balanceador de carga SKU Básico com o recurso de intervalos de IP autorizados do servidor de API habilitado continuarão a funcionar como estão. No entanto, esses clusters não podem ser migrados para um balanceador de carga SKU padrão . Os clusters existentes continuarão a funcionar se a versão do Kubernetes e o plano de controle forem atualizados.
  • O recurso de intervalos de IP autorizados pelo servidor de API não é suportado em clusters privados.
  • Ao usar esse recurso com clusters que usam IP público de nó, os pools de nós que usam IP público de nó devem usar prefixos IP públicos. Os prefixos IP públicos devem ser adicionados como intervalos autorizados.

Visão geral dos intervalos de IP autorizados pelo 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 kubectl 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 plano de controle AKS / servidor API de acesso público, você pode habilitar e usar intervalos de IP autorizados. Esses intervalos de IP autorizados só permitem que 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 são bloqueadas.

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

Importante

Por padrão, seu cluster usa o balanceador de carga SKU padrão que você pode usar para configurar o gateway de saída. Quando você habilita intervalos de IP autorizados pelo servidor de API durante a criação do cluster, o IP público do cluster é permitido por padrão, além dos intervalos especificados. Se você especificar "" ou nenhum valor para --api-server-authorized-ip-ranges, os intervalos de IP autorizados pelo servidor de API serão desabilitados. Observe que, se você estiver usando o PowerShell, use --api-server-authorized-ip-ranges="" (com sinais de igual) para evitar problemas de análise.

Nota

Você deve adicionar esses intervalos a uma lista de permissões:

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

O limite superior para o número de intervalos de IP que você pode especificar é 200.

As regras podem levar até dois minutos para se propagar. Por favor, aguarde até esse momento ao testar a conexão.

Ao criar um cluster com intervalos de IP autorizados pelo servidor de API habilitados, use o --api-server-authorized-ip-ranges parâmetro para fornecer uma lista de intervalos de endereços IP públicos autorizados. Quando você especificar um intervalo CIDR, comece com o primeiro endereço IP no intervalo. Por exemplo, 137.117.106.90/29 é um intervalo válido, mas certifique-se de especificar o primeiro endereço IP no intervalo, como 137.117.106.88/29.

  • Crie um cluster AKS com intervalos de IP autorizados pelo servidor API ativado usando o az aks create comando com o --api-server-authorized-ip-ranges parâmetro. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup com intervalos de IP autorizados pelo servidor de API habilitados. Os intervalos de endereços IP permitidos são 73.140.245.0/24:

    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
    

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

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

  • Crie um cluster AKS com intervalos de IP autorizados pelo servidor API ativado e especifique os endereços IP de saída para o balanceador de carga SKU padrão usando o --load-balancer-outbound-ips parâmetro. O exemplo a seguir cria um cluster chamado myAKSCluster no grupo de recursos chamado myResourceGroup com intervalos de IP autorizados pelo servidor de API habilitados e os endereços <public-ip-id-1> IP de saída e <public-ip-id-2>:

    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

Quando você habilita intervalos de IP autorizados pelo servidor de API durante a criação do cluster, o IP público de saída para o balanceador de carga SKU padrão para seu cluster também é permitido por padrão, além dos intervalos especificados. Para permitir apenas o IP público de saída do balanceador de carga SKU padrão, use 0.0.0.0/32 ao especificar o --api-server-authorized-ip-ranges parâmetro.

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

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

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

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
    
  • Para permitir vários intervalos de endereços IP, você pode listar vários endereços IP, separados por vírgulas.

    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
    

    Você também pode usar 0.0.0.0/32 ao especificar o --api-server-authorized-ip-ranges parâmetro para permitir apenas o IP público do balanceador de carga SKU padrão.

Desativar intervalos de IP autorizados

  • Desative os intervalos de IP autorizados 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 ""
    

Encontre intervalos de IP autorizados existentes

  • Encontre intervalos de IP autorizados 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
    

Como encontrar o meu IP para incluir no --api-server-authorized-ip-ranges?

Você deve adicionar suas máquinas de desenvolvimento, ferramentas ou endereços IP de automação à lista de clusters AKS de intervalos de IP aprovados para acessar o servidor de API a partir daí.

Outra opção é configurar uma jumpbox com as ferramentas necessárias dentro de uma sub-rede separada na rede virtual do firewall. Isso pressupõe que seu ambiente tenha um firewall com a respetiva rede e que você tenha adicionado os IPs do firewall aos intervalos autorizados. Da mesma forma, se você forçou o tunelamento da sub-rede AKS para a sub-rede do firewall, ter a jumpbox na sub-rede do cluster também é aceitável.

  1. Recupere seu endereço IP 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 a CLI do Azure ou o Azure PowerShell:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Nota

O exemplo acima adiciona outro endereço IP aos intervalos aprovados. Observe que ele ainda inclui o endereço IP de Atualizar intervalos de IP autorizados do servidor de API de um cluster. Se não incluir o seu endereço IP existente, este comando irá substituí-lo pelo novo em vez de o adicionar aos intervalos autorizados. Para desativar intervalos de IP autorizados, use az aks update e especifique um intervalo vazio "".

Outra opção é usar o seguinte comando em sistemas Windows para obter o endereço IPv4 público, ou você pode seguir as etapas em Localizar seu endereço IP.

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

Você também pode encontrar este endereço pesquisando sobre qual é o meu endereço IP em um navegador de internet.

Usar etiquetas de serviço para intervalos de IP autorizados pelo Servidor de API - (Visualização)

As tags de serviço são uma maneira conveniente de especificar um grupo de endereços IP correspondentes a um serviço Kubernetes. Você pode usar tags de serviço para especificar os endereços IP dos serviços Kubernetes e endereços IP específicos nos intervalos de IP autorizados para o servidor de API, separando-os com uma vírgula.

Limitações

Importante

Os recursos de visualização do AKS estão disponíveis em uma base de autosserviço e opt-in. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As visualizações do AKS são parcialmente cobertas pelo suporte ao cliente com base no melhor esforço. Como tal, estas funcionalidades não se destinam a utilização em produção. Para obter mais informações, consulte os seguintes artigos de suporte:

Instalar a extensão de visualização da CLI do Azure

  1. Instale a extensão de visualização da CLI do Azure usando o comando [az extension add][az-extension-add].

    az extension add --name aks-preview
    
  2. Atualize a extensão para se certificar de que tem a versão mais recente utilizando o comando [az extension update][az-extension-update].

    az extension update --name aks-preview
    

Registrar o sinalizador de recurso IP autorizado da etiqueta de serviço

  1. Registre o sinalizador do recurso EnableServiceTagAuthorizedIPPreview usando o comando az feature register .

    az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

    O registo demora alguns minutos a ser concluído.

  2. Verifique o registro usando o comando az feature show .

    az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

Criar um cluster AKS com intervalos de IP autorizados pela etiqueta de serviço

Crie um cluster com intervalos de IP autorizados da Etiqueta de Serviço usando o --api-server-authorized-ip-ranges parâmetro com a marca AzureCloud de serviço para permitir que todos os serviços do Azure acessem o servidor de API e especifiquem um endereço IP adicional.

Nota

Apenas uma etiqueta de serviço é permitida no --api-server-authorized-ip-ranges parâmetro. Não é possível especificar várias tags de serviço.

az aks create --resource-group myResourceGroup \
  --name myAKSCluster \
  --api-server-authorized-ip-ranges AzureCloud,20.20.20.20

Você deve ser capaz de enrolar o servidor de API de uma VM do Azure ou serviço do Azure que faz parte da AzureCloud marca de serviço.

Próximos passos

Neste artigo, você habilitou os intervalos de IP autorizados pelo servidor de API. Essa abordagem é uma parte de como você pode executar com segurança um cluster AKS. Para obter mais informações, consulte Conceitos de segurança para aplicativos e clusters no AKS e Práticas recomendadas para segurança de cluster e atualizações no AKS.