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, o que inclui detalhes como qual imagem do 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.
A zona em que a instância de VM precisa 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 os tipos de máquina que oferecem suporte a AMD SEV e Intel TDX (Pré-lançamento). |
--maintenance-policy |
Para tipos de máquina N2D que usam SEV, defina como MIGRATE
para oferecer suporte à migração em tempo real. Para todos os outros tipos de máquina, defina esse valor
como TERMINATE , porque eles
não oferecem suporte à 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 a 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 que você usa precisa corresponder à tecnologia de computação confidencial selecionada. |
--metadata |
Obrigatório. Muda 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 falsifica as contas de serviço anexadas a pools de identidade 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 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 executá-la. 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 extrair uma imagem do 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 dados confidenciais, por exemplo, um bucket do Cloud Storage ou uma tabela do BigQuery.
Com acesso de gravação a onde a carga de trabalho precisa 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 operadores de carga de trabalho precisam configurar o seguinte:
Os colaboradores de dados precisam adicionar a conta de serviço ao provedor de pool de identidade da 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 imitar a conta de serviço. Isso permite que ele seja anexado a uma VM de 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 |
Substitui as instruções
CMD
especificadas no Exemplo
|
Interage com:
|
String definida |
Saída Os valores válidos são:
Um volume de registro alto no console em série pode afetar o desempenho da carga de trabalho. Exemplo
|
|
Número inteiro |
Define o tamanho em kB do ponto de 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 de pares de chave-valor separados por vírgulas,
que exige 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 por Sigstore Cosign. Exemplo
|
Escalonamento
Para dimensionar e ter alta disponibilidade de cargas de trabalho do Confidential Space de produção, consulte Grupos de instâncias gerenciadas.