設定傳輸層安全標準 (TLS) 憑證

選取說明文件版本:

如要建立 AlloyDB Omni 叢集,您必須先設定傳輸層安全標準 (TLS) 通訊。

如要使用自己的檔案,或未使用 Ansible,才需要設定 TLS 憑證和金鑰檔案。Ansible 可以在安裝階段產生自行簽署的憑證。

如要進一步瞭解 AlloyDB Omni 如何使用 TLS,請參閱「TLS 總覽」。

事前準備

設定 TLS 憑證前,請先完成下列要求:

  • 如要提供自己的私密根金鑰、根憑證和已簽署的伺服器憑證,用於 TLS 通訊,請立即產生這些項目。如果不想提供這些憑證,Ansible 可以在安裝期間為您產生自行簽署的憑證。

  • 選擇 AlloyDB Omni 資料庫叢集的名稱 (DBCLUSTER_NAME),例如 my-db-cluster。

設定控制路徑的 SSL 憑證

為 AlloyDB Omni 的控制路徑設定 SSL 憑證,可在其元件之間建立零信任架構 (ZTA)。

詳情請參閱「TLS 總覽」。

如要設定控制路徑的 SSL 憑證,請按照下列其中一個選項的指示操作,視您的環境而定:

Ansible

Ansible 會使用教戰手冊,自動管理及部署必要的 SSL 憑證和金鑰檔案。

Ansible 腳本設定完成後,會在您建立叢集時,於安裝階段執行。這類腳本會將提供的憑證和金鑰檔案複製到每個 AlloyDB Omni 節點。

如果您設定以 Ansible 為基礎的 SSL 設定,且未提供憑證和金鑰檔案,Ansible 會產生自己的自行簽署憑證。

如要設定以 Ansible 為基礎的 SSL 設定,請使用下列格式建立 Ansible 腳本 (inventory.yaml):

alloydbomni:
  vars:
    cluster_manager:
      name: DBCLUSTER_NAME
      ssl:
        enable: true
        key_file: "SERVER_CERTIFICATE_PATH"
        cert_file: "SERVER_KEY_PATH"
        ca_file: "ROOT_CERTIFICATE_PATH"
    etcd:
      setup: true
      ssl:
        enable: true
        key_file: "SERVER_CERTIFICATE_PATH"
        cert_file: "SERVER_KEY_PATH"
        ca_file: "ROOT_CERTIFICATE_PATH"

請替換下列變數:

  • DBCLUSTER_NAME: AlloyDB Omni 資料庫叢集的名稱,例如 my-db-cluster。
  • SERVER_CERTIFICATE_PATH: 已簽署伺服器憑證的路徑,例如 server.crt。
  • SERVER_KEY_PATH: 私有伺服器金鑰的路徑,例如 server.key。
  • ROOT_CERTIFICATE_PATH:自行簽署根憑證的路徑,例如 root.crt。

AlloyDB Omni 自動調度管理工具 CLI

如要使用 AlloyDB Omni 自動調度管理工具 CLI,您必須手動管理下列憑證和金鑰檔案,並將其部署至每個資料庫叢集節點的固定位置,且檔案名稱固定:

  • 已簽署的伺服器憑證
  • 私人伺服器金鑰
  • 根憑證

已簽署的伺服器和根憑證必須包含所有虛擬 IP、節點 IP,以及主體別名 (SAN) 中定義的主機名稱。

叢集節點 目標路徑 來源路徑
控制項 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-tls.crt SERVER_CERTIFICATE_PATH
控制項 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-tls.key SERVER_KEY_PATH
控制項 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-ca.crt ROOT_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/server-tls.crt SERVER_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/server-tls.key SERVER_KEY_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/server-ca.crt ROOT_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/etcd-tls.crt SERVER_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/etcd-tls.key SERVER_KEY_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/etcd-ca.crt ROOT_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/node-manager-tls.crt SERVER_CERTIFICATE_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/node-manager-tls.key SERVER_KEY_PATH
叢集管理工具 /etc/alloydbomni/cluster_manager/ssl/node-manager-ca.crt ROOT_CERTIFICATE_PATH
Node Manager /etc/alloydbomni/node_manager/ssl/server-tls.crt SERVER_CERTIFICATE_PATH
Node Manager /etc/alloydbomni/node_manager/ssl/server-tls.key SERVER_KEY_PATH
Node Manager /etc/alloydbomni/node_manager/ssl/server-ca.crt ROOT_CERTIFICATE_PATH
etcd 位主管 /var/lib/etcd/ssl/etcd.crt SERVER_CERTIFICATE_PATH
etcd 位管理員 /var/lib/etcd/ssl/etcd.key SERVER_KEY_PATH
etcd 位管理員 /var/lib/etcd/ssl/rootca.crt ROOT_CERTIFICATE_PATH

請替換下列變數:

  • DBCLUSTER_NAME: AlloyDB Omni 資料庫叢集的名稱,例如 my-db-cluster。
  • SERVER_CERTIFICATE_PATH: 已簽署伺服器憑證的路徑,例如 server.crt。
  • SERVER_KEY_PATH: 私有伺服器金鑰的路徑,例如 server.key。
  • ROOT_CERTIFICATE_PATH: 自行簽署根憑證的路徑,例如 root.crt。

設定資料路徑的 SSL 憑證

如要為 AlloyDB Omni 的資料路徑設定 SSL 憑證,必須具備下列憑證和金鑰檔案:

  • 已簽署的伺服器憑證。
  • 私人伺服器金鑰。
  • 根憑證,提供相互傳輸層安全性 (mTLS) 支援。

已簽署的伺服器和根憑證必須包含所有虛擬 IP、節點 IP,以及主體別名 (SAN) 中定義的主機名稱。

如需資料路徑上的元件清單,請參閱「TLS 總覽」。

如要設定資料路徑的 SSL 憑證,請按照下列高階步驟操作:

  1. 設定資料庫叢集的 SSL 憑證。
  2. 為 PgBouncer 設定 SSL 憑證。

如果您未完成這些高階步驟,AlloyDB Omni 會在安裝前自動設定自己的自行簽署 SSL 憑證。

資料庫叢集

如要為資料庫叢集設定 SSL 憑證,請按照下列步驟操作:

  1. 建立 YAML 密鑰檔案,其中包含「設定資料路徑的 SSL 憑證」一節所述、採用 Base64 編碼的憑證和金鑰檔案。

    Secret:
      metadata:
        name: DBCLUSTER_SECRET_NAME
      spec:
        type: Opaque
        data:
          tls.crt: BASE64_SERVER_CERTIFICATE
          tls.key: BASE64_SERVER_KEY
          ca.crt:  BASE64_ROOT_CERTIFICATE
    

    請替換下列變數:

    • DBCLUSTER_SECRET_NAME:資料庫叢集密鑰檔案的名稱,例如 my-db-cluster-secret。
    • BASE64_SERVER_CERTIFICATE:已簽署伺服器憑證的 Base64 編碼字串,例如執行下列指令即可取得這個編碼字串:

      cat SERVER_CERTIFICATE_PATH | base64
    • BASE64_SERVER_KEY:私人伺服器金鑰的 base64 編碼字串。

    • BASE64_ROOT_CERTIFICATE:自行簽署根憑證的 Base64 編碼字串。

  2. 在 DBCluster 規格中,新增新建立的 Secret 參照。

    DBCluster:
      metadata:
        name: DBCLUSTER_NAME
      spec:
        databaseVersion: 18.1.0
        mode: ""
        primarySpec:
          port: PG_PORT
          adminUser:
            passwordRef:
              name: db-pw-DBCLUSTER_NAME
        tls:
          certSecret:
            name: "DBCLUSTER_SECRET_NAME"
    

    請替換下列變數:

    • DBCLUSTER_NAME: AlloyDB Omni 資料庫叢集的名稱,例如 my-db-cluster。
    • PG_PORT:託管 PostgreSQL 的通訊埠號碼,例如 5432。
    • DBCLUSTER_SECRET_NAME:資料庫叢集密鑰資源的名稱,例如 my-db-cluster-secret。

PgBouncer

如要為 PgBouncer 設定 SSL 憑證,請按照下列步驟操作:

  1. 建立 YAML 密鑰檔案,其中包含「設定資料路徑的 SSL 憑證」一節所述的 Base64 編碼憑證和金鑰檔案。

    Secret:
      metadata:
        name: PGBOUNCER_SECRET_NAME
      spec:
        type: Opaque
        data:
          tls.crt: BASE64_SERVER_CERTIFICATE
          tls.key: BASE64_SERVER_KEY
          ca.crt:  BASE64_ROOT_CERTIFICATE
    

    請替換下列變數:

    • PGBOUNCER_SECRET_NAME:PgBouncer 密鑰檔案的名稱,例如 db-tls-secret。
    • BASE64_SERVER_CERTIFICATE:已簽署伺服器憑證的 base64 編碼字串,例如,您可以執行下列指令來取得這個編碼字串:

      cat SERVER_CERTIFICATE_PATH | base64
    • BASE64_SERVER_KEY:伺服器金鑰的 base64 編碼字串。

    • BASE64_ROOT_CERTIFICATE:自簽根憑證的 Base64 編碼字串。根憑證必須與簽署資料庫叢集分葉憑證的根憑證相符。分葉憑證必須包含通用名稱 (CN) alloydbpgbouncer。

  2. 在 PgBouncer 規格中,新增您建立的密鑰參照。

    PgBouncer:
      metadata:
        name: PGBOUNCER_NAME
      spec:
        dbClusterRef: DBCLUSTER_NAME
        serverTLS:
          certSecret:
            name: "PGBOUNCER_SECRET_NAME"
    

    請替換下列變數:

    • PGBOUNCER_NAME: 這個 PgBouncer 規格檔案的名稱。例如:my-pgbouncer-spec。
    • DBCLUSTER_NAME: AlloyDB Omni 資料庫叢集的名稱,例如 my-db-cluster。
    • PGBOUNCER_SECRET_NAME:新建立的 PgBouncer 密鑰資源名稱,例如 db-tls-secret。

後續步驟