Gérer les certificats

Sélectionnez une version de la documentation :

Cette page explique comment utiliser des émetteurs de certificats personnalisés pour gérer les certificats TLS (Transport Layer Security) sur votre cluster de bases de données AlloyDB Omni basé sur Kubernetes.

Par défaut, l'opérateur Kubernetes AlloyDB Omni utilise cert-manager pour provisionner un ensemble de certificats TLS pour chaque cluster de bases de données. En plus du certificat du serveur de base de données, l'opérateur crée également des certificats pour les composants du plan de contrôle afin de garantir la sécurité des connexions internes. Par défaut, chaque certificat est signé par un émetteur géré par l'opérateur.

À partir de la version 1.6.0 de l'opérateur AlloyDB Omni, si vous préférez que tous les certificats, y compris ceux des composants du plan de contrôle, soient chaînés à votre propre autorité de certification racine de confiance, vous pouvez configurer l'opérateur pour qu'il utilise un émetteur de votre choix. Cela vous permet d'enchaîner tous les certificats à votre propre infrastructure à clé publique (PKI), y compris les certificats utilisés pour la fonctionnalité du plan de contrôle, sans exposer les détails d'implémentation de chaque entité interne.

Avant de commencer

Pour configurer un émetteur de certificats, vous devez d'abord créer un émetteur cert-manager de type ClusterIssuer ou Issuer associé à l'autorité de certification avec laquelle vous souhaitez signer vos certificats. L'opérateur AlloyDB Omni référence cet émetteur lors de la création de certificats.

Configurer des émetteurs personnalisés

Vous pouvez configurer des émetteurs de certificats personnalisés pour le cluster de bases de données, l'opérateur AlloyDB Omni et PgBouncer.

Certificats de cluster de bases de données

Cette fonctionnalité nécessite que le controlPlaneAgentsVersion du cluster de base de données concerné dans son fichier manifeste soit défini sur 1.6.0 ou une version ultérieure.

Vous devez configurer les émetteurs de certificats dans deux champs de spécification du cluster de bases de données :

  • spec.primarySpec.dataPlaneCertIssuer : référence à l'émetteur cert-manager qui provisionne les certificats du plan de données. L'autorité de certification de l'émetteur est celle à laquelle le client de base de données peut faire confiance pour valider la base de données lors d'une connexion TLS.

  • spec.primarySpec.controlPlaneAgentsCertIssuer : référence à l'émetteur cert-manager qui provisionne les certificats du plan de contrôle. Ces certificats sont utilisés pour les connexions internes.

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

Remplacez les éléments suivants :

  • DATA_PLANE_ISSUER_NAME : nom de l'émetteur cert-manager qui provisionne les certificats du plan de données, par exemple pour le serveur de base de données.

  • DATA_PLANE_ISSUER_KIND : doit être défini sur Issuer ou ClusterIssuer.

  • CONTROL_PLANE_ISSUER_NAME : nom de l'émetteur cert-manager qui provisionne les certificats du plan de contrôle pour les composants internes.

  • CONTROL_PLANE_ISSUER_KIND : doit être défini sur Issuer ou ClusterIssuer.

Certificats d'opérateur

La procédure de configuration d'un émetteur cert-manager pour les certificats d'opérateur dépend de la méthode utilisée pour installer AlloyDB Omni.

Configurer à l'aide de Helm

Si vous installez l'opérateur AlloyDB Omni version 1.6.0 ou ultérieure pour la première fois, utilisez Helm install et définissez les valeurs appropriées. Cela suppose que vous suivez les instructions d'installation.

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 l'opérateur est déjà installé et que vous devez définir l'émetteur du certificat, utilisez helm upgrade pour définir les valeurs appropriées :

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

Remplacez les éléments suivants :

  • OPERATOR_CERT_ISSUER_NAME : nom de l'émetteur cert-manager qui provisionne le certificat de l'opérateur, utilisé pour les connexions internes.

  • OPERATOR_CERT_ISSUER_KIND : doit être défini sur Issuer ou ClusterIssuer.

Configurer à l'aide d'Operator Lifecycle Manager

Si vous avez utilisé Operator Lifecycle Manager (OLM) pour installer l'opérateur AlloyDB Omni, vous pouvez modifier le champ spec.config.env de la ressource Subscription pour définir les variables d'environnement CERT_MANAGER_ISSUER_NAME et CERT_MANAGER_ISSUER_KIND du déploiement de l'opérateur.

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

Remplacez les éléments suivants :

  • OPERATOR_CERT_ISSUER_NAME : nom de l'émetteur cert-manager qui provisionne le certificat de l'opérateur, utilisé pour les connexions internes.

  • OPERATOR_CERT_ISSUER_KIND : doit être défini sur Issuer ou ClusterIssuer.

Certificats PgBouncer

Pour prendre en charge les émetteurs personnalisés, le contrôleur PgBouncer peut vérifier le champ spec.primarySpec.tls.dataPlaneCertIssuer DBCluster et l'utiliser pour provisionner le certificat PgBouncer. Cela garantit que PgBouncer utilise un certificat de la même autorité de certification que la base de données.

Valider

Pour vérifier que le déploiement de l'opérateur est sain et que les variables d'environnement CERT_MANAGER_ISSUER_NAME et CERT_MANAGER_ISSUER_KIND sont définies, exécutez la commande suivante :

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

Pour vérifier que le bon émetteur est utilisé, inspectez les objets Certificate comme suit :

kubectl get certificate -n NAMESPACE

Vérifiez le champ issuerRef dans le résultat de chaque certificat pour confirmer qu'il correspond à votre émetteur personnalisé.