Déployer des charges de travail


Un opérateur de charge de travail peut transmettre des options à une VM de charge de travail Confidential Space pour déterminer son comportement avant son exécution. Bien que certaines options aient des valeurs obligatoires qui ne changent pas, vous devez tout de même faire les choix suivants:

  • Indique si la VM doit être basée sur une image Confidential Space de production ou de débogage.

  • Indique si vous souhaitez utiliser la technologie d'informatique confidentielle AMD SEV ou Intel TDX.

  • Les variables de métadonnées de VM à transmettre, y compris des informations telles que l'image de conteneur de charge de travail à exécuter, l'enregistrement dans Cloud Logging et les variables d'environnement à définir.

  • Compte de service à associer à la VM pour exécuter la charge de travail, ainsi que les autorisations dont il a besoin pour accéder aux données confidentielles d'autres projets et écrire les résultats quelque part.

  • Zone dans laquelle l'instance de VM doit s'exécuter.

Voici un exemple qui crée une Confidential VM dans la zone us-west1-b basée sur la dernière image Confidential Space de production et exécute un conteneur Docker appelé 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

Les options utilisées dans cet exemple sont détaillées dans le tableau suivant.

Option Description
--confidential-compute-type

Obligatoire. Indique à Compute Engine la technologie d'informatique confidentielle à utiliser lors de la création d'une instance de Confidential VM.

Remplacez CONFIDENTIAL_COMPUTING_TECHNOLOGY par l'une des valeurs suivantes:

La technologie de calcul confidentiel doit correspondre à la famille d'images que vous sélectionnez.

--machine-type Facultatif. Spécifie un nom de type de machine Confidential VM. Consultez la section Configurations compatibles pour connaître les types de machines compatibles avec AMD SEV et Intel TDX (version preview).
--maintenance-policy Pour les types de machines N2D qui utilisent SEV, définissez cette valeur sur MIGRATE pour la prise en charge de la migration à chaud. Pour tous les autres types de machines, définissez cette valeur sur TERMINATE, car ils ne sont pas compatibles avec la migration à chaud.
--shielded-secure-boot Obligatoire. Indique à Compute Engine d'utiliser le démarrage sécurisé pour l'instance.
--image-project=confidential-space-images Obligatoire. Indique à Compute Engine de rechercher dans le projet confidential-space-images l' image Confidential Space.

--image-family

Obligatoire. Indique à Compute Engine d'utiliser la dernière image Confidential Space, qui fait partie du projet confidential-space-images.

Pour utiliser une image de production avec votre charge de travail finale qui traite les données confidentielles, remplacez IMAGE_FAMILY par l'une des valeurs suivantes:

  • confidential-space : pour AMD SEV
  • confidential-space-preview-tdx : pour Intel TDX (preview)

Pour utiliser l'image de débogage à des fins de surveillance et de débogage, remplacez IMAGE_FAMILY par l'une des valeurs suivantes:

  • confidential-space-debug : pour AMD SEV
  • confidential-space-debug-preview-tdx : pour Intel TDX (preview)

La famille d'images que vous utilisez doit correspondre à la technologie de calcul confidentiel que vous sélectionnez.

--metadata

Obligatoire. Modifie le comportement de la Confidential VM en transmettant des variables. La clé et la valeur tee-image-reference sont obligatoires et indiquent à l'instance de VM d'exécuter le conteneur Docker spécifié en superposition sur l'image Confidential Space spécifiée.

Pour connaître les paires clé/valeur disponibles, consultez la section Variables de métadonnées.

--service-account Facultatif. Le compte de service associé à l'instance de VM qui exécute la charge de travail et qui imite les comptes de service associés aux pools d'identités de charge de travail dans d'autres projets. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est utilisé.
--scopes=cloud-platform Obligatoire. Définit le niveau d'accès. Le champ d'application cloud-platform est un champ d'application OAuth pour la plupart des services Google Cloud et permet à la VM de communiquer avec l'outil de vérification d'attestation.
--zone

Obligatoire. Zone dans laquelle l'instance de VM s'exécute. Confidential Space nécessite les services suivants, qui sont disponibles dans des emplacements spécifiques:

Compte de service associé

Un compte de service doit être associé à la VM de charge de travail Confidential pour exécuter la charge de travail. Le compte de service doit être configuré comme suit:

  • avec les rôles suivants:

  • avec un accès en lecture à l'emplacement où les collaborateurs stockent leurs données confidentielles (par exemple, un bucket Cloud Storage ou une table BigQuery) ;

  • Avoir un accès en écriture à l'emplacement où la charge de travail doit générer les données, par exemple un bucket Cloud Storage. Les collaborateurs sur les données doivent disposer d'un accès en lecture à cet emplacement.

De plus, les collaborateurs de données et les opérateurs de charge de travail doivent configurer les éléments suivants:

  • Les collaborateurs de données doivent ajouter le compte de service à leur fournisseur de pool d'identités de charge de travail en tant que condition d'attribut:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • L'opérateur de charge de travail a besoin du rôle roles/iam.serviceAccountUser pour usurper l'identité du compte de service. Cela leur permet de l'associer à une VM de charge de travail afin qu'elle puisse l'exécuter.

Variables de métadonnées

Vous pouvez modifier le comportement de la VM de charge de travail Confidential Space en transmettant des variables à l'option --metadata lorsque vous créez la VM.

Pour transmettre plusieurs variables, commencez par définir le délimiteur en préfixant la valeur --metadata avec ^~^. Cela définit le délimiteur sur ~, car , est utilisé dans les valeurs de variables.

Exemple :

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

Le tableau suivant détaille les variables de métadonnées que vous pouvez définir pour la VM de votre charge de travail.

Clé de métadonnée Type Description et valeurs

tee-image-reference

Interagit avec:

Chaîne

Obligatoire. Il pointe vers l'emplacement du conteneur de la charge de travail.

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

tee-cmd

Interagit avec:

Tableau de chaînes JSON

Remplace les instructions CMD spécifiées dans le Dockerfile du conteneur de charge de travail.

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

tee-container-log-redirect

Interagit avec:

Chaîne définie

affiche STDOUT et STDERR du conteneur de charge de travail vers Cloud Logging ou la console série, dans le champ confidential-space-launcher.

Les valeurs valides sont les suivantes:

  • false: (valeur par défaut) aucune journalisation n'est effectuée.
  • true: sorties vers la console série et Cloud Logging.
  • cloud_logging: les sorties sont uniquement destinées à Cloud Logging.
  • serial: les sorties sont envoyées à la console série uniquement.

Un volume de journaux élevé dans la console série peut avoir un impact sur les performances de la charge de travail.

Exemple
tee-container-log-redirect=true

tee-dev-shm-size-kb

Integer

Définit la taille en ko du montage de la mémoire partagée /dev/shm.

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

tee-env-ENVIRONMENT_VARIABLE_NAME

Interagit avec:

Chaîne

Définit les variables d'environnement dans le conteneur de charge de travail. L'auteur de la charge de travail doit également ajouter les noms des variables d'environnement à la règle de lancement allow_env_override . Sinon, elles ne seront pas définies.

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

tee-impersonate-service-accounts

Interagit avec:

Chaîne

Liste des comptes de service dont l'identité peut être empruntée par l'opérateur de charge de travail. L'opérateur de charge de travail doit être autorisé à emprunter l'identité des comptes de service.

Plusieurs comptes de service peuvent être répertoriés, séparés par une virgule.

Exemple
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

Interagit avec:

Booléen

La valeur par défaut est false. Si ce paramètre est défini sur true, la surveillance de l'utilisation de la mémoire est activée. Les métriques collectées par la VM Confidential sont de type guest/memory/bytes_used et peuvent être consultées dans Cloud Logging ou dans l'explorateur de métriques.

Exemple
tee-monitoring-memory-enable=true

tee-mount

Interagit avec:

Chaîne

Liste des définitions de montage séparées par un point-virgule. Une définition de montage se compose d'une liste de paires clé-valeur séparées par une virgule, qui nécessite type, source et destination. destination doit être un chemin d'accès absolu, et type/source doit être tmpfs.

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

tee-restart-policy

Interagit avec:

Chaîne définie

Règle de redémarrage du lanceur de conteneurs lorsque la charge de travail s'arrête

Les valeurs valides sont les suivantes:

  • Never (par défaut)
  • Always
  • OnFailure

Cette variable n'est compatible qu'avec l'image de production Confidential Space.

Exemple
tee-restart-policy=OnFailure

tee-signed-image-repos

Interagit avec:

Chaîne

Liste de dépôts de conteneurs séparés par une virgule qui stockent les signatures générées par Cosign Sigstore.

Exemple
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

Scaling

Pour découvrir comment faire évoluer et assurer la haute disponibilité des charges de travail Confidential Space de production, consultez la section Groupes d'instances gérés.