GCP - Compute Instances

Support HackTricks

Basic Information

As Instâncias de Computação do Google Cloud são máquinas virtuais personalizáveis na infraestrutura de nuvem do Google, oferecendo poder computacional escalável e sob demanda para uma ampla gama de aplicações. Elas fornecem recursos como implantação global, armazenamento persistente, opções flexíveis de SO e fortes integrações de rede e segurança, tornando-as uma escolha versátil para hospedar sites, processar dados e executar aplicações de forma eficiente na nuvem.

Confidential VM

As VMs Confidenciais usam recursos de segurança baseados em hardware oferecidos pela última geração de processadores AMD EPYC, que incluem criptografia de memória e virtualização criptografada segura. Esses recursos permitem que a VM proteja os dados processados e armazenados dentro dela, até mesmo do sistema operacional host e do hipervisor.

Para executar uma VM Confidencial, pode ser necessário alterar coisas como o tipo da máquina, interface de rede, imagem do disco de inicialização.

Disk & Disk Encryption

É possível selecionar o disco a ser usado ou criar um novo. Se você selecionar um novo, pode:

  • Selecionar o tamanho do disco

  • Selecionar o SO

  • Indicar se deseja deletar o disco quando a instância for deletada

  • Criptografia: Por padrão, uma chave gerenciada pelo Google será usada, mas você também pode selecionar uma chave do KMS ou indicar chave bruta a ser usada.

Deploy Container

É possível implantar um container dentro da máquina virtual. É possível configurar a imagem a ser usada, definir o comando a ser executado dentro, argumentos, montar um volume e variáveis de ambiente (informações sensíveis?) e configurar várias opções para este container, como executar como privilegiado, stdin e pseudo TTY.

Service Account

Por padrão, a conta de serviço padrão do Compute Engine será usada. O e-mail desta SA é como: <proj-num>-compute@developer.gserviceaccount.com Esta conta de serviço tem papel de Editor sobre todo o projeto (altos privilégios).

E os escopos de acesso padrão são os seguintes:

  • https://www.googleapis.com/auth/devstorage.read_only -- Acesso de leitura a buckets :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

No entanto, é possível conceder cloud-platform com um clique ou especificar personalizados.

Firewall

É possível permitir tráfego HTTP e HTTPS.

Networking

  • IP Forwarding: É possível habilitar o encaminhamento de IP a partir da criação da instância.

  • Hostname: É possível dar à instância um hostname permanente.

  • Interface: É possível adicionar uma interface de rede.

Extra Security

Essas opções aumentarão a segurança da VM e são recomendadas:

  • Secure boot: O Secure boot ajuda a proteger suas instâncias de VM contra malware e rootkits em nível de inicialização e kernel.

  • Enable vTPM: O Módulo de Plataforma Confiável Virtual (vTPM) valida a integridade de pré-inicialização e inicialização da sua VM convidada e oferece geração e proteção de chaves.

  • Integrity supervision: A supervisão de integridade permite que você monitore e verifique a integridade de inicialização em tempo de execução de suas instâncias de VM blindadas usando relatórios do Stackdriver. Requer que o vTPM esteja habilitado.

VM Access

A maneira comum de habilitar o acesso à VM é permitindo certas chaves públicas SSH para acessar a VM. No entanto, também é possível habilitar o acesso à VM via serviço os-config usando IAM. Além disso, é possível habilitar 2FA para acessar a VM usando este serviço. Quando este serviço está habilitado, o acesso via chaves SSH é desabilitado.

Metadata

É possível definir automação (userdata no AWS) que são comandos de shell que serão executados toda vez que a máquina for ligada ou reiniciada.

É também possível adicionar valores de chave-valor de metadados extras que estarão acessíveis a partir do endpoint de metadados. Essas informações são comumente usadas para variáveis de ambiente e scripts de inicialização/desligamento. Isso pode ser obtido usando o método describe de um comando na seção de enumeração, mas também pode ser recuperado de dentro da instância acessando o endpoint de metadados.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Além disso, o token de autenticação para a conta de serviço anexada e informações gerais sobre a instância, rede e projeto também estarão disponíveis no endpoint de metadados. Para mais informações, consulte:

Criptografia

Uma chave de criptografia gerenciada pelo Google é usada por padrão, mas uma chave de criptografia gerenciada pelo cliente (CMEK) pode ser configurada. Você também pode configurar o que fazer quando a CMEK utilizada for revogada: Notificar ou desligar a VM.

Support HackTricks

Last updated