Configurer Certificate Authority Service pour Cloud Service Mesh géré
L'intégration de Certificate Authority Service à Cloud Service Mesh géré vous permet d'émettre des certificats de charge de travail à l'aide d'autorités de certification privées au lieu de l'autorité de certification Cloud Service Mesh par défaut. Cette configuration vous aide à sauvegarder les clés de signature dans Cloud HSM, à associer des certificats à une racine d'entreprise personnalisée et à répondre aux exigences de conformité réglementaire sur plusieurs clusters.
Contrairement à l'autorité de certification Mesh par défaut, CA Service est fourni avec un SLA explicite et est facturé séparément. Étant donné que CA Service n'est pas compatible avec la configuration par défaut du parc lors de la création du cluster, vous devez configurer Cloud Service Mesh par cluster. Pour les plans de contrôle au sein du cluster, consultez Installer les fonctionnalités par défaut et le service Certificate Authority (CA).
Prérequis
Pour commencer, ce guide suppose que vous avez :
- Un projet Cloud
- Un compte de facturation Cloud
- Obtenu les autorisations requises pour provisionner Cloud Service Mesh
- Vous avez activé la fédération d'identité de charge de travail pour GKE sur vos clusters et pools de nœuds.
-
Un ou plusieurs clusters avec une version compatible de GKE, dans l'une des régions prises en charge. Pour savoir comment créer un cluster Google Kubernetes Engine avec Cloud Service Mesh activé, consultez la configuration par cluster dans le document Provisionner un plan de contrôle Cloud Service Mesh géré sur Google Kubernetes Engine. L'activation de Cloud Service Mesh géré en tant que configuration par défaut pour votre parc et l'enregistrement de clusters dans le parc lors de la création du cluster ne sont compatibles qu'avec Mesh CA. Vous devez configurer Cloud Service Mesh par cluster et activer explicitement CA Service pour chaque cluster.
Conditions requises
Activez l'API requise dans le projet où le pool d'autorités de certification sera configuré.
gcloud services enable privateca.googleapis.com \
--project=CA_PROJECT_ID
Configurer le service d'autorité de certification
- Créez le pool d'autorités de certification au niveau
DevOpset dans la même région que le cluster qu'il dessert, afin d'éviter des problèmes de latence excessive ou des pannes interrégionales potentielles. Pour en savoir plus, consultez la page Niveaux optimisés pour les charges de travail. - Créez l'autorité de certification afin de disposer d'au moins une autorité de certification active dans le pool d'autorités de certification du même projet que le cluster GKE. Utilisez des autorités de certification subordonnées pour signer les certificats de charge de travail Cloud Service Mesh. Notez le pool d'autorités de certification correspondant à l'autorité de certification subordonnée.
S'il est destiné à seuls les certificats de service pour les charges de travail Cloud Service Mesh, configurez la stratégie d'émission suivante pour le pool d'autorités de certification :
policy.yaml
baselineValues: keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true clientAuth: true caOptions: isCa: false identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: subject_alt_names.all(san, san.type == URI && san.value.startsWith("spiffe://PROJECT_ID.svc.id.goog/ns/") )Pour mettre à jour la stratégie d'émission du pool d'autorités de certification, exécutez la commande suivante :
gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
Pour en savoir plus sur la définition d'une stratégie sur un pool, consultez la section Utiliser une stratégie d'émission de certificat.
Si vous utilisez un modèle de certificat, configurez-le maintenant. Pour plus d'informations, suivez le guide du service CA pour les certificats Workload Identity. Vérifiez que le modèle de certificat est créé dans la même région que le pool d'autorités de certification. S'il existe plusieurs régions pour les pools d'autorités de certification, créez un modèle de certificat par région.
Rôles requis pour utiliser le service d'autorité de certification
Pour cette intégration, toutes les charges de travail dans Cloud Service Mesh nécessitent les rôles IAM suivants. Ces liaisons de rôles doivent être explicitement appliquées aux charges de travail Cloud Service Mesh :
WORKLOAD_IDENTITY="FLEET_PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/"
gcloud privateca pools add-iam-policy-binding CA_POOL \
--project FLEET_PROJECT_ID \
--location ca_region \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.workloadCertificateRequester"
gcloud privateca pools add-iam-policy-binding CA_POOL \
--project FLEET_PROJECT_ID \
--location ca_region \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.auditor"
Si vous utilisez des modèles de certificat :
gcloud privateca templates add-iam-policy-binding CERT_TEMPLATE_ID \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.templateUser"
Limites
- Configurez et sélectionnez l'autorité de certification avant de provisionner votre plan de contrôle Cloud Service Mesh. Il n'est pas possible de modifier l'autorité de certification.
Configurer Cloud Service Mesh géré pour utiliser CA Service
Vérifiez que l'espace de noms
istio-systemexiste ou créez-le s'il est manquant :kubectl create ns istio-systemVérifiez si le configmap
asm-optionsexiste dans l'espace de nomsistio-system:kubectl get configmap/asm-options -n istio-systemCréez le configmap s'il n'existe pas :
kubectl create configmap -n istio-system asm-optionsAppliquez un correctif au ConfigMap pour ajouter la configuration CAS :
kubectl patch configmap/asm-options -n istio-system --type merge \ -p '{"data":{"ASM_OPTS": "CA=PRIVATECA;CAAddr=projects/CA_PROJECT_ID/locations/ca_region/caPools/CA_POOL"}}'Si un modèle de certificat est nécessaire, ajoutez l'ID du modèle à l'adresse du pool d'autorités de certification en utilisant
:comme séparateur :kubectl patch configmap/asm-options -n istio-system --type merge \ -p '{"data":{"ASM_OPTS": "CA=PRIVATECA;CAAddr=projects/CA_PROJECT_ID/locations/ca_region/caPools/CA_POOL:projects/PROJECT_ID/locations/ca_region/certificateTemplates/CERT_TEMPLATE_ID"}}'
Une fois les étapes de configuration terminées, poursuivez l'installation de Cloud Service Mesh géré en activant la gestion automatique.