Nesta página, descrevemos como configurar um Bastion Host na implantação conectada do Google Distributed Cloud para permitir que os engenheiros do Google acessem e resolvam problemas nos nós da zona conectada do Distributed Cloud usando o Secure Shell (SSH).
O Google fornece o código-fonte completo para que você possa criar uma máquina virtual Bastion Host personalizada com base nos requisitos da sua empresa.
Pré-requisitos
Esta seção lista os pré-requisitos para implantar a solução de Bastion Host conectado do Distributed Cloud.
Permitir a aprovação de acesso
O recurso Bastion Host usa a Aprovação de acesso da Transparência no Acesso para permitir que o Google solicite acesso aos seus dados. Você precisa ativar a Transparência no acesso e a Aprovação de acesso no projeto Google Cloud antes de implantar as máquinas virtuais do host bastion. Para mais informações, consulte as seguintes páginas:
Especificações da máquina virtual
A solução Bastion Host conectado do Distributed Cloud requer o equivalente a
uma implantação do OpenStack de tamanho small com as seguintes especificações:
- CPU: 1 vCPU
- RAM: 2GB
- Disco: 20 GB
O Google recomenda implantar máquinas virtuais de bastion host N+1 por Google Cloud região para aumentar a confiabilidade.
Requisitos de rede
A solução de bastion host conectado do Distributed Cloud exige que você configure as seguintes sessões de peering de rede para cada máquina virtual de bastion host:
- Northbound. Conecta a máquina virtual do Bastion Host à Internet. Requer acesso à Internet e precisa permitir conexões na porta 22 de endereços IP específicos que o Google fornece como parte da imagem do disco da solução de Bastion Host e do pacote de código-fonte.
- Sentido sul. Conecta a máquina virtual do Bastion Host pela porta 22 às zonas conectadas do Distributed Cloud correspondentes em uma única região Google Cloud .
- Gerenciamento. Conecta a máquina virtual do Bastion Host à sua rede local para fins de operação e manutenção. Configure essa sessão de peering de acordo com a política de segurança da sua organização.
Práticas recomendadas de segurança
O Google recomenda seguir as práticas recomendadas de segurança descritas nesta seção ao configurar uma solução de bastion host na sua implantação conectada do Distributed Cloud, além das políticas de segurança da sua organização:
- Siga a regra de privilégio mínimo e mantenha uma separação clara de tarefas para os usuários.
- Para todas as contas de usuário, exceto a de administrador, use apenas a autenticação baseada em certificado. Desative a autenticação baseada em senha e o acesso root às máquinas virtuais do Bastion Host.
- Rejeitar o acesso de todos os IPs na sessão de peering de saída que não fazem parte da lista de endereços IP de suporte fornecida pelo Google.
- Feche todas as portas na sessão de peering southbound, exceto a porta 22 (SSH), e permita apenas para endereços IP na lista de endereços IP de suporte fornecida pelo Google.
- Mantenha todas as máquinas virtuais do Bastion Host atualizadas. O Google fornece um novo pacote de código-fonte com cada patch de segurança e atualização de versão.
- Configure uma solução de alertas e auditoria que atenda às políticas de segurança da sua organização.
Ativar o suporte a Bastion Host
Para ativar o suporte Bastion Host na sua implantação conectada do Distributed Cloud, envie uma solicitação.
É preciso ativar e configurar individualmente o suporte a bastion host para cada uma das zonas conectadas do Distributed Cloud. Isso permite implantar diferentes configurações de acesso e rede que melhor se adequam às necessidades comerciais da sua organização para cada zona conectada do Distributed Cloud.
Obter o software do Bastion Host
O pacote de software do Bastion Host é enviado a você depois que o suporte do Google ativa o recurso Bastion Host para sua implantação conectada do Distributed Cloud. O pacote contém o seguinte:
- Código-fonte. É possível personalizar e criar suas próprias imagens de máquina virtual Bastion Host com base nos requisitos da sua empresa.
- Documentação. Documentação adicional para tarefas como configuração de certificados.
Criar uma imagem de máquina virtual do bastion host
Esta seção oferece uma visão geral das etapas necessárias para criar uma imagem de máquina virtual Bastion Host com base no código-fonte fornecido pelo Google. As instruções completas estão disponíveis no arquivo README que vem com o código-fonte.
Pré-requisitos
Você precisa dos seguintes itens para criar uma imagem de máquina virtual do bastion host:
- Uma máquina executando o Debian 11.
- A imagem mais recente do servidor de nuvem Debian.
- O software
qemu-img,qemu-system-x86_x64e GNUmtoolsinstalado na máquina. - Um arquivo chamado
host-user-key.pubque contém uma chave SSH pública para fazer login na instância do bastion host e iniciar uma sessãohost-user. Essa chave pode ser usada para autenticação direta ou como uma chave de assinatura de autoridade de certificação. A instância do Bastion Host precisa confiar nessa CA. - Um arquivo chamado
admin-user-key.pubque contém uma chave SSH pública para realizar tarefas administrativas na instância de bastion host de destino. Ela pode ser usada para autenticação direta ou como uma chave de assinatura de autoridade de certificação. A instância do Bastion Host precisa confiar nessa CA. - Um arquivo chamado
guest-user-key.pubque contém uma chave de assinatura de autoridade certificadora SSH pública fornecida pelo Google, que permite que o suporte do Google se autentique comoguest-userao se conectar à instância do bastion host.
Criar a imagem da máquina virtual
Siga as instruções fornecidas no arquivo README que acompanha o código-fonte para
criar a imagem da máquina virtual do Bastion Host com o código-fonte fornecido pelo Google. Os
exemplos neste guia se referem ao arquivo de imagem resultante como bastion-host.img.
Criar o pacote HIBA
Crie o pacote de instalação do Debian para a camada de software de autenticação de autorização baseada em identidade do host para SSH (HIBA) da seguinte maneira:
Instale as dependências necessárias usando o comando a seguir:
sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
Crie o pacote de instalação usando o seguinte comando:
./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir
O pacote de instalação é depositado no diretório /tmp/hiba-build-workdir e é
chamado hiba_x.y-z_amd64.deb, em que x, y e z denotam o número da versão do HIBA.
Gerar as configurações de cloud-init
Use o script generate-cloud-init.py para gerar as configurações cloud-init necessárias.
Você também pode gerar essas configurações usando suas próprias ferramentas. Essas configurações fazem o seguinte:
- Crie as contas de usuário necessárias na imagem da máquina virtual do Bastion Host e configure essas contas com as chaves SSH descritas anteriormente.
- Adicione um script que limite os privilégios da conta
guest-userapenas para participar de uma sessão estabelecida de multiplexador de terminal. - Adicione scripts que criam e gerenciam uma sessão de multiplexador de terminal.
- Prepare os arquivos de configuração do HIBA.
O script generate-cloud-init.py exige o pacote HIBA criado anteriormente e
os três arquivos que contêm as chaves SSH necessárias. Execute o script da seguinte maneira:
./generate-cloud-init.py \ --hiba-package="${WORK_DIR}/hiba_1.0-1_amd64.deb" \ --host-user-key="HOST_USER_KEY_FILE" \ --manager-user-key="ADMIN_USER_KEY_FILE" \ --guest-user-ca="GUEST_USER_KEY_FILE" \ "${WORK_DIR}/cloud-init/"
Substitua:
HOST_USER_KEY_FILE: o caminho completo e o nome do arquivohost-user-key.pub.ADMIN_USER_KEY_FILE: o caminho completo e o nome do arquivoadmin-user-key.pub.GUEST_USER_KEY_FILE: o caminho completo e o nome do arquivoguest-user-key.pub.
O script deposita o arquivo cloud-init.img no diretório cloud-init dentro do seu diretório de trabalho local.
Aplique as configurações cloud-init à imagem da máquina virtual do bastion host.
Use a ferramenta qemu-system-x86_64 para aplicar as configurações cloud-init geradas anteriormente
ao arquivo de imagem da máquina virtual do bastion host da seguinte maneira:
qemu-system-x86_64 \ -nographic \ -enable-kvm \ -smp 1 \ -m 1g \ -drive format=qcow2,index=0,file=${WORK_DIR}/bastion-host.img \ -drive format=raw,index=1,file=${WORK_DIR}/cloud-init/cloud-init.img \ -nic user,hostfwd=tcp::10022-:22
Se esse comando retornar um erro, talvez seja necessário redimensionar o disco na imagem da máquina virtual do Bastion Host.
É possível verificar se as configurações foram aplicadas com sucesso depois de inicializar a máquina virtual. Você vai ver uma saída semelhante a esta nos registros do auditd:
[ 52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.
Você também pode examinar manualmente as contas de usuário e a configuração do sshd para verificar.
Importar a imagem da máquina virtual do Bastion Host
Antes de importar a imagem da máquina virtual do Bastion Host totalmente configurada para sua
infraestrutura de implantação, crie um snapshot dela usando a ferramenta qemu-img da seguinte maneira:
qemu-img snapshot -c installed bastion-image.img
Siga os processos estabelecidos pela sua organização para importar a imagem da máquina virtual do Bastion Host para a infraestrutura de implantação.
Configurar a máquina virtual do bastion host
Siga as etapas nesta seção para configurar uma máquina virtual Bastion Host.
Configurar as contas de usuário necessárias
O recurso Bastion Host do Distributed Cloud Connected requer uma ou mais contas de usuário em cada uma das seguintes categorias:
- Gerenciamento. Esta é a conta de administrador da máquina virtual do bastion host. Ele tem acesso à raiz.
- Usuário host. Esta é a conta do engenheiro de operações. Ele pode iniciar e gerenciar sessões de multiplexador de terminal para o suporte do Google, mas não pode inserir comandos nessas sessões.
- Usuário visitante. Esta é a conta do engenheiro de suporte do Google. Ele pode estabelecer uma conexão SSH em uma sessão de multiplexador de terminal compartilhada com seu engenheiro de operações em uma máquina virtual Bastion Host. Ele não tem outros privilégios.
- Usuário conjunto. Essa conta estabelece a sessão do multiplexador de terminal na máquina virtual do Bastion Host. Seu engenheiro de operações e um engenheiro de suporte do Google se conectam juntos a essa sessão.
Configurar certificados
É necessário configurar certificados que permitam que as contas descritas na seção anterior
acessem a máquina virtual do Bastion Host. O pacote de software do bastion host inclui
um script chamado generate-cloud-init.py que gera a configuração cloud-init necessária
com as contas, chaves SSH e certificados necessários para cada conta.
Para instruções, consulte Gerar as configurações do cloud-init.
Configurar a geração de registros
Os registros do Bastion Host estão disponíveis em tempo real e sob demanda no daemon audit.
É possível gerenciar a configuração de geração de registros pelo arquivo auditd.conf. Você é responsável por fazer a rotação e exportar registros de máquinas virtuais de Bastion Host com base nos requisitos da sua empresa. Também é necessário manter espaço em disco suficiente para armazená-los na máquina virtual.
Testar a configuração
Conclua as etapas desta seção para testar a implantação da máquina virtual do bastion host, incluindo a conectividade de ambas as extremidades e o controle de acesso adequado para as contas de usuário necessárias. Também recomendamos que você trabalhe com o suporte do Google para realizar testes em tempo real.
Testar a implantação localmente
Verifique se é possível estabelecer uma sessão SSH como
host-usercom a máquina virtual do bastion host. Se isso falhar, verifique suas chaves e certificados SSH.Verifique se é possível iniciar uma sessão de multiplexador de terminal usando o seguinte comando:
./opt/create-shared-tmux-session
Verifique se a implantação conectada do Distributed Cloud pode ser acessada na máquina virtual do Bastion Host usando o seguinte comando:
ssh -vv bastion-user@TARGET_ADDRESS
Substitua
TARGET_ADDRESSpelo endereço IP da máquina do Distributed Cloud ou do switch ToR de destino.A solicitação será rejeitada pela autenticação SSH, mas as solicitações de transporte e autenticação SSH ainda precisam chegar à sua implantação conectada do Distributed Cloud. Se isso falhar, verifique a configuração do firewall.
Verifique se a Transparência no acesso e a Aprovação de acesso foram ativadas na sua organização Google Cloud e no projeto de destino, conforme descrito anteriormente neste guia.
Teste sua implantação em tempo real com o suporte do Google
Depois de testar a implantação do Bastion Host localmente, entre em contato com o suporte do Google para agendar uma sessão de teste em tempo real. Antes da sessão, o suporte do Google vai enviar uma solicitação de aprovação de acesso. Durante a sessão de teste em tempo real, você e o Google vão abordar o seguinte:
- Geração e aprovação de solicitações do Access Approval.
- Fluxo de trabalho de acesso completo para a implantação do Bastion Host.
- Registros da Transparência no acesso e da Aprovação de acesso.
- Como resolver os seguintes cenários:
- O Google tenta se conectar a uma instância de Bastion Host não especificada em uma solicitação de aprovação de acesso.
- O Google tenta se conectar a uma instância de bastion host quando você não iniciou uma sessão de multiplexador de terminal.
- O Google tenta se conectar a uma instância de bastion host depois que o pedido de aprovação de acesso correspondente é negado ou revogado.
- Você se desconectar ou encerrar a sessão do multiplexador de terminal.
A seguir
- Implantar cargas de trabalho no Distributed Cloud conectado
- Gerenciar máquinas
- Criar e gerenciar clusters
- Criar e gerenciar redes
- Criar e gerenciar pools de nós