Gerenciar SSH para acesso seguro aos nós do Serviço Kubernetes do Azure (AKS)
Este artigo descreve como configurar as chaves SSH (visualização) em seus clusters AKS ou pools de nós, durante a implantação inicial ou posteriormente.
O AKS suporta as seguintes opções de configuração para gerenciar chaves SSH em nós de cluster:
- Criar um cluster com chaves SSH
- Atualizar as chaves SSH em um cluster AKS existente
- Desativar e ativar o serviço SSH
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:
Antes de começar
- Você precisa da
aks-preview
versão 0.5.116 ou posterior para usar a atualização. - Você precisa da
aks-preview
versão 1.0.0b6 ou posterior para usar Disable. - O recurso Criar e Atualizar SSH dá suporte a pools de nós Linux, Windows e Azure Linux em clusters existentes.
- O recurso Desabilitar SSH não é suportado nesta versão de visualização em pools de nós que executam o sistema operacional Windows Server.
Instalar a extensão da CLI do aks-preview
Azure
Instale a extensão aks-preview usando o
az extension add
comando.az extension add --name aks-preview
Atualize para a versão mais recente da extensão usando o
az extension update
comando.az extension update --name aks-preview
Registrar o sinalizador de DisableSSHPreview
recurso
Para usar o recurso Desativar SSH, execute as etapas a seguir para registrá-lo e habilitá-lo em sua assinatura.
Registre o
DisableSSHPreview
sinalizador de recurso usando oaz feature register
comando.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Leva alguns minutos para que o status mostre Registrado.
Verifique o status do registro usando o
az feature show
comando.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Quando o status refletir Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o
az provider register
comando.az provider register --namespace Microsoft.ContainerService
Criar um cluster AKS com chaves SSH
Use o comando az aks create para implantar um cluster AKS com uma chave pública SSH. Você pode especificar a chave ou um arquivo de chave usando o --ssh-key-value
argumento.
Parâmetro SSH | Description | Default value |
---|---|---|
--generate-ssh-key |
Se você não tiver suas próprias chaves SSH, especifique --generate-ssh-key . A CLI do Azure gera automaticamente um conjunto de chaves SSH e as salva no diretório ~/.ssh/ padrão. |
|
--ssh-chave-valor | Caminho de chave pública ou conteúdo de chave para instalar em VMs de nó para acesso SSH. Por exemplo, ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm . |
~/.ssh/id_rsa.pub |
--no-ssh-key |
Se você não precisar de chaves SSH, especifique esse argumento. No entanto, o AKS gera automaticamente um conjunto de chaves SSH porque a dependência de recursos da Máquina Virtual do Azure não suporta um ficheiro de chaves SSH vazio. Como resultado, as chaves não são retornadas e não podem ser usadas para SSH nas VMs do nó. A chave privada é descartada e não salva. |
Nota
Se nenhum parâmetro for especificado, o padrão da CLI do Azure fará referência às chaves SSH armazenadas no ~/.ssh/id_rsa.pub
arquivo. Se as chaves não forem encontradas, o comando retornará a mensagem An RSA key file or key value must be supplied to SSH Key Value
.
Seguem-se exemplos deste comando:
Para criar um cluster e usar as chaves SSH geradas por padrão:
az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
Para especificar um arquivo de chave pública SSH, inclua o
--ssh-key-value
argumento:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Atualizar chave pública SSH em um cluster AKS existente
Use o az aks update
comando para atualizar a chave pública SSH (visualização) no cluster. Esta operação atualiza a chave em todos os pools de nós. Você pode especificar uma chave ou um arquivo de chave usando o --ssh-key-value
argumento.
Nota
A atualização das chaves SSH é suportada em conjuntos de escala de máquina virtual do Azure com clusters AKS.
Seguem-se exemplos deste comando:
Para especificar um novo valor de chave pública SSH, inclua o
--ssh-key-value
argumento:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
Para especificar um arquivo de chave pública SSH, especifique-o com o
--ssh-key-value
argumento:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Importante
Depois de atualizar a chave SSH, o AKS não atualiza automaticamente o pool de nós. A qualquer momento, você pode optar por executar uma operação de atualização do pool de nós. A operação de atualização de chaves SSH entra em vigor após a conclusão de uma atualização de imagem de nó.
Desativar visão geral do SSH
Para melhorar a segurança e dar suporte aos seus requisitos ou estratégia de segurança corporativa, o AKS suporta a desativação do SSH (visualização) tanto no cluster quanto no nível do pool de nós. Desativar SSH introduz uma abordagem simplificada em comparação com a única solução suportada, que requer a configuração de regras de grupo de segurança de rede na placa de interface de rede (NIC) de sub-rede/nó AKS. Desabilitar SSH suporta apenas pools de nós de Conjuntos de Escala de Máquina Virtual.
Quando você desabilita o SSH no momento da criação do cluster, ele entra em vigor depois que o cluster é criado. No entanto, quando você desabilita o SSH em um cluster ou pool de nós existente, o AKS não desabilita automaticamente o SSH. A qualquer momento, você pode optar por executar uma operação de atualização do pool de nós. A operação desativar/ativar chaves SSH entra em vigor após a conclusão da atualização da imagem do nó.
Nota
Quando você desabilita o SSH no nível do cluster, ele se aplica a todos os pools de nós existentes. Todos os pools de nós criados após essa operação terão o SSH habilitado por padrão, e você precisará executar esses comandos novamente para desativá-lo.
Parâmetro SSH | Description |
---|---|
disabled |
O serviço SSH está desativado. |
localuser |
O serviço SSH está habilitado e os usuários com chaves SSH podem acessar o nó com segurança. |
Nota
kubectl debug node continua a funcionar depois de desativar SSH porque não depende do serviço SSH.
Desabilitar SSH em uma nova implantação de cluster
Por padrão, o serviço SSH nos nós do cluster AKS está aberto a todos os usuários e pods em execução no cluster. Você pode impedir o acesso SSH direto de qualquer rede aos nós do cluster para ajudar a limitar o vetor de ataque se um contêiner em um pod ficar comprometido.
Use o az aks create
comando para criar um novo cluster e inclua o argumento para desabilitar o --ssh-access disabled
SSH (visualização) em todos os pools de nós durante a criação do cluster.
Importante
Depois de desativar o serviço SSH, você não pode SSH no cluster para executar tarefas administrativas ou solucionar problemas.
Nota
Em um cluster recém-criado, desabilitar o ssh configurará apenas o 1º nodepool do sistema. Todos os outros nodepools precisam ser configurados no nível do nodepool.
az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Após alguns minutos, o comando conclui e retorna informações formatadas em JSON sobre o cluster. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desativação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Desabilitar SSH em um cluster existente
Use o az aks update
comando para atualizar um cluster existente e inclua o argumento para desabilitar o --ssh-access disabled
SSH (visualização) em todos os pools de nós do cluster.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Após alguns minutos, o comando conclui e retorna informações formatadas em JSON sobre o cluster. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desativação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Para que a alteração entre em vigor, você precisa criar uma nova imagem de todos os pools de nós usando o az aks nodepool upgrade
comando.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Importante
Durante essa operação, todas as instâncias do Conjunto de Dimensionamento de Máquina Virtual são atualizadas e recriadas para usar a nova configuração SSH.
Desabilitar SSH para um novo pool de nós
Use o az aks nodepool add
comando para adicionar um pool de nós e inclua o argumento para desabilitar o SSH durante a --ssh-access disabled
criação do pool de nós.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Após alguns minutos, o comando conclui e retorna informações formatadas em JSON sobre o cluster indicando que mynodepool foi criado com êxito. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desativação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Desabilitar SSH para um pool de nós existente
Use o argumento [az aks nodepool update][az-aks-nodepool-update] command with the
--ssh-access disabled' para desabilitar o SSH (visualização) em um pool de nós existente.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Após alguns minutos, o comando conclui e retorna informações formatadas em JSON sobre o cluster indicando que mynodepool foi criado com êxito. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desativação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Para que a alteração entre em vigor, você precisa criar uma nova imagem do pool de nós usando o az aks nodepool upgrade
comando.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Reativar SSH em um cluster existente
Use o az aks update
comando para atualizar um cluster existente e inclua o --ssh-access localuser
argumento para reativar o SSH (visualização) em todos os pools de nós do cluster.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access localuser
A seguinte mensagem é retornada enquanto o processo é executado:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."
Depois de reativar o SSH, os nós não serão recriados automaticamente. A qualquer momento, você pode optar por executar uma operação de reimagem.
Importante
Durante essa operação, todas as instâncias do Conjunto de Dimensionamento de Máquina Virtual são atualizadas e recriadas para usar a nova chave pública SSH.
Reativar o SSH para um pool de nós específico
Use o az aks update
comando para atualizar um pool de nós específico e inclua o argumento para reativar o --ssh-access localuser
SSH (visualização) nesse pool de nós no cluster. No exemplo a seguir, nodepool1 é o pool de nós de destino.
az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser
A seguinte mensagem é retornada quando o processo é executado:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.
Importante
Durante essa operação, todas as instâncias do Conjunto de Dimensionamento de Máquina Virtual são atualizadas e recriadas para usar a nova chave pública SSH.
Status do serviço SSH
Execute as seguintes etapas para usar o shell de nó em um nó e inspecione o status do serviço SSH usando systemctl
.
Obtenha o shell bash padrão executando o comando command
kubectl node-shell <node>
.kubectl node-shell aks-nodepool1-20785627-vmss000001
Execute o
systemctl
comando para verificar o status do serviço SSH.systemctl status ssh
Se o SSH estiver desativado, a saída de exemplo a seguir mostra os resultados:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago
Se o SSH estiver habilitado, a saída de exemplo a seguir mostra os resultados:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago
Próximos passos
Para ajudar a solucionar problemas com a conectividade SSH para os nós de clusters, você pode visualizar os logs do kubelet ou os logs do nó mestre do Kubernetes.
Azure Kubernetes Service