A inicialização segura ajuda a garantir que o sistema execute apenas um software autêntico. Para isso, ela verifica a assinatura digital de todos os componentes de inicialização e interrompe o processo de inicialização se a verificação da assinatura falhar.
O Google Distributed Cloud (GDC) isolado usa o firmware da Unified Extensible Firmware Interface (UEFI) para gerenciar certificados e chaves usados na assinatura de software.
O firmware UEFI gerencia com segurança os certificados que contêm as chaves usadas pelos fabricantes de software para assinar o firmware do sistema, o carregador de inicialização do sistema e todos os binários que eles carregam. Para consultar a documentação do UEFI, acesse
https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf
.
Em cada inicialização, o firmware UEFI verifica a assinatura digital de cada componente de inicialização em relação às chaves aprovadas armazenadas com segurança. Qualquer componente de inicialização que não esteja devidamente assinado ou que simplesmente não tenha sido assinado não poderá ser executado. Para
ativar a inicialização segura, defina o tipo bootloader
da VM como uefi
.
Um vTPM é um módulo de plataforma confiável virtualizado. Consulte https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/ para mais informações sobre vTPMs. Ele é um chip de computador especializado que pode ser usado para proteger objetos, como chaves e certificados, que você usa para autenticar o acesso ao sistema. Também é possível usar o vTPM para proteger chaves secretas por meio de blindagem ou bloqueio. Para mais informações sobre o armazenamento lacrado, consulte https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Consulte o projeto Go-TPM no GitHub: https://github.com/google/go-tpm (em inglês), para exemplos de linguagem Go que ilustram como usar um vTPM para essa finalidade.
Antes de começar
Para usar os comandos da interface de linha de comando (CLI) gdcloud
, verifique se você baixou, instalou
e configurou a CLI gdcloud
.
Todos os comandos do Distributed Cloud usam a CLI gdcloud
ou kubectl
e exigem um ambiente de sistema operacional (SO).
Extrair o caminho do arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Solicitar permissões e acesso
Para executar as tarefas listadas nesta página, é preciso ter o papel de administrador de máquina virtual do projeto. Siga as etapas para
verificar
se você tem o papel de administrador de máquinas virtuais do projeto (project-vm-admin
) no namespace
do projeto em que a VM reside.
Ativar a inicialização segura
Ative a inicialização segura para uma VM. Use as instruções a seguir para uma VM chamada
VM_NAME
no namespace do projeto
(PROJECT_NAMESPACE
).
Atualize o recurso personalizado da VM para ativar a inicialização segura:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: bootType: uefi enableSecureBoot: true '
Se a VM estiver em execução, reinicie-a seguindo as instruções para reiniciar uma VM.
Verifique se você ativou a inicialização segura. Estabeleça uma conexão SSH com a VM e execute o seguinte comando:
mokutil --sb-state
Se você tiver ativado a inicialização segura, o comando vai retornar
SecureBoot enabled
.Se a ferramenta
mokutil
informar que você não ativou a inicialização segura, siga as etapas na seção Resolver problemas de configuração da inicialização segura.
Resolver problemas na configuração de inicialização segura
Abra o recurso personalizado da VM em um editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Procure campos ou valores ausentes, conforme mostrado no campo
spec
em "Execute o seguinte comando". Esses campos são obrigatórios.Se algum estiver faltando ou incorreto, edite
spec
para adicionar os campos ausentes e corrigir os valores errados.Salve o arquivo.
Siga as etapas em Reiniciar a VM.
Se as etapas anteriores não resolverem o problema, consulte a documentação correspondente ao sistema operacional (SO) da VM para verificar se a versão do SO é compatível com a inicialização segura.
Ativar o módulo de plataforma confiável virtual (vTPM)
Ative o vTPM para uma VM. Use as instruções a seguir para uma VM chamada
VM_NAME
no namespace
do projeto (PROJECT_NAMESPACE
).
Atualize seu recurso personalizado de VM para ativar o vTPM:
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $' spec: shieldConfig: enableVtpm: true '
Se a VM estiver em execução, reinicie-a seguindo as instruções para reiniciar uma VM.
Verifique se você ativou o vTPM. Estabeleça uma conexão SSH com a VM e execute o seguinte comando:
dmesg | grep -i tpm
Se você tiver ativado o vTPM, o comando vai retornar o módulo TPM como parte das tabelas ACPI. A saída será assim:
[ 7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
Se o
ACPI tables
não mostrar o módulo TPM, siga as etapas na seção Solução de problemas da configuração do vTPM.
Resolver problemas de configuração do vTPM
Abra o recurso personalizado da VM em um editor:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
Procure campos ou valores ausentes, conforme mostrado no campo
spec
em Execute o seguinte comando. Esses campos são obrigatórios.Se algum estiver faltando ou incorreto, edite
spec
para adicionar os campos ausentes e corrigir os valores errados.Salve o arquivo.
Siga as etapas em Reiniciar a VM.
Se as etapas anteriores não resolverem o problema, consulte a documentação correspondente ao sistema operacional (SO) da VM para verificar se a versão do SO é compatível com o vTPM.