Implementa cargas de trabajo


Un operador de carga de trabajo puede pasar opciones a una VM de carga de trabajo de Confidential Space para determinar su comportamiento antes de que se ejecute. Si bien algunas marcas tienen valores obligatorios que no cambian, aún debes tomar las siguientes decisiones:

Este es un ejemplo que crea una Confidential VM en la zona us-west1-b basada en la imagen de Confidential Space de producción más reciente y ejecuta un contenedor de Docker llamado 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

Las opciones que se usan en este ejemplo se detallan en la siguiente tabla.

Marcar Descripción
--confidential-compute-type

Obligatorio. Indica a Compute Engine qué tecnología de Confidential Computing se debe usar cuando se crea una instancia de Confidential VM.

Reemplaza CONFIDENTIAL_COMPUTING_TECHNOLOGY por uno de los siguientes valores:

  • SEV
  • TDX

La tecnología de Confidential Computing debe coincidir con la familia de imágenes que selecciones.

--machine-type Opcional. Especifica el nombre de un tipo de máquina de Confidential VM. Consulta Parámetros de configuración compatibles para conocer los tipos de máquinas que admiten AMD SEV y TDX de Intel.
--maintenance-policy Para los tipos de máquinas N2D que usan SEV, establece este parámetro en MIGRATE para admitir la migración en vivo. Para todos los demás tipos de máquinas, establece este valor en TERMINATE, ya que no admiten la migración en vivo.
--shielded-secure-boot Obligatorio. Indica a Compute Engine que use el Inicio seguro para la instancia.
--image-project=confidential-space-images Obligatorio. Indica a Compute Engine que busque la imagen de Confidential Space en el proyecto confidential-space-images.

--image-family

Obligatorio. Indica a Compute Engine que use la imagen más reciente de Confidential Space, que forma parte del proyecto confidential-space-images.

Para usar una imagen de producción con tu carga de trabajo final que procesa datos confidenciales, reemplaza IMAGE_FAMILY por confidential-space.

Para usar la imagen de depuración para la supervisión y la depuración, reemplaza IMAGE_FAMILY por confidential-space-debug.

La familia de imágenes que uses debe coincidir con la tecnología de Confidential Computing que selecciones.

--metadata

Obligatorio. Cambia el comportamiento de la VM de Confidential Space pasando variables. La clave y el valor de tee-image-reference son obligatorios y le indican a la instancia de VM que ejecute el contenedor de Docker especificado sobre la imagen de Confidential Space especificada.

Para obtener información sobre los pares clave-valor disponibles, consulta Variables de metadatos.

--service-account Opcional. La cuenta de servicio conectada a la instancia de VM que ejecuta la carga de trabajo y suplanta a las cuentas de servicio conectadas a los grupos de identidades para cargas de trabajo en otros proyectos. Si no se especifica, se usa la cuenta de servicio predeterminada de Compute Engine.
--scopes=cloud-platform Obligatorio. Establece el permiso de acceso. El permiso cloud-platform es un permiso de OAuth para la mayoría de los servicios Google Cloud y permite que la VM se comunique con el verificador de certificación.
--zone

Obligatorio. Es la zona en la que se ejecuta la instancia de VM. Confidential Space requiere los siguientes servicios, que están disponibles en ubicaciones específicas:

Cuenta de servicio adjunta

Se debe conectar una cuenta de servicio a la Confidential VM de una carga de trabajo para ejecutarla. La cuenta de servicio debe configurarse de la siguiente manera:

  • Con los siguientes roles:

  • Tener acceso de lectura a la ubicación en la que los colaboradores de datos almacenan sus datos confidenciales, por ejemplo, un bucket de Cloud Storage o una tabla de BigQuery

  • Con acceso de escritura al lugar donde la carga de trabajo debe generar los datos, por ejemplo, un bucket de Cloud Storage Los colaboradores de datos deben tener acceso de lectura a esta ubicación.

Además, los colaboradores de datos y los operadores de cargas de trabajo deben configurar lo siguiente:

  • Los colaboradores de datos deben agregar la cuenta de servicio a su proveedor de grupos de Workload Identity como una condición de atributo:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • El operador de carga de trabajo necesita el rol roles/iam.serviceAccountUser para suplantar la identidad de la cuenta de servicio. Esto les permite adjuntarlo a una VM de carga de trabajo para que pueda ejecutar la carga de trabajo.

Variables de metadatos

Puedes cambiar el comportamiento de la VM de carga de trabajo de Confidential Space pasando variables a la opción --metadata cuando creas la VM.

Para pasar varias variables, primero establece el delimitador agregando el prefijo ^~^ al valor --metadata. Esto establece el delimitador en ~, ya que , se usa en los valores de las variables.

Por ejemplo:

metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"

En la siguiente tabla, se detallan las variables de metadatos que puedes configurar para la VM de tu carga de trabajo.

Clave de metadatos Tipo Descripción y valores

tee-image-reference

Interactúa con:

String

Obligatorio. Apunta a la ubicación del contenedor de la carga de trabajo.

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

tee-added-capabilities

Interactúa con:

Array de cadenas JSON

Agrega capacidades de Linux adicionales al contenedor de la carga de trabajo.

Ejemplo
tee-added-capabilities="[\"CAP_SYS_ADMIN\", \"CAP_SYS_CHROOT\"]"

tee-cgroup-ns

Interactúa con:

  • Autor de la carga de trabajo: La política de lanzamiento de allow_cgroups .
Booleano

La configuración predeterminada es false. Cuando se establece en true, habilita un montaje de cgroup con espacio de nombres en /sys/fs/cgroup.

Ejemplo
tee-cgroup-ns=true

tee-cmd

Interactúa con:

Array de cadenas JSON

Anula las instrucciones CMD especificadas en el Dockerfile del contenedor de la carga de trabajo.

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

tee-container-log-redirect

Interactúa con:

  • Autor de la carga de trabajo: La política de lanzamiento de log_redirect .
Cadena definida

Envía STDOUT y STDERR del contenedor de la carga de trabajo a Cloud Logging o a la consola en serie, en el campo confidential-space-launcher.

Los valores válidos son los siguientes:

  • false: (predeterminado) No se realiza ningún registro.
  • true: Se genera en la consola serie y en Cloud Logging.
  • cloud_logging: Solo se genera en Cloud Logging.
  • serial: Solo se genera en la consola en serie.

Un volumen alto de registros en la consola en serie puede afectar el rendimiento de la carga de trabajo.

Ejemplo
tee-container-log-redirect=true

tee-dev-shm-size-kb

Número entero

Establece el tamaño en kB de la activación de la memoria compartida /dev/shm.

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

tee-env-ENVIRONMENT_VARIABLE_NAME

Interactúa con:

String

Configura las variables de entorno en el contenedor de carga de trabajo. El autor de la carga de trabajo también debe agregar los nombres de variable de entorno a la política de lanzamiento de allow_env_override , de lo contrario, no se establecerán.

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

tee-impersonate-service-accounts

Interactúa con:

String

Es una lista de cuentas de servicio que el operador de carga de trabajo puede suplantar. El operador de carga de trabajo debe tener la identidad de las cuentas de servicio.

Se pueden enumerar varias cuentas de servicio, separadas por comas.

Ejemplo
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

Interactúa con:

Booleano

La configuración predeterminada es false. Cuando se establece en true, se habilita la supervisión del uso de memoria. Las métricas recopiladas por la Confidential VM son del tipo guest/memory/bytes_used y se pueden ver en Cloud Logging o en el Explorador de métricas.

Ejemplo
tee-monitoring-memory-enable=true

tee-mount

Interactúa con:

String

Es una lista de definiciones de montaje separadas por punto y coma. Una definición de montaje consta de una lista separada por comas de pares clave-valor, que requiere type, source y destination. destination debe ser una ruta de acceso absoluta, y type/source debe ser tmpfs.

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

tee-restart-policy

Interactúa con:

Cadena definida

Política de reinicio del iniciador de contenedores cuando se detiene la carga de trabajo

Los valores válidos son los siguientes:

  • Never (predeterminada)
  • Always
  • OnFailure

Esta variable solo es compatible con la imagen de Confidential Space de producción.

Ejemplo
tee-restart-policy=OnFailure

tee-signed-image-repos

Interactúa con:

String

Es una lista de repositorios de contenedores separados por comas que almacenan las firmas generadas por Sigstore Cosign.

Ejemplo
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

Escalamiento

Para el escalamiento y la alta disponibilidad de las cargas de trabajo de producción de Confidential Space, consulta Grupos de instancias administrados.