Ce document explique comment configurer le provisionnement automatique et la gestion du cycle de vie des identités de charge de travail gérées pour Compute Engine. Vous configurez des pools d'autorités de certification pour émettre des certificats à l'aide de Certificate Authority Service (CA), un service hautement disponible et évolutif Google Cloud qui simplifie et automatise le déploiement, la gestion et la sécurité des services CA. Chaque VM est provisionnée avec des identifiants X.509 provenant du pool d'autorités de certification configuré. Ces identifiants peuvent ensuite être utilisés pour établir des connexions mTLS.
Avant de commencer
- Consultez la documentation Présentation des identités de charge de travail gérées.
Activez l'API Compute Engine :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'serviceusage.services.enableautorisation. Découvrez comment attribuer des rôles.gcloud services enable compute.googleapis.com
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des VM qui utilisent des certificats d'identités de charge de travail gérées pour s'authentifier auprès d'autres charges de travail, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet:
-
Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Présentation
Avec les identités de charge de travail gérées pour Compute Engine, vous pouvez mettre en œuvre des communications chiffrées et mutuellement authentifiées entre deux VM Compute Engine. Les applications de charge de travail exécutées sur les VM configurées peuvent utiliser les identifiants X.509 pour le protocole mTLS par VM mTLS. L' agent invité alterne automatiquement ces certificats mTLS et actualise les identifiants sur la VM.
En utilisant des identités de charge de travail gérées, vous pouvez administrer de manière centralisée l'identité de vos charges de travail. Les VM Compute Engine peuvent être autorisées à recevoir une identité de charge de travail basée sur des attributs clés, tels que l'ID d'instance, le nom d'instance ou le compte de service associé. Pour que les charges de travail soient attestées, l'administrateur ou le développeur Compute doit créer des instances de VM pour la charge de travail avec un nom d'instance, un ID d'instance, un nom de compte de service ou un ID de compte de service correspondant.
Les identités de charge de travail gérées sont conformes à la norme Open Source
Secure Production Identity Framework for Everyone (SPIFFE).
Les ID SPIFFE des Google Cloud charges de travail sont au format suivant :
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
TRUST_DOMAIN correspond à un pool d'identités de charge de travail Identity and Access Management (IAM).
Les identités de charge de travail gérées sont définies dans un pool d'identités de charge de travail, qui sert de conteneur de premier niveau pour contenir les identités de charge de travail qui ont une limite de confiance commune. Dans un pool d'identités de charge de travail, les identités sont organisées en limites administratives appelées espaces de noms. Pour qu'une charge de travail obtienne une identité gérée, vous devez définir des règles d'attestation pour l'autoriser. Une règle d'attestation de charge de travail permet de s'assurer que seules les charges de travail fiables peuvent affirmer une identité gérée.
Pour utiliser des identités de charge de travail gérées pour vos applications, vous devez effectuer les tâches suivantes :
Administrateur de la sécurité
- Créez des identités de charge de travail gérées dans un pool d'identités de charge de travail.
- Définissez la règle d'attestation de charge de travail.
- Configurez Certificate Authority Service pour émettre des certificats pour les identités de charge de travail gérées.
- Autorisez les identités de charge de travail gérées à demander des certificats à partir du pool d'autorités de certification.
- Définissez la configuration d'approbation et d'émission de certificats dans le pool d'identités de charge de travail.
Administrateur de Compute :
- Configurez des instances pour qu'elles utilisent des identités de charge de travail pour des instances Compute Engine individuelles.
- Accédez aux identifiants de la charge de travail sur une instance Linux.
Configurer des identités de charge de travail gérées dans Identity and Access Management
Suivez les instructions de la section Configurer l'authentification des identités de charge de travail gérées.
Ces instructions expliquent comment effectuer les opérations suivantes:
- Créez un pool d'identités de charge de travail.
- Créez des espaces de noms dans le pool d'identités de charge de travail. Vous utilisez les espaces de noms pour créer des limites administratives pour vos identités de charge de travail gérées, par exemple un espace de noms pour chacune des applications appartenant à votre organisation.
- Créez une identité de charge de travail gérée dans un espace de noms du pool d'identités de charge de travail. Par exemple, vous pouvez créer un espace de noms pour une application et créer des identités gérées dans cet espace de noms pour les microservices compatibles avec cette application.
- Facultatif : Créez un compte de service pour créer des règles d'attestation basées sur l'ID du compte de service.
- Créez une règle d'attestation de charge de travail qui permet à votre charge de travail d'obtenir des identifiants pour l'identité de charge de travail gérée. Les VM Compute Engine peuvent être autorisées à recevoir une identité de charge de travail gérée en fonction d'attributs clés tels que l'ID d'instance, le nom d'instance ou le compte de service associé.
- Configurez Certificate Authority Service afin d'émettre des certificats pour les identités de charge de travail gérées :
- Configurez le pool d'autorités de certification racine.
- Configurez les autorités de certification subordonnées.
- Autorisez le pool d'identités de charge de travail gérées à demander des certificats à partir du pool d'autorités de certification.
Activer les identités de charge de travail gérées pour des instances de calcul individuelles
Vous pouvez activer les identités de charge de travail gérées pour une instance de calcul lors de sa création ou en mettant à jour la configuration d'une instance existante.
Créer des instances avec des identités de charge de travail gérées activées
Lorsque vous créez une instance de calcul, pour activer la fonctionnalité d'identité de charge de travail gérée pour l'instance, vous devez procéder comme suit:
- Si l'attestation de l'instance pour l'identité de charge de travail est basée sur un compte de service, spécifiez ce compte de service.
Incluez les options
--identityet--identity-certificate.
gcloud
Utilisez la gcloud alpha compute instances create commande
pour créer une instance.
Si vous utilisez un compte de service pour l'attestation, incluez les informations du compte de service lors de la création de l'instance.
Vous pouvez ajouter des lignes supplémentaires à la commande pour configurer l'instance, telles que le type de machine et l'image, au lieu d'utiliser les valeurs par défaut. Pour en savoir plus, consultez la page Créer et démarrer une instance de VM.
gcloud alpha compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Remplacez les éléments suivants :
INSTANCE_NAME: nom unique de l' instance. Pour en savoir plus sur les noms d'instance valides, consultez la section Noms des ressources.INSTANCE_ZONE: la zone dans laquelle créer l' instance.SERVICE_ACCOUNT_NAME: nom du compte de service autorisé à recevoir l'identité de charge de travail gérée.PROJECT_ID: ID du projet dans lequel le compte de service a été créé.TRUST_DOMAIN: ID du domaine de confiance, au format suivant :$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
La valeur du domaine de confiance utilise les espaces réservés suivants :
POOL_ID: nom du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projet dans lequel le pool d'identités de charge de travail a été créé
NAMESPACE: nom de l'espace de noms contenant la règle d'attestation de charge de travail qui autorise la charge de travail à affirmer une identité de charge de travail géréeWORKLOAD_IDENTIFIER: nom de l'identité de charge de travail gérée créée dans l'espace de noms du pool d'identités de charge de travail
Activer les identités de charge de travail gérées sur des instances existantes
Pour activer les identités de charge de travail gérées pour une instance de calcul existante, mettez à jour l'instance pour configurer les éléments suivants:
- Si l'attestation de l'instance pour l'identité de charge de travail est basée sur un compte de service et que l'instance ne dispose pas encore d'un compte de service associé, créez-en un et associez-le à l'instance.
- Activez la fonctionnalité à l'aide de l'option
--identity-certificateet spécifiez l'identité de charge de travail gérée à utiliser avec l'option--identity. Redémarrez la VM.
gcloud
Utilisez la gcloud alpha compute instances update commande
pour mettre à jour la configuration d'une instance.
Si l'instance ne dispose pas encore d'un compte de service associé, associez-le à l'instance.
Mettez à jour la configuration d'une instance existante pour activer les identités de charge de travail gérées.
gcloud alpha compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=//TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Remplacez les éléments suivants :
INSTANCE_NAME: nom de l'instanceZONE: zone où se trouve l'instanceTRUST_DOMAIN: ID du domaine de confiance, au format suivant :none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
La valeur du domaine de confiance utilise les espaces réservés suivants : *
POOL_ID: nom du pool d'identités de charge de travail *PROJECT_NUMBER: numéro du projet dans lequel le pool d'identités de charge de travail a été créé +NAMESPACE: nom de l'espace de noms contenant la règle d'attestation de charge de travail qui autorise la charge de travail à affirmer une identité de charge de travail gérée +WORKLOAD_IDENTIFIER: nom de l'identité de charge de travail gérée créée dans l'espace de noms du pool d'identités de charge de travailArrêtez la VM.
gcloud alpha compute instances stop INSTANCE_NAME \ --zone=ZONE
Remplacez les éléments suivants :
INSTANCE_NAME: nom de l'instanceZONE: zone où se trouve l'instance
Démarrez la VM.
gcloud alpha compute instances start INSTANCE_NAME \ --zone=ZONE
Remplacez les éléments suivants :
INSTANCE_NAME: nom de l'instanceZONE: zone où se trouve l'instance
Accéder aux identifiants de la charge de travail sur une VM Linux
Une fois que vous avez créé et démarré une instance de calcul qui utilise des identités de charge de travail gérées, l' Google Cloud infrastructure (y compris l' agent invité) provisionne et gère automatiquement la rotation des identifiants de l'instance.
Les certificats de charge de travail, y compris la clé privée et les groupes de confiance, sont placés dans un répertoire spécifique du système de fichiers de la VM : /var/run/secrets/workload-spiffe-credentials. Les applications peuvent lire directement les certificats, la clé privée et le bundle d'approbations à partir du système de fichiers pour établir des connexions mTLS.
L'agent invité Compute Engine sur le système d'exploitation invité exécute une tâche d'actualisation de la charge de travail et, si nécessaire, crée le répertoire /var/run/secrets/workload-spiffe-credentials. Les autorisations du répertoire sont définies sur 0755 (rwxr-xr-x).
Le répertoire contient les fichiers suivants créés avec les autorisations 0644 (rw-r--r--) :
private_key.pem: clé privée au format PEM.certificates.pem: bundle de certificats X.509 au format PEM qui peuvent être présentés à d'autres VM sous la forme d'une chaîne de certificats client, ou utilisés comme chaîne de certificats de serveur.ca_certificates.pem: bundle de certificats X.509 au format PEM à utiliser comme ancres de confiance lors de la validation des certificats de pairs.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.googconfig_status: fichier journal contenant des messages d'erreur.
Actualiser les identifiants et le groupe d'approbation
Le plan de contrôle Compute Engine effectue périodiquement une rotation automatique des identifiants de l'identité de charge de travail gérée et des ancres de confiance.
Si vos applications utilisent le système de fichiers pour accéder aux identifiants de la charge de travail et au groupe de confiance, l'agent invité Compute Engine actualise automatiquement les identifiants et le groupe d'approbation, par exemple lors de la rotation des certificats mTLS.
Mettre à jour la configuration d'émission et de confiance de certificats
Vous pouvez modifier la configuration d'émission de certificat et la configuration de confiance pour une VM qui utilise des identités de charge de travail gérées.
Mettre à jour des VM Compute Engine individuelles
Pour mettre à jour la configuration d'émission de certificat et la configuration de confiance, mettez à jour le pool d'identités de charge de travail. Utilisez la
gcloud alpha iam workload-identity-pools update commande,
comme illustré dans l'exemple suivant :
gcloud alpha iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
Remplacez les éléments suivants :
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailCIC_JSON_FILE_PATH: chemin d'accès au nouveau fichier de configuration d'émission de certificat au format JSON (cic.json)TC_JSON_FILE_PATH: facultatif : chemin d'accès au nouveau fichier de configuration de confiance au format JSON (tc.json). Si vos charges de travail s'authentifient sur différents domaines de confiance, vous devez spécifier ce fichier. Sinon, vous pouvez omettre le paramètre--inline-trust-config.PROJECT_ID: nom de votre Google Cloud projet
Résoudre les problèmes
Pour connaître les méthodes de diagnostic et de résolution des erreurs courantes liées à la récupération des identifiants de charge de travail, consultez la documentation Résoudre les problèmes d'authentification de charge de travail à charge à travail.
Pour résoudre les problèmes liés à des pools ou à des règles d'attestation mal configurés, consultez les journaux d'audit des pools d'identités de charge de travail.
Étape suivante
- Découvrez-en davantage sur les concepts suivants :