GCP - Compute Instances

Support HackTricks

Informações Básicas

Google Cloud Compute Instances são máquinas virtuais personalizáveis na infraestrutura de nuvem do Google, oferecendo poder de computação escalável e sob demanda para uma ampla gama de aplicações. Elas fornecem recursos como implantação global, armazenamento persistente, escolhas 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.

VM Confidencial

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.

Disco & Criptografia de Disco

É 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 excluir o disco quando a instância for excluída

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

Implantar 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.

Conta de Serviço

Por padrão, a conta de serviço padrão do Compute Engine será usada. O email desta SA é algo 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.

Rede

  • IP Forwarding: É possível habilitar IP forwarding desde a criação da instância.

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

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

Segurança Extra

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

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

  • Habilitar vTPM: Virtual Trusted Platform Module (vTPM) valida a integridade de pré-inicialização e inicialização da sua VM convidada e oferece geração e proteção de chaves.

  • Supervisão de integridade: Monitoramento de integridade permite monitorar e verificar a integridade de tempo de execução da inicialização de suas instâncias de VM protegidas usando relatórios do Stackdriver. Requer que o vTPM esteja habilitado.

Acesso à VM

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.

Metadados

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

Também é possível adicionar valores de metadados extras de chave-valor 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"

Moreover, auth token for the attached service account 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 usada for revogada: Nada ou desligar a VM.

Support HackTricks

Last updated