Saat Anda membuat cluster database, sertifikat server yang ditandatangani oleh CA GDC default akan dibuat dan dikonfigurasi untuk digunakan oleh server database Anda. Untuk menandatangani dan mengupload sertifikat untuk database Anda yang dikeluarkan oleh PKI Anda sendiri, lakukan prosedur berikut. Penerbit default organisasi Anda harus dalam mode sertifikat BYO untuk menggunakan fitur ini.
API
Setelah Anda membuat cluster database dan cluster tersebut siap, simpan permintaan penandatanganan sertifikat yang dihasilkan sebagai file.
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
Buat file ekstensi CSR yang berisi SAN untuk cluster database Anda.
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
Dengan menggunakan file CSR dan ekstensi, buat sertifikat yang ditandatangani oleh CA Anda. Contoh kode menggunakan
openssl
, tetapi langkah ini dapat diselesaikan dengan alat lain.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
Perbarui resource sertifikat dengan sertifikat yang ditandatangani dan sertifikat CA.
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'
Pastikan sertifikat telah mencapai status siap setelah diupload.
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))'
Outputnya akan mirip dengan berikut ini:
{ "lastTransitionTime": "2024-05-03T08:42:10Z", "message": "Certificate is issued", "observedGeneration": 2, "reason": "Issued", "status": "True", "type": "Ready" }
Hanya jika Anda menggunakan database Oracle, hentikan dan mulai ulang cluster database agar konfigurasi SSL pendengar dimuat ulang.
Ganti kode berikut:
DBENGINE_SHORT_NAME
: nama singkat mesin database. Ini adalah salah satu darial
(AlloyDB Omni),pg
(PostgreSQL), atauora
(Oracle).DBCLUSTER_NAME
: nama cluster database.USER_PROJECT
: nama project pengguna tempat cluster database dibuat.CA_CERTIFICATE_FILE
: jalur ke file sertifikat CA database.CA_PRIVATE_KEY_FILE
: jalur ke file kunci pribadi CA database.