簽署並上傳伺服器憑證

建立資料庫叢集時,系統會產生由預設 GDC CA 簽署的伺服器憑證,並設定供資料庫伺服器使用。如要簽署及上傳資料庫的憑證 (由您自己的 PKI 核發),請執行下列程序。貴機構的預設簽發者必須處於自備憑證模式,才能使用這項功能。

API

  1. 建立資料庫叢集並準備就緒後,請將產生的憑證簽署要求儲存為檔案。

    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
    
  2. 建立 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
    
  3. 使用 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
    
  4. 使用已簽署的憑證和 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'
    
  5. 確認憑證上傳後已進入就緒狀態。

    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"
    }
    
  6. 只有在使用 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 私密金鑰檔案的路徑。