使用 SSL/TLS 憑證進行授權

本頁面說明如何透過應用程式使用安全資料傳輸層 (SSL) (現稱為傳輸層安全標準 (TLS)),加密連至 Cloud SQL 執行個體的連線。

總覽

Cloud SQL 支援使用 SSL/TLS 通訊協定連線至執行個體。SSL/TLS 連線會加密用戶端與 Cloud SQL 執行個體資料庫之間傳輸中的資料,提供一層安全保障。您也可以選擇讓 SSL/TLS 連線執行伺服器身分驗證,方法是驗證安裝在 Cloud SQL 執行個體上的伺服器憑證,以及驗證安裝在用戶端上的用戶端憑證,藉此執行用戶端身分驗證。

伺服器憑證

建立執行個體時,Cloud SQL 會自動建立並安裝由憑證授權單位 (CA) 簽署的伺服器憑證。您可以將 CA 憑證下載到用戶端主機,並用於驗證 CA 和伺服器 Cloud SQL 身分。您也可以選擇 Cloud SQL 用來簽署伺服器憑證的 CA 類型。

用戶端憑證

您可以選擇建立用戶端憑證和金鑰,並下載至用戶端的主機,用於相互驗證 (伺服器和用戶端身分驗證)。您無法選擇 Cloud SQL 用於簽署用戶端憑證的 CA 類型。

使用 SSL/TLS 連線

從用戶端連線至 Cloud SQL 執行個體時,您可以使用 SSL/TLS 建立直接連線,以及使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器建立連線。

  • 如果是直接連線,Google 強烈建議您使用 Cloud SQL 的 SSL 模式設定,強制執行 SSL/TLS 加密。您也可以視需要強制執行用戶端憑證驗證。詳情請參閱「強制執行 SSL/TLS 加密機制」一文。

  • 如果連線使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器,系統會自動以 SSL/TLS 加密連線,並驗證用戶端和伺服器身分,您不必下載伺服器 CA 憑證和用戶端憑證。

如要進一步瞭解 Cloud SQL 連線選項,請參閱「關於 Cloud SQL 連線」。

如要進一步瞭解用戶端 SSL/TLS 設定,請參閱資料庫引擎說明文件。

憑證授權單位 (CA) 階層

本節說明 Cloud SQL 執行個體可選用的三種伺服器憑證授權單位 (CA)。三個選項如下:

  • 每個執行個體的 CA:選取這個選項後,每個 Cloud SQL 執行個體專屬的內部 CA 會簽署該執行個體的伺服器憑證。Cloud SQL 會建立及管理這些 CA。如要選擇個別執行個體 CA,請選取「Google 代管的內部憑證授權單位」 (Google Cloud 控制台),或在建立執行個體時,為 serverCaMode 設定 (Cloud SQL Admin API) 或 --server-ca-mode 旗標 (gcloud CLI) 指定 GOOGLE_MANAGED_INTERNAL_CA。如果您在建立執行個體時未指定設定或旗標,則這個選項會是執行個體的預設值。如果執行個體已設為使用共用 CA 或客戶自行管理的 CA,就無法更新為使用個別執行個體 CA 選項。

  • 共用 CA:這個選項會使用由根 CA 和從屬伺服器 CA 組成的 CA 階層。區域中的從屬伺服器 CA 會簽署伺服器憑證,並由區域中的執行個體共用。當您增加區域中的執行個體數量時,使用共用 CA 階層會很有幫助,因為您不需要為個別執行個體管理專屬 CA。改用共用 CA (GOOGLE_MANAGED_CAS_CA) 後,您就能在該區域的所有執行個體中使用單一區域 CA 套件,簡化用戶端設定。Cloud SQL 會在 Google Cloud憑證授權單位服務 (CA 服務) 中,託管及管理根 CA 和從屬伺服器 CA。Cloud SQL 也會處理根 CA 和從屬伺服器 CA 的輪換作業,並提供公開的 CA 憑證套裝組合連結供下載。如要選擇共用 CA,請在 Google Cloud 控制台中選取「Google managed CAS certificate authority」(Google 代管的 CAS 憑證授權單位),或在建立或編輯執行個體時,為 serverCaMode 設定 (Cloud SQL Admin API) 指定 GOOGLE_MANAGED_CAS_CA,或為 --server-ca-mode 旗標 (gcloud CLI) 指定。如果您使用的是個別執行個體 CA 或客戶自行管理的 CA 選項,可以更新現有執行個體,改用共用 CA 階層。

  • 客戶自行管理的 CA:這個選項可讓您建立及管理自己的 CA 階層。如要自行管理 CA 和憑證,請選擇這個選項。使用客戶管理的 CA (CUSTOMER_MANAGED_CAS_CA),即可透過 CA 服務管理自己的 CA 階層和輪替政策。這項設定可讓您進一步控管,並協助您符合法規遵循要求。如要選擇客戶自行管理的 CA,您必須在 CA 服務中建立 CA 集區和 CA。在 Cloud SQL 中,建立或編輯執行個體時,請指定 CA 集區和「客戶自行管理的 CAS 憑證授權單位」 (Google Cloud 控制台)、serverCaMode 設定 (Cloud SQL Admin API) 的 CUSTOMER_MANAGED_CAS_CA,或 --server-ca-mode 旗標 (gcloud CLI)。如果您使用的是個別執行個體 CA 或共用 CA 選項,可以更新現有執行個體,改用客戶自行管理的 CA 階層。

建立或更新執行個體後,您可以使用 gcloud sql instances describe 指令或在 Google Cloud 控制台,查看 Cloud SQL 執行個體設定的 CA 階層。詳情請參閱「查看執行個體資訊」。

下表比較三種 CA 階層選項。

功能 執行個體專屬 CA 共用 CA 客戶自行管理的 CA
CA 結構 每個執行個體都有專屬 CA 根 CA 和從屬 CA 會在相同區域的執行個體之間共用 由您建立及管理的 CA 階層
加密編譯屬性 RSA 2048 位元金鑰,採用 SHA256 演算法 採用 384 位元金鑰和 SHA384 演算法的橢圓曲線數位簽章演算法 (ECDSA) 採用 384 位元金鑰和 SHA384 演算法的橢圓曲線數位簽章演算法 (ECDSA)
CA 有效期限 10 年 根 CA 為 25 年,從屬 CA 為 10 年 可自行設定 *
伺服器憑證有效期限 10 年 1 年 1 年**
由使用者啟動 CA 輪替? 是 否,CA 輪替作業由 Cloud SQL 管理 是
是否由使用者啟動伺服器憑證輪替? 是 是 是
是否自動輪換伺服器憑證? 否 是 是
TLS 連線的 CA 信任錨點 每個執行個體專屬的 CA 是對應執行個體的信任錨點。 根 CA 和從屬 CA 是特定區域內所有執行個體的信任錨點。 您建立及管理的 CA 即為信任錨點。
伺服器身分驗證 驗證 CA 即可驗證伺服器身分,因為每個執行個體都有專屬 CA。 驗證伺服器身分時,除了驗證 CA,也必須驗證主機名稱,因為伺服器 CA 會在執行個體之間共用。 雖然 CA 可能不會在執行個體之間共用,但您可能需要在驗證 CA 的同時驗證主機名稱。
伺服器憑證中的主體別名 (SAN) 欄位 只有啟用 Private Service Connect 的執行個體,SAN 欄位才會包含主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。如果使用 DNS 名稱做為主機名稱連線至 Cloud SQL 執行個體,則須設定 DNS 解析。 SAN 欄位包含所有類型執行個體的主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。如果使用 DNS 名稱做為主機名稱連線至 Cloud SQL 執行個體,則須設定 DNS 解析。 SAN 欄位包含所有類型執行個體的主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。
Cloud SQL Auth Proxy 版本支援 支援所有版本的 Cloud SQL Auth Proxy (v1 以上版本)。 必須使用 Cloud SQL Auth Proxy 2.13.0 以上版本。 必須使用 Cloud SQL Auth Proxy 2.14.3 以上版本。
服務連線限制 無 不支援下列 Google Cloud服務的連線: 不支援下列 Google Cloud服務的連線:
  • App Engine 標準環境
  • App Engine 彈性環境
  • 在第一代執行環境中執行的 Cloud Run 服務

* 如果選擇客戶自行管理的 CA,CA 服務中的 CA 憑證預設有效期限為 10 年。您可以選擇為 CA 憑證設定不同的有效期限。如果 CA 的有效期限較短,可能需要更頻繁地輪替 CA,而有效期限短於一年可能會影響伺服器憑證的有效期限。詳情請參閱「管理 CA 輪替」。

** 如果選擇客戶自行管理的 CA,伺服器憑證的預設有效期限為一年。不過,如果您將 CA 憑證的有效期限設為短於一年,伺服器憑證的有效期限就會較短。如要進一步瞭解如何在建立 CA 憑證時設定有效期限,請參閱「CA 憑證設定」和「建立根 CA」。

由 Cloud SQL 代管的個別執行個體 CA

使用 gcloud CLI、Cloud SQL Admin API 或 Terraform 建立執行個體時,預設的伺服器 CA 模式設定為每個執行個體 CA 階層。

建立執行個體時,Cloud SQL 會為每個執行個體建立新的自行簽署伺服器 CA。如要使用這項設定,請在建立執行個體時,將 serverCaMode 設為 GOOGLE_MANAGED_INTERNAL_CA。您可以使用 Cloud SQL Admin API 或 gcloud CLI,將 serverCaMode 設定保留為未指定,或在 Google Cloud 控制台中選取「Google internal Certificate Authority」(Google 內部憑證授權單位) 選項。

如果執行個體使用共用 CA 或客戶自行管理的 CA 階層,則無法更新 serverCaMode,改用個別執行個體 CA 階層。

下圖顯示每個執行個體的 CA 階層。

執行個體專屬內部 CA 階層圖表。

由 CA 服務託管的共用 CA

這個伺服器 CA 模式包含根 CA,以及各區域的從屬伺服器 CA。從屬伺服器 CA 會核發伺服器憑證,並在區域內的所有執行個體之間共用。Cloud SQL 會處理共用區域伺服器 CA 的輪替作業,並提供公開連結,供您下載 CA 憑證套裝組合。

您可以設定執行個體,使用伺服器 CA 階層,其中核發 CA 會在相同區域的執行個體之間共用。如要使用這項設定,請在建立或編輯執行個體時,將 serverCaMode 設為 GOOGLE_MANAGED_CAS_CA。您也可以在 Google Cloud 控制台中選取「Google Managed CAS Certificate Authority」(Google 代管的 CAS 憑證授權單位)。

下圖顯示共用 CA 階層。

共用 CA 階層圖

客戶自行管理的 CA

這個伺服器 CA 模式可讓您在 CA 服務中設定自己的 CA 階層。

如要在 Cloud SQL 中使用客戶管理的 CA 選項,請在 Cloud SQL 執行個體所在的區域建立 CA 集區。接著建立至少一個 CA。建立 Cloud SQL 執行個體時,請在 serverCaPool 欄位中指定 CA 集區的 ID,並將 serverCaMode 欄位設為 CUSTOMER_MANAGED_CAS_CA 值。CA 服務會從 CA 集區提供 CA,並使用該 CA 核發執行個體的伺服器憑證。

在 CA 服務中建立 CA 時,您可以根據用途建立根 CA 或從屬 CA。舉例來說,如果您打算設定根 CA 階層或鏈結至外部 CA,可能需要建立從屬 CA。

只有在您想自行管理 CA 和憑證時,才應選取客戶自行管理的 CA 選項。詳情請參閱「使用客戶自行管理的 CA」。

伺服器憑證如何輪替

Cloud SQL 提供輪替伺服器憑證的方法,因此您可以在舊憑證到期前,順暢地換上新憑證。

如果執行個體使用共用 CA 或客戶自行管理的 CA 階層,則可啟用伺服器憑證自動輪換功能,在到期前最多 180 天內,於維護更新期間執行。

如果執行個體使用個別執行個體 CA、共用 CA 或客戶管理的 CA 階層,在 Cloud SQL 執行個體的伺服器憑證到期前約三個月,專案擁有者會收到 Cloud SQL 傳送的電子郵件,說明該執行個體的憑證輪替程序已開始。電子郵件會提供執行個體名稱,並說明 Cloud SQL 已在專案中新增伺服器憑證。現有伺服器憑證會繼續正常運作。實際上,執行個體在這段期間會有兩個伺服器憑證。

要使用的伺服器憑證輪換指令,取決於您使用的是個別執行個體 CA 核發的伺服器憑證,還是共用 CA 或客戶自行管理的 CA 核發的伺服器憑證。

在目前的伺服器憑證到期前,請下載新的 server-ca.pem 檔案,其中包含目前和新伺服器憑證的憑證資訊。將新檔案複製到所有 PostgreSQL 用戶端主機,取代現有檔案,更新 PostgreSQL 用戶端以使用新檔案。

更新所有 PostgreSQL 用戶端後,請將輪替指令 (適用於個別執行個體 CA) 或輪替指令 (適用於共用 CA 或客戶自行管理的 CA) 傳送至 Cloud SQL 執行個體,輪替至新的伺服器憑證。完成後,系統就不會再辨識舊的伺服器憑證,只能使用新的伺服器憑證。

用戶端憑證不受伺服器憑證輪替影響。

SSL 憑證到期

如果 Cloud SQL 執行個體使用個別執行個體 CA (serverCaMode 設為 GOOGLE_MANAGED_INTERNAL_CA),SSL 憑證的效期為 10 年。請在這些憑證到期前,執行伺服器 CA 憑證輪替。

如果執行個體使用共用 CA (serverCaMode 設為 GOOGLE_MANAGED_CAS_CA),伺服器憑證的效期為 1 年。請在到期前輪換伺服器憑證,或啟用伺服器憑證自動輪換功能。根憑證授權單位 (CA) 憑證的效期為 25 年,從屬共用 CA 憑證的效期為 10 年。Cloud SQL 會處理輪換作業。

如果您使用的是客戶自行管理的 CA (serverCaMode 設為 CUSTOMER_MANAGED_CAS_CA),則可輪換所建立 CA 集區中的 CA,藉此輪換 CA 憑證。CA 的到期期限通常為 10 年,但您可以在 CA 服務中為 CA 設定較短的有效期限。

如要輪替 CA,請使用 CA 服務中的 CA 輪替程序。詳情請參閱「管理 CA 輪替」。

如果用戶端設定為驗證 CA 或伺服器憑證中的主機名稱,則該用戶端與伺服器憑證過期的 Cloud SQL 執行個體連線會失敗。為避免用戶端連線中斷,請在憑證到期前輪替伺服器憑證。

無論您使用個別執行個體 CA、共用 CA 或客戶自行管理的 CA 伺服器模式,都可以隨時重設 Cloud SQL 執行個體的 SSL 設定。

限制

本節說明 SSL/TLS 憑證設定和 Cloud SQL 的限制。

服務連線限制

後續步驟