Administrar certificados

Selecciona una versión de la documentación:

En esta página, se describe cómo usar entidades emisoras de certificados personalizadas para administrar certificados de seguridad de la capa de transporte (TLS) en tu clúster de base de datos de 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 bases 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 garantizar que las conexiones internas también sean seguras. De forma predeterminada, cada certificado está firmado por una entidad emisora administrada por el operador.

A partir de la versión 1.6.0 del operador de 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 una entidad emisora de tu elección. Esto te permite encadenar todos los certificados a tu propia infraestructura de clave pública (PKI), incluidos los certificados que se usan para la funcionalidad del plano de control, sin exponer los detalles de implementación de cada entidad interna.

Antes de comenzar

Para configurar una entidad emisora de certificados, primero debes crear una entidad emisora de cert-manager de tipo ClusterIssuer o Issuer que esté asociada con la CA que deseas que firme tus certificados. El operador de AlloyDB Omni hace referencia a este emisor cuando crea certificados.

Configura emisores personalizados

Puedes configurar entidades emisoras de certificados personalizadas para el clúster de base de datos, el operador de AlloyDB Omni y PgBouncer.

Certificados de clúster de la base de datos

Esta función requiere que el controlPlaneAgentsVersion del clúster de la base de datos pertinente en su manifiesto sea 1.6.0 o superior.

Existen dos campos de especificación del clúster de base de datos para configurar las entidades emisoras de certificados:

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

  • spec.primarySpec.controlPlaneAgentsCertIssuer: Es una referencia a la entidad emisora de cert-manager que aprovisiona certificados del plano de control. Estos certificados se usan para las 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

Reemplaza lo siguiente:

  • DATA_PLANE_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona certificados del plano de datos, como para el servidor de la base de datos.

  • DATA_PLANE_ISSUER_KIND: Debe ser Issuer o ClusterIssuer.

  • CONTROL_PLANE_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona 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 una entidad emisora de cert-manager para los certificados del operador dependen del método que se use para instalar AlloyDB Omni.

Configura con Helm

Si instalas el operador de AlloyDB Omni versión 1.6.0 o posterior por primera vez, usa Helm install y establece los valores adecuados. Esto supone 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 instalaste el operador y necesitas establecer la entidad emisora del certificado, usa helm upgrade para establecer 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

Reemplaza lo siguiente:

  • OPERATOR_CERT_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona el certificado del operador, que se usa para las conexiones internas.

  • OPERATOR_CERT_ISSUER_KIND: Debe ser Issuer o ClusterIssuer.

Configura con Operator Lifecycle Manager

Si usaste Operator Lifecycle Manager (OLM) para instalar el operador de AlloyDB Omni, puedes modificar el campo spec.config.env del recurso Subscription para establecer las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND de la Deployment 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

Reemplaza lo siguiente:

  • OPERATOR_CERT_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona 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 entidades emisoras personalizadas, el controlador de PgBouncer puede verificar el campo spec.primarySpec.tls.dataPlaneCertIssuer de DBCluster y usarlo para aprovisionar el certificado de PgBouncer. Esto garantiza que PgBouncer use un certificado de la misma CA que la base de datos.

Verificar

Para verificar que el Deployment del operador esté en buen estado y que las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND estén configuradas, ejecuta el siguiente comando:

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

Para verificar que se use el emisor correcto, inspecciona los objetos Certificate de la siguiente manera:

kubectl get certificate -n NAMESPACE

Verifica el campo issuerRef en el resultado de cada certificado para confirmar que coincida con tu entidad emisora personalizada.