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 requises qui ne changent pas, vous devez toujours faire les choix suivants :

  • Indique s'il faut baser la VM 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, qui incluent des détails tels que l'image de conteneur de charge de travail à exécuter, si la journalisation doit être effectuée dans Cloud Logging et les variables d'environnement à définir.

  • Le 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 dans 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 en fonction de la dernière image de production Confidential Space 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 Confidential VM.

Remplacez CONFIDENTIAL_COMPUTING_TECHNOLOGY par l'une des valeurs suivantes :

  • SEV
  • TDX

La technologie Confidential Computing doit correspondre à la famille d'images que vous sélectionnez.

--machine-type Facultatif. Spécifie le nom d'un type de machine Confidential VM. Pour connaître les types de machines compatibles avec AMD SEV et Intel TDX, consultez la section Configurations compatibles.
--maintenance-policy Pour les types de machines N2D qui utilisent SEV, définissez cette valeur sur MIGRATE pour la compatibilité avec la migration à chaud. Pour tous les autres types de machines, définissez cette valeur sur TERMINATE, car elles 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 l' image Confidential Space dans le projet confidential-space-images.

--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 confidential-space.

Pour utiliser l'image de débogage pour la surveillance et le débogage, remplacez IMAGE_FAMILY par confidential-space-debug.

La famille d'images que vous utilisez doit correspondre à la technologie de confidential computing 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 emprunte l'identité des comptes de service associés aux pools d'identités de charge de travail dans d'autres projets. Si elle n'est pas spécifiée, 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é à une VM confidentielle de charge de travail 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 de données stockent leurs données confidentielles (par exemple, un bucket Cloud Storage ou une table BigQuery).

  • 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 de 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 au fournisseur de leur 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 emprunter l'identité du compte de service. Cela leur permet de l'associer à une VM de charge de travail pour qu'elle puisse exécuter la charge de travail.

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. Cette valeur 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-added-capabilities

Interagit avec :

Tableau de chaînes JSON

Ajoute des capacités Linux supplémentaires au conteneur de charge de travail.

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

tee-cgroup-ns

Interagit avec :

Booléen

La valeur par défaut est false. Si la valeur est définie sur true, un montage cgroup avec espace de noms est activé sur /sys/fs/cgroup.

Exemple
tee-cgroup-ns=true

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 :

  • Auteur de la charge de travail : règle de lancement log_redirect .
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 : (par défaut) aucune journalisation n'a lieu.
  • true : sorties vers la console série et Cloud Logging.
  • cloud_logging : sorties vers Cloud Logging uniquement.
  • serial : sorties vers 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 point de 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 aux règles 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 la valeur est définie sur true, la surveillance de l'utilisation de la mémoire est activée. Les métriques collectées par la VM confidentielle sont de type guest/memory/bytes_used et peuvent être consultées dans Cloud Logging ou 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, nécessitant type, source et destination. destination doit être un chemin 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 Sigstore Cosign.

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 le scaling et la haute disponibilité des charges de travail Confidential Space de production, consultez Groupes d'instances gérés.