建立資料庫叢集時,系統會產生由預設 GDC CA 簽署的伺服器憑證,並設定供資料庫伺服器使用。如要簽署及上傳資料庫的憑證 (由您自己的 PKI 核發),請執行下列程序。貴機構的預設簽發者必須處於自備憑證模式,才能使用這項功能。
API
建立資料庫叢集並準備就緒後,請將產生的憑證簽署要求儲存為檔案。
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
建立 CSR 擴充功能檔案,內含資料庫叢集的 SAN。
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
使用 CSR 和擴充功能檔案,產生由 CA 簽署的憑證。 程式碼範例使用
openssl
,但您可以使用其他工具完成這個步驟。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
使用已簽署的憑證和 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'
確認憑證上傳後已進入就緒狀態。
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))'
畫面會顯示如下的輸出內容:
{ "lastTransitionTime": "2024-05-03T08:42:10Z", "message": "Certificate is issued", "observedGeneration": 2, "reason": "Issued", "status": "True", "type": "Ready" }
只有在使用 Oracle 資料庫時,才需要停止並重新啟動資料庫叢集,重新載入接聽程式的 SSL 設定。
更改下列內容:
DBENGINE_SHORT_NAME
:資料庫引擎的縮寫名稱。這是al
(AlloyDB Omni)、pg
(PostgreSQL) 或ora
(Oracle) 其中之一。DBCLUSTER_NAME
:資料庫叢集的名稱。USER_PROJECT
:建立資料庫叢集的使用者專案名稱。CA_CERTIFICATE_FILE
:資料庫 CA 憑證檔案的路徑。CA_PRIVATE_KEY_FILE
:資料庫 CA 私密金鑰檔案的路徑。