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. Para obtener información sobre la malla de servicios de Cloud en el clúster, consulta Instala las funciones predeterminadas y el servicio de autoridad certificadora (CA).

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: CA Service incluye un ANS explícito, pero la autoridad certificadora de Cloud Service Mesh no lo hace.

Requisitos

Habilita la API necesaria 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

  1. 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.
  2. 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 cargas de trabajo de Cloud Service Mesh. Anota el grupo de CA correspondiente a la CA subordinada.
  3. 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/") )
    
  4. 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.

  5. 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 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, 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

  1. Verifica que el espacio de nombres istio-system exista o créalo si no está:

      kubectl create ns istio-system
    
  2. Verifica 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 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, continúa con la instalación de Cloud Service Mesh administrado habilitando la administración automática.