Gerenciar o SSH para acesso seguro aos nós do Serviço de Kubernetes do Azure (AKS)
Este artigo descreve como configurar as chaves SSH (versão prévia) nos seus clusters ou pools de nós do AKS, durante a implantação inicial ou em um momento posterior.
O AKS oferece suporte às seguintes opções de configuração para gerenciar as chaves SSH nos nós do cluster:
- Criar um cluster com as chaves SSH
- Atualizar as chave SSH em um cluster do AKS existente
- Desabilitar e habilitar o serviço SSH
Importante
As versões prévias do recurso AKS estão disponíveis em uma base de autoatendimento e aceitação. As visualizações são fornecidas "como estão" e "conforme disponíveis" e estão excluídas dos acordos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:
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 Desabilitar. - Os recursos Criar e Atualizar SSH oferecem suporte aos pools de nós Linux, Windows e Linux do Azure nos clusters existentes.
- O recurso Desabilitar SSH não tem suporte nesta versão prévia nos pools de nós que executam o sistema operacional Windows Server.
Instale a extensão aks-preview
da CLI do Azure
Instale a extensão aks-preview usando o comando
az extension add
.az extension add --name aks-preview
Atualize para a última versão da extensão usando o comando
az extension update
.az extension update --name aks-preview
Registrar o sinalizador de recurso DisableSSHPreview
Para usar o recurso Desabilitar SSH, execute as etapas a seguir para registrá-lo e habilitá-lo na sua assinatura.
Registre o sinalizador de recurso
DisableSSHPreview
usando o comandoaz feature register
.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Demora alguns minutos para o status exibir Registrado.
Verifique o status do registro usando o comando
az feature show
.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Quando o status reflete Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando
az provider register
.az provider register --namespace Microsoft.ContainerService
Criar um cluster do AKS com as chaves SSH
Use o comando az aks create para implantar um cluster do AKS com uma chave pública SSH. É possível especificar a chave ou um arquivo de chave usando o argumento --ssh-key-value
.
Parâmetro SSH | Descrição | Valor padrão |
---|---|---|
--generate-ssh-key |
Se você não tiver suas chaves SSH, especifique --generate-ssh-key . A CLI do Azure gera automaticamente um conjunto de chaves SSH e as salva no diretório padrão ~/.ssh/ . |
|
--ssh-key-value | Caminho de chave pública ou conteúdo de chave a ser instalado em VMs de nó para acesso por SSH. Por exemplo, ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm . |
~/.ssh/id_rsa.pub |
--no-ssh-key |
Se você não precisar de uma chave SSH, especifique esse argumento. Porém, o AKS gera automaticamente um conjunto de chaves SSH pois a dependência de recursos da Máquina Virtual do Azure não dá suporte a um arquivo 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. |
Observação
Se não forem especificados parâmetros, o padrão da CLI do Azure é fazer referência às chaves SSH armazenadas no arquivo ~/.ssh/id_rsa.pub
. 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
.
A seguir estão exemplos desse comando:
Para criar um cluster e usar as chaves SSH geradas padrão:
az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
Para especificar um novo valor de chave SSH pública, inclua o argumento
--ssh-key-value
:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Atualizar a chave SSH pública em um cluster do AKS existente
Use o comando az aks update
para atualizar a chave pública SSH (versão prévia) no seu cluster. Essa operação irá atualizar a chave em todos os pools de nós. Você pode especificar uma chave ou um arquivo de chave usando o argumento --ssh-key-value
.
Observação
Há suporte para a atualização das chaves SSH nos conjuntos de dimensionamento de máquinas virtuais do Azure com os clusters do AKS.
A seguir estão exemplos desse comando:
Para especificar um novo valor de chave SSH pública, inclua o argumento
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
Para especificar um arquivo de chave SSH pública, especifique-o com o argumento
--ssh-key-value
: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 atualizará automaticamente o pool de nós. A qualquer momento, você pode optar por executar uma operação de atualização de nodepool. A operação de atualização de chaves SSH entrará em vigor assim que a atualização da imagem do nó for concluída.
Desabilitar visão geral do SSH
Para melhorar a segurança e dar suporte aos requisitos ou à estratégia de segurança corporativa, o AKS oferece suporte à desativação do SSH (versão prévia) no cluster e no nível do pool de nós. Desabilitar o SSH introduz uma abordagem simplificada em comparação com a única solução com suporte, que requer a configuração regras de grupo de segurança de rede na placa de interface de rede (NIC) de sub-rede/nó do AKS. Desabilitar o SSH só dá suporte a pools de nós de Conjuntos de Dimensionamento de Máquinas Virtuais.
Quando você desabilitar o SSH no momento da criação do cluster, ele entrará em vigor após a criação do cluster. Entretanto, quando você desabilitar o SSH em um cluster ou pool de nós existente, o AKS não desabilitará o SSH automaticamente. Você pode optar por executar uma operação de atualização do nodepool a qualquer momento. A operação de desabilitar/habilitar as chaves SSH entrará em vigor assim que a atualização da imagem do nó for concluída.
Observação
Quando você desabilita o SSH no 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 desabilitá-lo.
Parâmetro SSH | Descrição |
---|---|
disabled |
O serviço SSH está desabilitado. |
localuser |
O serviço SSH está habilitado e os usuários com chaves SSH podem acessar o nó com segurança. |
Observação
O nó de depuração kubectl continua a funcionar depois que você desabilitar o SSH pois ele não depende do serviço SSH.
Desabilitar o SSH em uma nova implantação do cluster
Por padrão, o serviço SSH nos nós do cluster do AKS está aberto para 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 comando az aks create
para criar um novo cluster e inclua o argumento --ssh-access disabled
para desabilitar o SSH (versão prévia) em todos os pools de nós durante a criação do cluster.
Importante
Depois de desabilitar o serviço SSH, você não poderá entrar no cluster para executar tarefas administrativas ou solucionar problemas.
Observação
Em um cluster recém-criado, desabilitar o ssh configurará apenas o 1º nodepool do sistema. Todos os outros nós 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 será concluído e retornará informações no formato JSON sobre o cluster. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desabilitação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Desabilitar o SSH em um cluster existente
Use o comando az aks update
para atualizar um cluster existente e inclua o argumento --ssh-access disabled
para desabilitar o SSH (versão prévia) em todos os pools de nós no cluster.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Após alguns minutos, o comando será concluído e retornará informações no formato JSON sobre o cluster. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desabilitação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Para que a alteração entre em vigor, você precisa refazer a imagem de todos os pools de nós usando o comando az aks nodepool upgrade
.
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áquinas virtuais serão atualizadas e recriadas para usarem a nova chave SSH.
Desabilitar o SSH para um novo pool de nós
Use o comando az aks nodepool add
para adicionar um pool de nós e incluir o argumento --ssh-access disabled
para desabilitar o SSH durante a criação do pool de nós.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Depois de alguns minutos, o comando é concluído e retorna as informações formatadas pelo JSON a respeito do cluster, indicando que o mynodepool foi criado com sucesso. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desabilitação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Desabilitar o 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 (versão prévia) em um pool de nós existente.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Depois de alguns minutos, o comando é concluído e retorna as informações formatadas pelo JSON a respeito do cluster, indicando que o mynodepool foi criado com sucesso. O exemplo a seguir se assemelha à saída e aos resultados relacionados à desabilitação do SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Para que a alteração entre em vigor, você precisa refazer a imagem de todos os pools de nós usando o comando az aks nodepool upgrade
.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Reabilitar o SSH em um cluster existente
Use o comando az aks update
para atualizar um cluster existente e inclua o argumento --ssh-access localuser
para reabilitar o SSH (versão prévia) em todos os pools de nós no 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 reabilitar o SSH, os nós não serão reimaginados automaticamente. Você pode optar por executar uma operação de reimagem a qualquer momento.
Importante
Durante essa operação, todas as instâncias do conjunto de dimensionamento de máquinas virtuais são atualizadas e criam uma nova imagem para usar a nova chave pública SSH.
Reabilitar o SSH para um pool de nós específico
Use o comando az aks update
para atualizar um pool de nós específico e incluir o argumento --ssh-access localuser
para reabilitar o SSH (versão prévia) 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áquinas virtuais são atualizadas e criam uma nova imagem para usar a nova chave pública SSH.
Status do serviço SSH
Execute as etapas a seguir para usar o shell do nó em um nó e inspecionar o status do serviço SSH usando systemctl
.
Obtenha o shell bash padrão executando o comando
kubectl node-shell <node>
comando.kubectl node-shell aks-nodepool1-20785627-vmss000001
Execute o comando
systemctl
para verificar o status do serviço SSH.systemctl status ssh
Se o SSH estiver desabilitado, a seguinte saída de exemplo mostrará 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 mostrará 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óximas etapas
Para ajudar a solucionar problemas com a conectividade SSH com os nós de clusters, você pode exibir os logs do kubelet ou exibir os logs de nós mestres do Kubernetes.
Azure Kubernetes Service