Configurar el Servicio de Autoridades de Certificación para Managed Cloud Service Mesh

En esta guía se describe cómo configurar el Servicio de Autoridades de Certificación para Cloud Service Mesh gestionado. Para obtener información sobre Cloud Service Mesh en el clúster, consulta Instalar las funciones predeterminadas y el servicio de autoridad de certificación (CA).

Además de la autoridad de certificación de Cloud Service Mesh, puedes configurar Cloud Service Mesh para que use el Servicio de Autoridades de Certificación. En esta guía se explica cómo integrar el Servicio de Autoridades de Certificación, lo que se recomienda en los siguientes casos prácticos:

  • Si necesitas que diferentes autoridades de certificación firmen certificados de carga de trabajo en diferentes clústeres.
  • Si necesitas crear una copia de seguridad de tus claves de firma en un Cloud HSM.
  • Si trabajas en un sector muy regulado y estás sujeto a cumplimiento.
  • Si quieres encadenar tu AC de Cloud Service Mesh a un certificado raíz de empresa personalizado para firmar certificados de carga de trabajo.

El coste de la autoridad de certificación de Cloud Service Mesh está incluido en los precios de Cloud Service Mesh. El servicio de CA no está incluido en el precio base de Cloud Service Mesh y se cobra por separado. Además, el Servicio de Autoridades de Certificación incluye un acuerdo de nivel de servicio explícito, pero la autoridad de certificación de Cloud Service Mesh no.

Requisitos previos

Para empezar, en esta guía se da por hecho que tienes lo siguiente:

Requisitos

Habilita la API necesaria en el proyecto en el que se configurará el grupo de CAs.

 gcloud services enable privateca.googleapis.com \
      --project=CA_PROJECT_ID

Configurar el servicio de AC

  1. Crea el grupo de CAs en el nivel DevOps y en la misma región que el clúster al que sirve para evitar problemas de latencia excesiva o posibles interrupciones entre regiones. Para obtener más información, consulta Niveles de carga de trabajo optimizada.
  2. Crea la AC para tener al menos una autoridad de certificación activa en el grupo de ACs del mismo proyecto que el clúster de GKE. Usa ACs subordinadas para firmar certificados de carga de trabajo de Cloud Service Mesh. Anota el grupo de ACs correspondiente a la AC subordinada.
  3. Si solo se va a usar para emitir certificados para cargas de trabajo de Cloud Service Mesh, configura la siguiente política de emisión para el grupo de CAs:

    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/") )
    
  4. Para actualizar la política de emisión del grupo de CAs, usa el siguiente comando:

    gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
    

    Para obtener información sobre cómo definir una política en un pool, consulta Usar una política de emisión de certificados.

  5. Si vas a usar una plantilla de certificado, configúrala ahora. Para obtener más información, consulta la guía del servicio de CA para 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 ACs. Si hay varias regiones para los grupos de ACs, 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 de Cloud Service Mesh requieren los siguientes roles de gestión de identidades y accesos. Estas vinculaciones de roles deben aplicarse explícitamente a 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:

    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 puede cambiar la CA.

Configurar Cloud Service Mesh gestionado para usar el Servicio de Autoridades de Certificación

  1. Verifica que el espacio de nombres istio-system existe o créalo si falta:

      kubectl create ns istio-system
    
  2. Comprueba si el configmap asm-options existe en el espacio de nombres istio-system:

      kubectl get configmap/asm-options -n istio-system
    
  3. Crea el configmap si no existe:

      kubectl create configmap -n istio-system asm-options
    
  4. Aplica un parche al mapa de configuración para añadir 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 necesitas una plantilla de certificado, añade el ID de la plantilla a la dirección de CA Pool 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, continúa con la instalación de Cloud Service Mesh gestionado habilitando la gestión automática.