Para determinar que uma instância de VM confidencial do Intel TDX está em execução Google Cloud, é necessário estabelecer a provenance dela. O estabelecimento da origem envolve as seguintes verificações:
Verificação de cotação e vinculação de desafio: verifique a autenticidade da cotação do Intel TDX usando o certificado raiz incorporado da Intel e, opcionalmente, verifique a atualização em relação a um desafio esperado no campo
REPORT_DATAda cotação.Verificação de origem do host: extraia o ID de provisionamento da plataforma (PPID) do certificado PCK incorporado da cotação. Use o PPID para buscar o documento JSON do registro do host em um bucket do Cloud Storage para verificar a origem.
Verificação de origem da instância: use o número do projeto, a zona e o ID da instância (PZID) da instância de VM confidencial para calcular um resumo SHA-384, e, em seguida, verifique se o resumo corresponde ao valor do campo
MR_OWNERna cotação do Intel TDX.
Verificar a origem remotamente
Recomendamos o uso da
gceprovenance
ferramenta para determinar a origem das máquinas Intel TDX. A ferramenta automatiza a extração dos valores necessários e a busca do documento de origem.
Para verificar a origem remotamente usando gceprovenance, siga estas instruções:
Clone o repositório do GitHub
go-tdx-guestno seu verificador remoto:git clone https://github.com/google/go-tdx-guest.gitDependendo do sistema operacional convidado, talvez seja necessário instalar algumas dependências do Go para criar as ferramentas em
go-tdx-guest. A maneira de fazer isso muda dependendo do sistema operacional. Por exemplo, os comandos a seguir instalam as dependências necessárias no Ubuntu:sudo apt update sudo apt install golang-go build-essentialCrie a ferramenta
gceprovenance:go build -C go-tdx-guest/tools/gceprovenance .Gere um desafio de 64 bytes que a instância de VM confidencial do Intel TDX precisa vincular à cotação:
head -c 64 /dev/urandom > challenge.binEnvie o arquivo de desafio para a instância de VM confidencial do Intel TDX que você quer verificar.
Na instância de VM confidencial do Intel TDX, transmita o arquivo de desafio como entrada (
inblob) para o Linux ConfigFS em/sys/kernel/config/tsm/report/:sudo mkdir -p /sys/kernel/config/tsm/report/report0 sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'O desafio é gravado no campo
REPORT_DATAda cotação pelo sistema.Recupere os bytes de cotação brutos do arquivo
outblobresultante e limpe o diretórioreport0:sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin sudo rmdir /sys/kernel/config/tsm/report/report0Consulte o servidor de metadados local para o ID da instância, o número do projeto e a zona da instância de VM confidencial:
PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google") INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google") ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google") ZONE=$(basename "$ZONE_PATH")Envie o binário de cotação (
quote.bin), o número do projeto, o ID da instância e a zona para o verificador remoto.No verificador remoto, converta o desafio em uma string hexadecimal de 128 caracteres e transmita-o para
gceprovenance. A ferramenta verifica a assinatura da cotação e as vinculações de origem:CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin) ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \ -quote PATH_TO_QUOTE \ -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \ -challenge $CHALLENGE_HEXPreencha o seguinte:
PATH_TO_QUOTE: o caminho para o arquivo de cotação fornecido.PROJECT_NUMBER: o número do projeto fornecido.ZONE: a zona fornecida.INSTANCE_ID: o ID da instância de VM confidencial fornecido.
Uma resposta bem-sucedida é semelhante a esta:
GCE TDX provenance verification: OK Instance Zone: ZONE Project: PROJECT_NUMBER Instance ID: INSTANCE_ID Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: PPID Quote: tdx_quote.bin Host registry: host_registry.json
Para outros gceprovenance comandos, consulte o
repositório do GitHub.