Um operador de carga de trabalho pode transmitir opções para uma VM de carga de trabalho do Confidential Space para determinar o comportamento dela antes da execução. Embora algumas flags tenham valores obrigatórios que não mudam, você ainda precisa fazer as seguintes escolhas:
Se a VM será baseada em uma imagem de produção ou de depuração do Confidential Space.
Se você quer usar a tecnologia de computação confidencial AMD SEV ou Intel TDX.
Quais variáveis de metadados da VM precisam ser transmitidas, incluindo detalhes como qual imagem de contêiner de carga de trabalho executar, se é necessário fazer login no Cloud Logging e quais variáveis de ambiente definir.
Qual conta de serviço anexar à VM para executar a carga de trabalho e quais permissões ela precisa para acessar dados confidenciais em outros projetos e gravar os resultados em algum lugar.
Em qual zona a instância de VM deve ser executada.
Confira um exemplo que cria uma VM confidencial na zona us-west1-b
com base
na imagem de produção mais recente do Confidential Space e executa um contêiner do Docker chamado
WORKLOAD_CONTAINER_NAME:
gcloud compute instances create workload-vm-name \
--confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
--machine-type=MACHINE_TYPE_NAME \
--maintenance-policy=MAINTENANCE_POLICY \
--shielded-secure-boot \
--image-project=confidential-space-images \
--image-family=IMAGE_FAMILY \
--metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
--service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--zone=us-west1-b
As opções usadas neste exemplo estão detalhadas na tabela a seguir.
Sinalização | Descrição |
---|---|
--confidential-compute-type |
Obrigatório. Informa ao Compute Engine qual tecnologia de computação confidencial usar ao criar uma instância de VM confidencial.
Substitua
A tecnologia de Computação confidencial precisa corresponder à família de imagens selecionada. |
--machine-type |
Opcional. Especifica um nome de tipo de máquina de VM confidencial. Consulte Configurações compatíveis para saber quais tipos de máquina são compatíveis com AMD SEV e Intel TDX. |
--maintenance-policy |
Para tipos de máquinas N2D que usam SEV, defina como MIGRATE
para oferecer suporte à migração em tempo real. Para todos os outros tipos de máquinas, defina esse valor como TERMINATE , já que eles
não são compatíveis com a migração em tempo real.
|
--shielded-secure-boot |
Obrigatório. Informa ao Compute Engine para usar a Inicialização segura na instância. |
--image-project=confidential-space-images |
Obrigatório. Informa ao Compute Engine para procurar no projeto
confidential-space-images a
imagem do Confidential Space.
|
|
Obrigatório. Informa ao Compute Engine para usar a imagem mais recente do Confidential Space,
que faz parte do projeto
Para usar uma imagem de produção com sua carga de trabalho final que processa
dados confidenciais, substitua
Para usar a imagem de depuração para
monitoramento e depuração, substitua
A família de imagens usada precisa corresponder à tecnologia de computação confidencial selecionada. |
--metadata |
Obrigatório. Altera o comportamento da VM do Confidential Space transmitindo
variáveis. A chave e o valor de Para conferir os pares de chave-valor disponíveis, consulte Variáveis de metadados. |
--service-account |
Opcional. A conta de serviço anexada à instância de VM que executa a carga de trabalho e representa contas de serviço anexadas a pools de identidades de carga de trabalho em outros projetos. Se não for especificada, a conta de serviço padrão do Compute Engine será usada. |
--scopes=cloud-platform |
Obrigatório. Define o
escopo de acesso.
O escopo cloud-platform é um escopo do OAuth para
a maioria dos Google Cloud serviços
e permite que a VM se comunique com o verificador de atestado.
|
--zone |
Obrigatório. A zona em que a instância de VM é executada. O Confidential Space exige os seguintes serviços, que estão disponíveis em locais específicos: |
Conta de serviço anexada
Uma conta de serviço precisa ser anexada à VM confidencial de uma carga de trabalho para executar a carga de trabalho. A conta de serviço precisa ser configurada da seguinte maneira:
Com os seguintes papéis:
roles/confidentialcomputing.workloadUser
para gerar um token de atestado.roles/artifactregistry.reader
para recuperar uma imagem de contêiner de carga de trabalho armazenada no Artifact Registry.roles/logging.logWriter
se você quiser redirecionarSTDOUT
eSTDERR
para o Cloud Logging.
Com acesso de leitura a onde os colaboradores de dados armazenam os dados confidenciais, por exemplo, um bucket do Cloud Storage ou uma tabela do BigQuery.
Com acesso de gravação ao local em que a carga de trabalho deve gerar os dados, por exemplo, um bucket do Cloud Storage. Os colaboradores de dados precisam ter acesso de leitura a esse local.
Além disso, os colaboradores de dados e os operadores de carga de trabalho precisam configurar o seguinte:
Os colaboradores de dados precisam adicionar a conta de serviço ao provedor do pool de identidades de carga de trabalho como uma condição de atributo:
'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
O operador de carga de trabalho precisa do papel
roles/iam.serviceAccountUser
para representar a conta de serviço. Isso permite que eles anexem a VM a uma carga de trabalho para que ela possa executar a carga de trabalho.
Variáveis de metadados
É possível mudar o comportamento da VM de carga de trabalho do Confidential Space transmitindo variáveis
para a opção --metadata
ao criar a VM.
Para transmitir várias variáveis, primeiro defina o delimitador prefixando o valor --metadata
com ^~^
. Isso define o delimitador como ~
, já que ,
é usado em
valores variáveis.
Exemplo:
metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"
A tabela a seguir detalha as variáveis de metadados que podem ser definidas para a VM de carga de trabalho.
Chave de metadados | Tipo | Descrição e valores |
---|---|---|
Interage com:
|
String |
Obrigatório. Ele aponta para o local do contêiner da carga de trabalho. Exemplo
|
Interage com:
|
Matriz de strings JSON |
Adiciona outros recursos do Linux ao contêiner de carga de trabalho. Exemplo
|
Interage com:
|
Booleano |
O valor padrão é Exemplo
|
Interage com:
|
Matriz de strings JSON |
Substitui as instruções de
CMD
especificadas no
Exemplo
|
Interage com:
|
String definida |
Saída Os valores válidos são:
Um alto volume de registros no console serial pode afetar o desempenho da carga de trabalho. Exemplo
|
|
Número inteiro |
Define o tamanho em kB da montagem de memória compartilhada Exemplo
|
Interage com:
|
String |
Define variáveis de ambiente no contêiner da carga de trabalho. O autor da carga de trabalho também precisa adicionar os nomes das variável de ambiente à política de lançamento
Exemplo
|
Interage com:
|
String |
Uma lista de contas de serviço que podem ser representadas pelo operador de carga de trabalho. O operador de carga de trabalho precisa ter permissão para representar as contas de serviço. É possível listar várias contas de serviço separadas por vírgulas. Exemplo
|
Interage com:
|
Booleano |
O valor padrão é Exemplo
|
Interage com:
|
String |
Uma lista de definições de montagem separadas por ponto e vírgula. Uma definição de montagem consiste em uma lista separada por vírgulas de pares de chave-valor, exigindo Exemplo
|
Interage com:
|
String definida |
A política de reinicialização do inicializador do contêiner quando a carga de trabalho é interrompida. Os valores válidos são:
Essa variável só é compatível com a imagem de produção do Confidential Space. Exemplo
|
Interage com:
|
String |
Uma lista de repositórios de contêineres separados por vírgulas que armazenam as assinaturas geradas pelo Sigstore Cosign. Exemplo
|
Escalonamento
Para escalonamento e alta disponibilidade de cargas de trabalho de produção do Confidential Space, consulte Grupos de instâncias gerenciadas.