如要使用自己的檔案,或未使用 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) 支援。
簽署的伺服器和根憑證必須在主體別名 (SAN) 中定義所有虛擬 IP、節點 IP 和主機名稱。
如需資料路徑上的元件清單,請參閱「TLS 總覽」。
如要設定資料路徑的 SSL 憑證,請按照下列高階步驟操作:
如果您未完成這些高階步驟,AlloyDB Omni 會在安裝前自動設定自己的自行簽署 SSL 憑證。
資料庫叢集
如要為資料庫叢集設定 SSL 憑證,請按照下列步驟操作:
建立 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:資料庫叢集 Secret 檔案的名稱,例如my-db-cluster-secret。BASE64_SERVER_CERTIFICATE:已簽署伺服器憑證的 Base64 編碼字串。舉例來說,您可以執行下列指令取得這個編碼字串:cat SERVER_CERTIFICATE_PATH | base64BASE64_SERVER_KEY:私人伺服器金鑰的 base64 編碼字串。BASE64_ROOT_CERTIFICATE:自行簽署根憑證的 Base64 編碼字串。
在
DBCluster規格中,新增新建立的 Secret 參照。DBCluster: metadata: name: DBCLUSTER_NAME spec: databaseVersion: 18.4.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 憑證,請按照下列步驟操作:
建立 YAML 密鑰檔案,其中包含以 Base64 編碼的憑證和金鑰檔案,如「為資料路徑設定 SSL 憑證」一文所述。
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 | base64BASE64_SERVER_KEY: 伺服器金鑰的 Base64 編碼字串。BASE64_ROOT_CERTIFICATE:自行簽署根憑證的 base64 編碼字串。根憑證必須與簽署資料庫叢集分葉憑證的根憑證相符。分葉憑證必須包含一般名稱 (CN)alloydbpgbouncer。
在規格中,新增您建立的密鑰參照。
PgBouncerPgBouncer: 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。