Configura Certificate Authority Service para Cloud Service Mesh administrado
En esta guía, se describe cómo configurar Certificate Authority Service para Cloud Service Mesh administrado. Si deseas obtener información sobre Cloud Service Mesh en el clúster, consulta Instala las funciones predeterminadas y el servicio de autoridad certificadora (AC).
Además de la autoridad certificadora de Cloud Service Mesh, puedes configurar Cloud Service Mesh para que use Certificate Authority Service. En esta guía, se te brinda la posibilidad de realizar la integración en el servicio de CA, lo que es recomendable para los siguientes casos de uso:
- Si necesitas autoridades certificadoras para que firmen certificados de carga de trabajo en diferentes clústeres.
- Si necesitas respaldar tus claves de firma en un HSM administrado.
- Si te encuentras en una industria altamente regulada y estás sujeto a cumplimiento.
- Si deseas encadenar tu AC de Cloud Service Mesh a un certificado raíz personalizado de empresa para firmar certificados de carga de trabajo.
El costo de la autoridad certificadora de Cloud Service Mesh se incluye en los precios de Cloud Service Mesh. El servicio de AC no está incluido en el precio base de Cloud Service Mesh y se cobra por separado. Además, el servicio de AC incluye un ANS explícito, pero la AC de Cloud Service Mesh no lo hace.
Requisitos
Habilita la API requerida en el proyecto en el que se configurará el grupo de AC.
gcloud services enable privateca.googleapis.com \
--project=CA_PROJECT_ID
Configura el servicio de CA
- Crea el grupo de CA en el nivel
DevOps
y en la misma región que el clúster al que entrega contenido para evitar problemas de latencia excesiva o posibles interrupciones entre regiones. Para obtener más información, consulta Niveles optimizados según la carga de trabajo. - Crea la CA para tener al menos una autoridad certificadora activa en el grupo de CA en el mismo proyecto que el clúster de GKE. Usa AC subordinadas para firmar certificados de carga de trabajo de Cloud Service Mesh. Anota el grupo de CA correspondiente a la CA subordinada.
Si está destinado solo a certificados de servicio para cargas de trabajo de Cloud Service Mesh, configura la siguiente política de emisión para el grupo de AC:
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/") )
Para actualizar la política de emisión del grupo de CA, usa el siguiente comando:
gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
Para obtener información sobre cómo configurar una política en un grupo, consulta Usa una política de emisión de certificados.
Si usas una plantilla de certificado, configúrala ahora. A fin de obtener más información, sigue la Guía del servicio de CA para los certificados de identidad de carga de trabajo. Asegúrate de que la plantilla de certificado se cree en la misma región que el grupo de CA. Si hay varias regiones para grupos de CA, crea una plantilla de certificado por región.
Roles necesarios para usar el servicio de AC
Para esta integración, todas las cargas de trabajo en Cloud Service Mesh requieren los siguientes roles de IAM. Estas vinculaciones de roles deben aplicarse de forma explícita para las cargas de trabajo de 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 usas plantillas de certificados, haz lo siguiente:
gcloud privateca templates add-iam-policy-binding CERT_TEMPLATE_ID \
--member "group:${WORKLOAD_IDENTITY}" \
--role "roles/privateca.templateUser"
Limitaciones
- Configura y elige la AC antes de aprovisionar tu plano de control de Cloud Service Mesh. No se admite el cambio de AC.
Configura Cloud Service Mesh administrado para usar el servicio de AC
Verifica que el espacio de nombres
istio-system
exista o créalo si no está:kubectl create ns istio-system
Verifica si el configmap
asm-options
existe en el espacio de nombresistio-system
:kubectl get configmap/asm-options -n istio-system
Crea el ConfigMap si no existe:
kubectl create configmap -n istio-system asm-options
Aplica un parche al configmap para agregar la configuración de 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 se necesita una plantilla de certificado, agrega el ID de la plantilla a la dirección del grupo de AC con
:
como separador: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"}}'
Después de completar los pasos de configuración, habilita la administración automática para continuar con la instalación de Cloud Service Mesh administrado.