Administrar certificados

Selecciona una versión de la documentación:

En esta página se describe cómo usar emisores de certificados personalizados para gestionar los certificados de Seguridad en la capa de transporte (TLS) en tu clúster de base de datos AlloyDB Omni basado en Kubernetes.

De forma predeterminada, el operador de Kubernetes de AlloyDB Omni usa cert-manager para aprovisionar un conjunto de certificados TLS para cada clúster de base de datos. Además del certificado del servidor de la base de datos, el operador también crea certificados para los componentes del plano de control para asegurarse de que las conexiones internas también sean seguras. De forma predeterminada, cada certificado está firmado por una entidad emisora gestionada por el operador.

A partir de la versión 1.6.0 del operador AlloyDB Omni, si prefieres que todos los certificados, incluidos los de los componentes del plano de control, se encadenen a tu propia CA raíz de confianza, puedes configurar el operador para que use un emisor de tu elección. De esta forma, puedes encadenar todos los certificados a tu propia infraestructura de clave pública (PKI), incluidos los certificados que se utilizan para la funcionalidad del plano de control, sin exponer los detalles de implementación de cada entidad interna.

Antes de empezar

Para configurar una entidad emisora de certificados, primero debes crear una entidad emisora de cert-manager de tipo ClusterIssuer o Issuer asociada a la AC con la que quieras firmar tus certificados. El operador de AlloyDB Omni hace referencia a este emisor al crear certificados.

Configurar emisores personalizados

Puedes configurar emisores de certificados personalizados para el clúster de base de datos, el operador de AlloyDB Omni y PgBouncer.

Certificados de clúster de bases de datos

Para usar esta función, el controlPlaneAgentsVersion del clúster de bases de datos correspondiente en su manifiesto debe ser 1.6.0 o una versión posterior.

Hay dos campos de especificación de clúster de base de datos para configurar emisores de certificados:

  • spec.primarySpec.dataPlaneCertIssuer: referencia al emisor de cert-manager que proporciona certificados del plano de datos. La AC emisora es aquella en la que puede confiar el cliente de la base de datos para verificar la base de datos durante una conexión TLS.

  • spec.primarySpec.controlPlaneAgentsCertIssuer: referencia al emisor de cert-manager que proporciona certificados del plano de control. Estos certificados se usan para conexiones internas.

spec:
  primarySpec:
    tls:
      dataPlaneCertIssuer:
        name: DATA_PLANE_ISSUER_NAME
        kind: DATA_PLANE_ISSUER_KIND
      controlPlaneAgentsCertIssuer:
        name: CONTROL_PLANE_ISSUER_NAME
        kind: CONTROL_PLANE_ISSUER_KIND

Haz los cambios siguientes:

  • DATA_PLANE_ISSUER_NAME: nombre del emisor de cert-manager que proporciona certificados del plano de datos, como los del servidor de la base de datos.

  • DATA_PLANE_ISSUER_KIND: debe ser Issuer o ClusterIssuer.

  • CONTROL_PLANE_ISSUER_NAME: nombre del emisor de cert-manager que aprovisiona los certificados del plano de control para los componentes internos.

  • CONTROL_PLANE_ISSUER_KIND: debe ser Issuer o ClusterIssuer.

Certificados de operador

Los pasos para configurar un emisor de cert-manager para los certificados de operador dependen del método utilizado para instalar AlloyDB Omni.

Configurar con Helm

Si instalas el operador de AlloyDB Omni por primera vez, usa Helm para instalarlo y define los valores adecuados. Se presupone que sigues las instrucciones de instalación.

helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m

Si ya has instalado el operador y necesitas definir la entidad emisora del certificado, usa helm upgrade para definir los valores adecuados:

helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m

Haz los cambios siguientes:

  • OPERATOR_CERT_ISSUER_NAME: nombre del emisor de cert-manager que proporciona el certificado del operador, que se usa para las conexiones internas.

  • OPERATOR_CERT_ISSUER_KIND: debe ser Issuer o ClusterIssuer.

Configurar con Operator Lifecycle Manager

Si has usado Operator Lifecycle Manager (OLM) para instalar el operador de AlloyDB Omni, puedes modificar el campo spec.config.env del recurso Subscription para definir las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND de la implementación del operador.

spec:
  config:
    env:
    - name: CERT_MANAGER_ISSUER_NAME
      value: OPERATOR_CERT_ISSUER_NAME
    - name: CERT_MANAGER_ISSUER_KIND
      value: OPERATOR_CERT_ISSUER_KIND

Haz los cambios siguientes:

  • OPERATOR_CERT_ISSUER_NAME: nombre del emisor de cert-manager que proporciona el certificado del operador, que se usa para las conexiones internas.

  • OPERATOR_CERT_ISSUER_KIND: debe ser Issuer o ClusterIssuer.

Certificados de PgBouncer

Para admitir emisores personalizados, el controlador de PgBouncer puede comprobar el campo spec.primarySpec.tls.dataPlaneCertIssuer de DBCluster y usarlo para aprovisionar el certificado de PgBouncer. De esta forma, PgBouncer usa un certificado de la misma AC que la base de datos.

Verificar

Para verificar que la implementación del operador está en buen estado y que las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND están definidas, ejecuta el siguiente comando:

kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml

Para verificar que se usa la entidad emisora correcta, inspecciona los objetos Certificate de la siguiente manera:

kubectl get certificate -n NAMESPACE

Comprueba el campo issuerRef en el resultado de cada certificado para confirmar que coincide con tu emisor personalizado.