Implantar cargas de trabalho


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:

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 CONFIDENTIAL_COMPUTING_TECHNOLOGY por um dos seguintes valores:

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.

--image-family

Obrigatório. Informa ao Compute Engine para usar a imagem mais recente do Confidential Space, que faz parte do projeto confidential-space-images.

Para usar uma imagem de produção com a carga de trabalho final que processa dados confidenciais, substitua IMAGE_FAMILY por um dos seguintes valores:

  • confidential-space: para AMD SEV
  • confidential-space-preview-tdx: para Intel TDX (pré-lançamento).

Para usar a imagem de depuração para monitoramento e depuração, substitua IMAGE_FAMILY por um dos seguintes valores:

  • confidential-space-debug: para AMD SEV
  • confidential-space-debug-preview-tdx: para Intel TDX (pré-lançamento).

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 tee-image-reference são obrigatórios e orientam a instância da VM a executar o contêiner do Docker especificado sobre a imagem do Confidential Space especificada.

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:

  • 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

tee-image-reference

Interage com:

String

Obrigatório. Ele aponta para o local do contêiner da carga de trabalho.

Exemplo
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-cmd

Interage com:

Matriz de strings JSON

Substitui as instruções CMD especificadas no Dockerfile do contêiner da carga de trabalho.

Exemplo
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

Interage com:

  • Autor da carga de trabalho: a log_redirect política de lançamento.
String definida

Saída STDOUT e STDERR do contêiner da carga de trabalho para o Cloud Logging ou o console serial, no campo confidential-space-launcher.

Os valores válidos são:

  • false: (padrão) não ocorre nenhum registro.
  • true: saídas para o console serial e o Cloud Logging.
  • cloud_logging: saídas apenas para o Cloud Logging.
  • serial: saídas apenas para o console serial.

Um volume de registro alto no console em série pode afetar o desempenho da carga de trabalho.

Exemplo
tee-container-log-redirect=true

tee-dev-shm-size-kb

Número inteiro

Define o tamanho em kB do ponto de montagem de memória compartilhada /dev/shm.

Exemplo
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

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 allow_env_override . Caso contrário, elas não serão definidas.

Exemplo
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

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
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

Interage com:

Booleano

O valor padrão é false. Quando definido como true, ativa o monitoramento do uso de memória. As métricas coletadas pela VM confidencial são do tipo guest/memory/bytes_used e podem ser visualizadas no Cloud Logging ou no Metrics Explorer.

Exemplo
tee-monitoring-memory-enable=true

tee-mount

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 type, source e destination. destination precisa ser um caminho absoluto, e type/source precisa ser tmpfs.

Exemplo
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

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:

  • Never (padrão)
  • Always
  • OnFailure

Essa variável só é compatível com a imagem de produção do Confidential Space.

Exemplo
tee-restart-policy=OnFailure

tee-signed-image-repos

Interage com:

String

Uma lista de repositórios de contêineres separados por vírgulas que armazenam as assinaturas geradas por Sigstore Cosign.

Exemplo
tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

Escalonamento

Para dimensionar e ter alta disponibilidade de cargas de trabalho do Confidential Space de produção, consulte Grupos de instâncias gerenciadas.