Ce document explique comment configurer une identité de charge de travail gérée sur le service de backend d'un équilibreur de charge. Une fois que vous avez attribué une identité gérée, l'équilibreur de charge et ses backends peuvent s'authentifier mutuellement à l'aide du protocole mTLS de backend.
Pour configurer mTLS de backend à l'aide d'une identité de charge de travail gérée, vous devez procéder comme suit :
- Configurez un pool d'autorités de certification (CA) Certificate Authority Service pour émettre des certificats X.509 pour les identités de charge de travail gérées.
- Configurez un domaine de confiance en créant un pool d'identités de charge de travail avec un espace de noms, une identité gérée, une règle d'attestation, une ressource de configuration d'émission de certificat intégrée et une ressource de configuration de confiance intégrée.1
- Associez l'autorité de certification au pool d'identités de charge de travail à l'aide de la configuration d'émission de certificats intégrée.
- Autorisez les identités de charge de travail gérées à demander des certificats à partir du pool d'autorités de certification.
- Créez l'équilibreur de charge et associez l'identité gérée à son service de backend.
1 Vous devez créer une configuration de confiance intégrée uniquement si l'équilibreur de charge et ses backends se trouvent dans des domaines de confiance différents. Pour cet exemple, l'équilibreur de charge et les backends font partie du même domaine de confiance. Par conséquent, la configuration de la ressource de configuration de confiance intégrée est facultative.
Pour créer une identité gérée pour les backends, consultez Présentation des identités de charge de travail gérées.
Avant de commencer
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
Consultez le document Présentation de l'authentification mTLS du backend avec les identités de charge de travail gérées.
Découvrez ce qu'est l'émission de certificats à l'aide de Certificate Authority Service.
Enable the IAM, Certificate Authority Service, Compute Engine, Certificate Manager, and Network Security APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com Configurez la Google Cloud CLI afin d'utiliser le projet ajouté à la liste d'autorisation pour la facturation et les quotas.
gcloud config set billing/quota_project PROJECT_ID
Remplacez
PROJECT_IDpar l'ID du projet qui a été ajouté à la liste d'autorisation pour l'identité de charge de travail gérée en preview.Créez une identité gérée pour le backend. Pour en savoir plus, consultez Présentation des identités de charge de travail gérées.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des identités de charge de travail gérées et provisionner des certificats d'identité de charge de travail gérés, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
-
Pour créer et configurer des identités de charge de travail gérées :
-
Administrateur de pools Workload Identity IAM (
roles/iam.workloadIdentityPoolAdmin) -
Administrateur de compte de service (
roles/iam.serviceAccountAdmin)
-
Administrateur de pools Workload Identity IAM (
-
Pour créer et configurer des pools d'autorités de certification :
Administrateur de services d'autorité de certification (
roles/privateca.admin) -
Pour créer des ressources d'équilibreur de charge telles que
TargetHTTPSProxy: Administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin) -
Pour utiliser les ressources du gestionnaire de certificats :
Propriétaire du gestionnaire de certificats (
roles/certificatemanager.owner) -
Pour créer des composants de sécurité et de mise en réseau :
-
Administrateur de réseaux Compute (
roles/compute.networkAdmin) -
Administrateur de sécurité de Compute (
roles/compute.securityAdmin)
-
Administrateur de réseaux Compute (
-
Pour créer un projet (facultatif) :
Créateur de projet (
roles/resourcemanager.projectCreator)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer le service d'autorité de certification pour émettre des certificats pour les identités de charge de travail gérées
Vous pouvez utiliser des pools d'autorités de certification pour configurer une autorité de certification racine. Le pool d'autorités de certification émet les certificats X.509 pour les identités de charge de travail gérées.
Créer le pool d'autorités de certification racine
Créez le pool d'autorités de certification racine au niveau Enterprise à l'aide de la commande gcloud privateca pools create.
Ce niveau est conçu pour l'émission de certificats de longue durée, à faible volume.
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
Remplacez les éléments suivants :
ROOT_CA_POOL_ID: ID unique pour le pool d'autorités de certification racineREGION: région où se trouve le pool d'autorités de certification racinePROJECT_ID: ID du projet
Pour en savoir plus sur les pools d'autorités de certification, consultez Créer un pool d'autorités de certification.
Créer une autorité de certification racine
Créez une autorité de certification racine dans le pool d'autorités de certification racine à l'aide de la commande gcloud privateca roots create.
Pour créer une autorité de certification racine, exécutez la commande suivante :
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
[--key-algorithm="KEY_ALGORITHM"] \
--max-chain-length=1 \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
Remplacez les éléments suivants :
ROOT_CA_ID: nom unique de l'autorité de certification racine. Ce nom peut comporter jusqu'à 64 caractères et ne doit contenir que des caractères alphanumériques minuscules et majuscules, des traits de soulignement ou des traits d'union. Le nom de l'autorité de certification doit être unique dans la région.ROOT_CA_POOL_ID: ID du pool d'autorités de certification racine.ROOT_CA_CN: nom commun de l'autorité de certification racine.ROOT_CA_ORGANIZATION: organisation de l'autorité de certification racine.KEY_ALGORITHM: algorithme à utiliser pour créer une clé Cloud KMS. Cette option est facultative. Si vous n'incluez pas cette option, l'algorithme de clé est défini par défaut surrsa-pkcs1-4096-sha256.REGION: région où se trouve le pool d'autorités de certification racine.PROJECT_ID: ID du projet.
Pour en savoir plus sur les autorités de certification racine, consultez Créer une autorité de certification racine.
Créer des identités de charge de travail gérées
Lorsque vous utilisez des identités de charge de travail gérées, Google Cloud peut provisionner et gérer automatiquement les certificats X.509 du Certificate Authority Service. Les identités de charge de travail sont définies dans un pool d'identités de charge de travail et sont organisées en limites administratives appelées espaces de noms.
Créer un pool d'identités de charge de travail
Vous devez créer un pool en mode TRUST_DOMAIN pour créer des identités de charge de travail gérées. Pour créer un pool d'identités de charge de travail pour les identités de charge de travail gérées, utilisez la commande gcloud iam workload-identity-pools create.
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
Remplacez WORKLOAD_IDENTITY_POOL_ID par l'ID unique du pool. L'ID doit comporter entre 4 et 32 caractères, ne contenir que des caractères alphanumériques minuscules et des tirets, et commencer et se terminer par un caractère alphanumérique. Une fois que vous avez créé un pool d'identités de charge de travail, vous ne pouvez plus modifier son ID.
Pour vérifier que votre pool d'identités de charge de travail a été créé en mode TRUST_DOMAIN, utilisez la commande gcloud iam workload-identity-pools describe.
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
Le résultat ressemble à ce qui suit :
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
Ce résultat inclut les valeurs suivantes :
PROJECT_NUMBER: numéro de votre projetGoogle CloudWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail
Créer un espace de noms
La commande gcloud iam workload-identity-pools namespaces create vous permet de créer un espace de noms dans un pool d'identités de charge de travail.
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Remplacez les éléments suivants :
NAMESPACE_ID: ID unique de l'espace de noms. L'ID doit comporter entre 2 et 63 caractères, ne contenir que des caractères alphanumériques minuscules et des tirets, et commencer et se terminer par un caractère alphanumérique. Une fois que vous avez créé un espace de noms, vous ne pouvez pas modifier son ID.WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail que vous avez créé précédemment.
Créer une identité de charge de travail gérée
La commande gloud iam workload-identity-pools managed-identities create vous permet de créer une identité de charge de travail gérée dans un espace de noms de pool d'identités de charge de travail.
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
Remplacez les éléments suivants :
MANAGED_IDENTITY_ID: ID unique de l'identité gérée. L'ID doit comporter entre 2 et 63 caractères, ne contenir que des caractères alphanumériques minuscules et des tirets, et commencer et se terminer par un caractère alphanumérique. Une fois que vous avez créé une identité de charge de travail gérée, vous ne pouvez pas modifier son ID.NAMESPACE_ID: ID de l'espace de noms que vous avez créé précédemment.WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail que vous avez créé précédemment.
L'ID de votre identité de charge de travail gérée est l'identifiant SPIFFE, dont le format est le suivant :
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Créer une règle d'attestation
Dans cet exemple, une règle d'attestation contenue dans une règle d'attestation vérifie si le service de backend fait partie d'un projet spécifique. Si la validation de la règle d'attestation réussit, IAM demande un certificat X.509 pour l'identité gérée au service d'autorité de certification.
Pour créer une règle d'attestation, exécutez la commande suivante pour ajouter une règle d'attestation.
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
Remplacez les éléments suivants :
MANAGED_IDENTITY_ID: ID unique de l'identité gérée. L'ID doit comporter entre 2 et 63 caractères, ne contenir que des caractères alphanumériques minuscules et des tirets, et commencer et se terminer par un caractère alphanumérique. Une fois que vous avez créé une identité de charge de travail gérée, vous ne pouvez pas modifier son ID.NAMESPACE_ID: ID de l'espace de noms que vous avez créé précédemment.WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail que vous avez créé précédemment.PROJECT_NUMBER: numéro du projet Google Cloud .
Créer une configuration d'émission de certificats intégrée
Pour associer une autorité de certification à un pool d'identités de charge de travail, ce pool doit disposer d'une configuration d'émission de certificats intégrée.
Pour configurer une configuration d'émission de certificat intégrée, créez un fichier de configuration au format JSON (cic.json). Le format du fichier est semblable à ce qui suit :
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
["lifetime": "CERTIFICATE_LIFETIME"],
["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
["keyAlgorithm": "ALGORITHM"]
}
}
Remplacez les éléments suivants :
REGION: région où se trouve l'autorité de certification.PROJECT_NUMBER: Numéro du projet Pour obtenir le numéro de projet à partir du projet spécifié par la variablePROJECT_ID, exécutez la commande suivante :gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: ID du pool d'autorités de certification racine.CERTIFICATE_LIFETIME: durée de vie des certificats de charge de travail émis par le pool d'autorités de certification en secondes (par exemple, 86400s pour 24 heures).CERTIFICATE_LIFETIMEdoit être une valeur comprise entre 24 heures et 30 jours. SiCERTIFICATE_LIFETIMEn'est pas spécifié, la durée de vie du certificat est de 24 heures par défaut.CERTIFICATE_LIFETIMEest facultatif.ROTATION_WINDOW_PERCENTAGE: pourcentage de la durée de vie du certificat au cours duquel un renouvellement est déclenché. La valeur deROTATION_WINDOW_PERCENTAGEdoit être comprise entre 50 et 80. La valeur par défaut est 50.ROTATION_WINDOW_PERCENTAGEest facultatif.ALGORITHM: algorithme de chiffrement utilisé pour générer la clé privée. Les valeurs valides pourALGORITHMsontECDSA_P256(par défaut),ECDSA_P384,RSA_2048,RSA_3072etRSA_4096.ALGORITHMest facultatif.
Créer une configuration de confiance intégrée
Dans cet exemple de configuration, l'équilibreur de charge et le backend font partie du même domaine de confiance et partagent le même certificat racine. Par conséquent, la configuration de la configuration de confiance intégrée est facultative. La racine de confiance commune est utilisée pour créer une chaîne de confiance et valider l'identité des charges de travail dans le domaine de confiance.
Par défaut, vos charges de travail appartenant au même domaine de confiance peuvent s'authentifier mutuellement à l'aide d'identités de charge de travail gérées. Si vous souhaitez que les charges de travail appartenant à des domaines de confiance différents s'authentifient mutuellement, vous devez déclarer explicitement la relation d'approbation dans le pool d'identités de charge de travail. Pour ce faire, vous devez créer une configuration de confiance intégrée qui reconnaît et accepte les certificats provenant d'autres domaines de confiance.
Pour créer une configuration de confiance intégrée, procédez comme suit :
Téléchargez les certificats.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONRemplacez les éléments suivants :
ROOT_CA_POOL_ID: ID du pool d'autorités de certification racineCERTIFICATE_PATH: chemin d'accès vers lequel exporter le certificat encodé au format PEM.REGION: région du pool d'autorités de certification racine
Créez un fichier de configuration au format JSON (
tc.json) contenant la configuration de confiance intégrée, avec des certificats au format PEM.Le fichier ressemble à ceci :
{ "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } }Remplacez les éléments suivants :
TRUST_DOMAIN_NAME: le domaine de confiance peut être n'importe quel domaine de confiance (comme "example.com"), y compris un autre domaine de confiance de pool d'identités de charge de travail (ou même le même).Pour un domaine de confiance de pool d'identités de charge de travail, le nom du domaine de confiance est mis en forme comme suit :
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
Dans le format, remplacez les éléments suivants :
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projet contenant le pool d'identités de charge de travail
CERTIFICATE_MATERIAL: certificat CA au format PEM autorisé à émettre des certificats dans le domaine de confiance. La commande suivante peut être utilisée pour encoder un fichier de certificat au format PEM dans une chaîne d'une seule ligne :cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
Associer l'autorité de certification au pool d'identités de charge de travail
Après avoir créé votre hiérarchie d'AC et une configuration d'émission de certificat pour l'AC, vous pouvez associer l'AC au pool d'identités de charge de travail. Pour associer l'autorité de certification au pool d'identités de charge de travail, vous devez mettre à jour le pool d'identités de charge de travail avec la configuration d'émission de certificats de l'autorité de certification. Vous pouvez ensuite vérifier que le pool a été mis à jour.
Mettre à jour le pool d'identités de charge de travail
Pour associer une autorité de certification au pool d'identités de charge de travail, mettez à jour le pool d'identités de charge de travail avec la configuration d'émission de certificats de l'autorité de certification. Vous pouvez ensuite vérifier que le pool a été mis à jour.
Pour mettre à jour le pool, exécutez la commande suivante :
gcloud 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 travail.CIC_JSON_FILE_PATH: chemin d'accès au fichier de configuration au format JSON (cic.json) pour la configuration d'émission de certificats intégrée que vous avez créée précédemment.TC_JSON_FILE_PATH: chemin d'accès au fichier de configuration au format JSON (tc.json) pour la configuration de confiance intégrée que vous avez créée précédemment. Si vos charges de travail s'authentifient dans différents domaines de confiance, vous devez spécifier ce fichier. Sinon, vous pouvez omettre--inline-trust-config.
Vérifier que le pool d'identités de charge de travail a été mis à jour
Pour vérifier que votre pool d'identités de charge de travail a été mis à jour en même temps que la configuration d'émission de certificats et la configuration de confiance, exécutez la commande suivante :
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
Remplacez les éléments suivants :
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail.PROJECT_ID: ID du projet
Le résultat ressemble à ce qui suit :
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
Ce résultat inclut les valeurs suivantes :
PROJECT_NUMBER: numéro du projetREGION: région où se trouve le pool d'autorités de certification racineROOT_CA_POOL_ID: ID du pool d'autorités de certification racineALGORITHM: algorithme de chiffrement utilisé pour générer la clé privée.CERTIFICATE_LIFETIME: durée de vie (en secondes) des certificats de charge de travail émis par le pool d'autorités de certificationROTATION_WINDOW_PERCENTAGE: pourcentage de la durée de vie du certificat au cours duquel un renouvellement est déclenché.TRUST_DOMAIN_NAME: le domaine de confiance peut être n'importe quel domaine de confiance (comme "example.com"), y compris un autre domaine de confiance de pool d'identités de charge de travail (ou même le même).CERTIFICATE_MATERIAL: certificat CA au format PEM autorisé à émettre des certificats dans le domaine de confianceWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travail
Si inlineCertificateIssuanceConfig ou inlineTrustConfig ne figurent pas dans le résultat, vérifiez que vous avez correctement configuré votre gcloud CLI afin d'utiliser le projet approprié pour la facturation et les quotas.
Vous devrez peut-être passer à une version plus récente de gcloud CLI.
Autoriser les identités de charge de travail gérées à demander des certificats à partir du pool d'autorités de certification
Une fois l'autorité de certification associée au pool d'identités de charge de travail, vous devez autoriser les identités de charge de travail gérées à demander des certificats à partir du pool d'autorités de certification.
Attribuez le rôle Demandeur de certificat de charge de travail du service CA (
roles/privateca.workloadCertificateRequester) au domaine de confiance. Ce rôle autorise le domaine de confiance à demander des certificats à partir des chaînes de certificats CA Service.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDRemplacez les éléments suivants :
ROOT_CA_POOL_ID: ID du pool d'autorités de certification racineREGION: région du pool d'autorités de certification racinePROJECT_NUMBER: numéro du projetPour obtenir
PROJECT_NUMBERà partir dePROJECT_ID, exécutez la commande suivante :gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_ID: ID du projet
Accordez le rôle Lecteur de pool de services d'autorité de certification (
roles/privateca.poolReader) au domaine de confiance. Ce rôle autorise le domaine de confiance à obtenir les certificats X.509 signés à partir des chaînes de certificats de l'autorité de certification.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDRemplacez les éléments suivants :
ROOT_CA_POOL_ID: ID du pool d'autorités de certification racineREGION: région du pool d'autorités de certification racinePROJECT_NUMBER: numéro du projetWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_ID: ID du projet
Créer l'équilibreur de charge et attribuer l'identité gérée au service de backend
Une identité gérée ne peut être attribuée que lors de la création du service de backend.
Les étapes de cette section ne concernent que l'attribution d'une identité gérée au service de backend de l'équilibreur de charge. Cela fait partie de la configuration du backend de l'équilibreur de charge.
Pour configurer un équilibreur de charge d'application externe global, suivez les étapes décrites dans Configurer un équilibreur de charge d'application externe global avec des backends de groupe d'instances de VM. Lorsque vous configurez le service de backend de l'équilibreur de charge, vous devez également effectuer les opérations suivantes :
Console
Dans la console Google Cloud , accédez à la page Équilibrage de charge.
Dans la section Configuration du backend, ajoutez les informations nécessaires pour créer un service de backend.
Développez la section Configurations avancées.
Dans la section Authentification du backend, sélectionnez l'option Identité gérée.
Pour attribuer une identité gérée au service de backend, dans le champ Identité gérée, saisissez l'identité de charge de travail gérée que vous avez créée précédemment.
Cliquez sur Créer.
Suivez les étapes décrites dans Configurer l'équilibreur de charge pour terminer la configuration de l'équilibreur de charge.
gcloud
Pour attribuer une identité gérée au service de backend, ajoutez l'indicateur
--identitylorsque vous utilisez la commandegcloud beta compute backend-services create.gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --globalRemplacez les éléments suivants :
BACKEND_SERVICE_NAME: Nom du service de backend.HEALTH_CHECK_NAME: nom de la vérification d'étatWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projetNAMESPACE_ID: ID de l'espace de nomsMANAGED_IDENTITY_ID: ID de l'identité gérée
Ressources créées automatiquement
Une fois qu'une identité gérée est configurée sur le service de backend de l'équilibreur de charge, les ressources suivantes sont automatiquement créées par l'identité de charge de travail gérée :
- Configuration d'authentification de backend : associée au service de backend de l'équilibreur de charge
- Certificat d'identité gérée du gestionnaire de certificats : associé à la configuration d'authentification du backend
- Configuration de confiance du gestionnaire de certificats : associée à la configuration d'authentification de backend
Les sections suivantes concernent la vérification de votre configuration pour déterminer si les ressources créées automatiquement ont été configurées.
Vérifier votre configuration
Vérifiez votre configuration pour savoir si les ressources créées automatiquement ont été configurées.
Les ressources créées automatiquement sont précédées du préfixe mi, ce qui indique que la ressource est créée par l'identité de charge de travail gérée.
Vérifier la création de la configuration d'authentification de backend et de l'identité gérée
Pour vérifier la création de la configuration d'authentification de backend et de l'identité gérée, utilisez la commande gcloud beta compute backend-services describe pour décrire le service de backend.
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
Le résultat ressemble à ce qui suit :
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Ce résultat inclut les valeurs suivantes :
PROJECT_ID: ID du projetHEALTH_CHECK_NAME: nom de la vérification d'étatBACKEND_SERVICE_NAME: nom du service de backendPORT_NAME: nom du portREGION: région où se trouve le pool d'autorités de certification racineWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projetNAMESPACE_ID: ID de l'espace de nomsMANAGED_IDENTITY_ID: ID de l'identité gérée
La configuration d'authentification de backend est créée automatiquement et associée au champ backendService.tlsSettings.authenticationConfig.
La configuration d'authentification du backend commençant par le préfixe mi est appelée MI_BACKEND_AUTHENTICATION_CONFIG_ID dans la section suivante.
L'identité de charge de travail gérée est également associée au champ backendService.tlsSettings.identity. Son format est le suivant :
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
spiffe
Vérifier la création du certificat d'identité gérée du gestionnaire de certificats et de la configuration de confiance du gestionnaire de certificats
Pour vérifier que le certificat d'identité gérée du gestionnaire de certificats et la configuration de confiance du gestionnaire de certificats sont associés à la ressource de configuration d'authentification de backend, utilisez la commande gcloud network-security backend-authentication-configs describe.
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
Le résultat ressemble à ce qui suit :
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
clientCertificate et trustConfig sont créés automatiquement par l'identité de charge de travail gérée et associés à la ressource de configuration de l'authentification du backend.
Le clientCertificate commençant par le préfixe mi est appelé MI_CLIENT_CERTIFICATE_ID dans la section suivante.
Le trustConfig commençant par le préfixe mi est appelé MI_TRUST_CONFIG_ID dans la section suivante.
Vérifier que le certificat Certificate Manager est un certificat d'identité gérée
Pour afficher les détails du certificat d'identité gérée par le gestionnaire de certificats, utilisez la commande gcloud certificate-manager certificates describe.
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
Le résultat ressemble à ce qui suit :
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
Ce résultat inclut les valeurs suivantes :
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projetNAMESPACE_ID: ID de l'espace de nomsMANAGED_IDENTITY_ID: ID de l'identité géréeCERTIFICATE_MATERIAL: X.509-SVID au format PEM.
Le certificat d'identité gérée du gestionnaire de certificats possède une propriété managedIdentity, qui l'identifie comme un certificat d'identité gérée. La ressource de certificat d'identité gérée par Certificate Manager stocke le SVID X.509 au format PEM.
Le champ d'application du certificat d'identité géré par le gestionnaire de certificats est CLIENT_AUTH, ce qui indique que ce certificat est utilisé comme certificat client dans le mTLS de backend.
Vérifiez que l'ID SPIFFE fait partie du SAN dans le X.509-SVID.
Le SVID X.509 contient l'ID SPIFFE encodé en tant qu'URI dans le champ SAN. Cet ID SPIFFE correspond à l'identité gérée dans le pool d'identités de charge de travail.
Pour imprimer un format lisible du certificat, exécutez la commande suivante :
openssl x509 -text -noout \ <<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"
Le résultat ressemble à ce qui suit (version abrégée) :
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Ce résultat inclut les valeurs suivantes :
WORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projetNAMESPACE_ID: ID de l'espace de nomsMANAGED_IDENTITY_ID: ID de l'identité gérée
Vérifiez que la configuration de confiance de Certificate Manager contient le champ spiffeTrustStore.
La configuration de confiance du gestionnaire de certificats contient un champ appelé spiffeTrustStores. Le champ spiffeTrustStores contient le bundle de confiance associé au domaine de confiance du pool d'identités de charge de travail (représenté par dans la sortie) et tous les bundles de confiance supplémentaires spécifiés par le champ WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles dans la configuration de confiance intégrée du pool d'identités de charge de travail.
Pour afficher les détails de la configuration de confiance du gestionnaire de certificats, utilisez la commande gcloud certificate-manager trust-configs describe.
gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID
Remplacez MI_TRUST_CONFIG_ID par la configuration de confiance créée automatiquement par l'identité gérée.
Dans l'exemple de résultat suivant, l'hôte example.com est le domaine d'approbation supplémentaire auquel l'approbation est étendue.
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
Ce résultat inclut les valeurs suivantes :
PROJECT_ID: ID du projetCERTIFICATE_MATERIAL: certificat CA au format PEM autorisé à émettre des certificats dans le domaine de confianceWORKLOAD_IDENTITY_POOL_ID: ID du pool d'identités de charge de travailPROJECT_NUMBER: numéro du projetMANAGED_IDENTITY_ID: ID de l'identité gérée
Pour en savoir plus sur la configuration de confiance du Gestionnaire de certificats, consultez Configuration de confiance du Gestionnaire de certificats.
Étape suivante
- Configurer l'authentification des identités de charge de travail gérées pour Compute Engine
- Authentifier des charges de travail auprès d'autres charges de travail via mTLS