O atestado de uma instância de VM confidencial é o processo de aumentar a confiança de que a instância é legítima e está operando em um estado esperado. É uma ferramenta vital para validar se sua carga de trabalho está sendo executada em um ambiente de execução confiável (TEE).
Atestação baseada em CPU
Os relatórios de atestação são a evidência de que sua VM está sendo executada em um TEE. Eles são gerados pela instância de VM confidencial e, dependendo da tecnologia de computação confidencial usada, são assinados por um vTPM baseado em software ou por um módulo de segurança confiável (TSM) dedicado baseado em hardware. Os relatórios de atestado contêm medições relacionadas à atividade do carregador de inicialização, à configuração de hardware, à configuração de firmware e a outros eventos registrados no momento da inicialização que ajudam a validar o estado e a identidade da instância de VM confidencial.
O tipo de relatório de atestado que você pode solicitar depende da tecnologia de computação confidencial usada pela sua instância de VM confidencial.
| Origem da assinatura | Tipo | Cobertura do relatório | Tecnologia de computação confidencial | ||
|---|---|---|---|---|---|
| SEV | SEV-SNP | Intel TDX | |||
| vTPM gerenciado pelo Google | vTPM baseada em software | Atividade do carregador de inicialização, integridade do kernel | |||
| AMD Secure Processor1 | TSM baseado em hardware | Ambiente de hardware e firmware | |||
| Módulo Intel TDX | TSM baseado em hardware | Ambiente de hardware e firmware2 | |||
1. O processador seguro da AMD é um recurso compartilhado disponível para todos os hosts no servidor físico em que ele está presente. Um host pode limitar o acesso de convidados ao processador seguro, e as atualizações de firmware do processador seguro (consideradas eventos do host) podem acontecer a qualquer momento.
2. O componente de inicialização inicial (o firmware) para instâncias de VM confidencial do TDX é medido na medição do domínio de confiança (MRTD, na sigla em inglês), enquanto o restante da cadeia de inicialização é medido nos registros de medição de tempo de execução (RTMR, na sigla em inglês), ancorando todas as medições no hardware. Os usuários podem estender o registro RTMR[3] com medições do espaço do usuário.
Solicitar um relatório de atestado
É possível solicitar relatórios de atestado do vTPM gerenciado pelo Google, do processador seguro da AMD e do módulo TDX da Intel com as seguintes ferramentas:
Go-TPM (link em inglês)
Ferramentas Go-TPM (a versão 0.4.4 ou mais recente é necessária para compatibilidade com AMD SEV-SNP e Intel TDX)
O evento GceNonHostInfo no registro de eventos de atestado do vTPM mostra qual tecnologia de
computação confidencial está em uso. As ferramentas Go-TPM podem solicitar um
relatório de atestado do AMD Secure Processor se o AMD SEV-SNP for usado ou do
módulo Intel TDX se o Intel TDX for usado.
Somente para relatórios de atestado de hardware, é possível enviar um desafio criptográfico ao TSM com as seguintes ferramentas:
Para AMD SEV-SNP, use SEV Guest. Os certificados da chave de endosso do chip de versão (VCEK) são armazenados em cache na VM em vez de serem solicitados diretamente do sistema de distribuição de chaves (KDS) da AMD.
Para o Intel TDX, use TDX Guest.
Intel TDX no Ubuntu
Para imagens do Ubuntu no kernel 1016 e mais recentes, o módulo tdx_guest está no
pacote linux-modules-extra.
Para instalar o pacote linux-modules-extra, execute o seguinte comando:
sudo apt-get install linux-modules-extra-gcp
Se você tiver problemas ao instalar o linux-modules-extra-gcp, atualize o kernel executando o seguinte comando:
sudo apt-get upgrade
É necessário reiniciar ou carregar manualmente o módulo para que as mudanças entrem em vigor. Para carregar o módulo manualmente, execute este comando:
sudo modprobe tdx_guest
Verificar relatórios de atestado com o Google Cloud Attestation
Se o modelo de confiança permitir, em vez de gravar e executar um verificador de atestado, use o Google Cloud Attestation. Isso envolve o uso de ferramentas Go-TPM para recuperar uma cotação de atestação do vTPM de uma instância de VM confidencial e enviá-la ao Google Cloud Attestation para verificação. Se a cotação passar na verificação, o Google Cloud Attestation vai retornar um token com informações da VM que você pode comparar com sua própria política para confirmar se a VM é confiável ou não.
O Google Cloud Attestation pode ser usado com instâncias de VMs confidenciais que usam as seguintes tecnologias de Computação Confidencial:
AMD SEV
Intel TDX em tipos de máquina C3
Para um exemplo de ponta a ponta de como trabalhar com o Google Cloud Attestation, consulte o codelab Atestado remoto do vTPM em máquinas virtuais confidenciais.
Atestado com base na GPU
A atestação da GPU envolve a verificação do driver da GPU, do dispositivo da GPU ou de ambos.
Problemas conhecidos
A atestação da GPU pode falhar, informando um registro de medição incompatível no índice 9. O Google e a NVIDIA estão trabalhando em uma correção.
Para contornar o problema, faça uma parada e reinicialização completas da VM confidencial. Reiniciar a VM no SO convidado dela não corrige o problema.
Atestado do driver da GPU
Para garantir um atestado robusto, ative a Inicialização segura ao criar a instância de VM confidencial.
A Inicialização segura permite o carregamento apenas de drivers de GPU assinados pela distribuição. Essa verificação é essencial para confirmar que o driver da GPU foi lançado e fornecido oficialmente pela NVIDIA. Um driver oficial é importante porque estabelece uma sessão segura do Protocolo de segurança e modelo de dados (SPDM) com dispositivos de GPU e serve como a raiz de confiança para a atestação de dispositivos de GPU NVIDIA.
Atestado de dispositivo de GPU NVIDIA
Além da atestação do driver de GPU, você pode atestar ainda mais os dispositivos de GPU NVIDIA. A atestação do dispositivo GPU NVIDIA verifica o BIOS de vídeo (VBIOS) em execução na GPU. Isso permite identificar versões de software da NVIDIA e avaliar a presença de possíveis vulnerabilidades.
Para realizar a atestação de dispositivo da GPU NVIDIA, instale as dependências go-nvattest-tools e crie a ferramenta nvattest em google/go-nvattest-tools:
Instale as dependências de build:
sudo apt-get update && sudo apt-get install -y \ git gcc pkg-config libxml2-dev curlBaixe e instale o Go:
GO_VERSION="1.25.0" curl -fsSL \ "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \ -o go.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz rm go.tar.gz export PATH=/usr/local/go/bin:$PATHClone o repositório e compile o binário
nvattest:git clone https://github.com/google/go-nvattest-tools.git cd go-nvattest-tools go build -o nvattest ./cmd/nvattest
Atestação local do dispositivo de GPU
Com o atestado de dispositivo de GPU local, é possível realizar o processo de atestado diretamente na instância de VM e conferir os resultados localmente para verificar a integridade da GPU.
Para fazer a atestação de um dispositivo GPU local em tempo real, execute a ferramenta nvattest diretamente
na sua instância de VM confidencial:
sudo ./nvattest attest --device=gpu
Se quiser, separe a coleta de evidências da verificação:
Gere um nonce hexadecimal de 32 bytes e colete as evidências de atestado:
NONCE=$(openssl rand -hex 32) sudo ./nvattest collect-evidence \ --device=gpu \ --nonce="${NONCE}" \ --evidence_file=gpu_evidence.jsonVerifique as evidências coletadas localmente:
./nvattest attest \ --device=gpu \ --nonce="${NONCE}" \ --evidence_file=gpu_evidence.json