Wenn Sie einen Datenbankcluster erstellen, wird ein Serverzertifikat generiert, das von der Standard-GDC-Zertifizierungsstelle signiert und für die Verwendung durch Ihren Datenbankserver konfiguriert wird. Führen Sie die folgenden Schritte aus, um ein von Ihrer eigenen PKI ausgestelltes Zertifikat für Ihre Datenbank zu signieren und hochzuladen. Der Standardaussteller Ihrer Organisation muss sich im BYO-Zertifikatsmodus befinden, damit Sie diese Funktion nutzen können.
API
Nachdem Sie den Datenbankcluster erstellt haben und er bereit ist, speichern Sie die generierte Anfrage für die Zertifikatsunterzeichnung als Datei.
kubectl get certificate.pki.security.gdc.goog \ dbs-DBENGINE_SHORT_NAME-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT -o jsonpath='{.status.byoCertStatus.csrStatus.csr}' \ | base64 -d > DBCLUSTER_NAME.csr
Erstellen Sie eine CSR-Erweiterungsdatei mit den SANs für Ihr Datenbankcluster.
export SAN=$(openssl req -in DBCLUSTER_NAME.csr -noout -text | grep 'DNS:' | sed -s 's/^[ ]*//')
echo "keyUsage=digitalSignature,keyEncipherment extendedKeyUsage=serverAuth,clientAuth subjectAltName=${SAN:?}" > DBCLUSTER_NAME-csr.ext
Generieren Sie mit der CSR- und der Erweiterungsdatei das von Ihrer Zertifizierungsstelle signierte Zertifikat. Im Codebeispiel wird
openssl
verwendet, dieser Schritt kann aber auch mit anderen Tools ausgeführt werden.openssl x509 -req -in DBCLUSTER_NAME.csr -days 365 \ -CA CA_CERTIFICATE_FILE -CAkey CA_PRIVATE_KEY_FILE \ -CAcreateserial -extfile DBCLUSTER_NAME-csr.ext \ -out DBCLUSTER_NAME-signed.crt
Aktualisieren Sie die Zertifikatsressource mit dem signierten Zertifikat und dem CA-Zertifikat.
echo "spec: byoCertificate: certificate: $(base64 -w0 DBCLUSTER_NAME-signed.crt) ca: $(base64 -w0 CA_CERTIFICATE_FILE)" > patch.txt
kubectl patch certificate.pki.security.gdc.goog \ dbs-DBENGINE_SHORT_NAME-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT --patch-file patch.txt --type='merge'
Prüfen Sie, ob das Zertifikat nach dem Upload den Status „Bereit“ erreicht hat.
kubectl get certificate.pki.security.gdc.goog \ dbs-DBENGINE_SHORT_NAME-cert-request-DBCLUSTER_NAME \ -n USER_PROJECT -o json | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
Die Ausgabe sollte in etwa so aussehen:
{ "lastTransitionTime": "2024-05-03T08:42:10Z", "message": "Certificate is issued", "observedGeneration": 2, "reason": "Issued", "status": "True", "type": "Ready" }
Nur wenn Sie eine Oracle-Datenbank verwenden, müssen Sie den Datenbankcluster beenden und neu starten, damit die SSL-Konfiguration des Listeners neu geladen wird.
Ersetzen Sie Folgendes:
DBENGINE_SHORT_NAME
: der abgekürzte Name der Datenbank-Engine. Dies ist eine vonal
(AlloyDB Omni),pg
(PostgreSQL) oderora
(Oracle).DBCLUSTER_NAME
: der Name des Datenbankclusters.USER_PROJECT
: Der Name des Nutzerprojekts, in dem der Datenbankcluster erstellt wurde.CA_CERTIFICATE_FILE
: der Pfad zur Zertifikatsdatei der Datenbank-CA.CA_PRIVATE_KEY_FILE
: Der Pfad zur privaten Schlüsseldatei der Datenbank-CA.