使用 SSL/TLS 憑證進行授權

本頁說明如何從應用程式使用安全資料傳輸層 (SSL),也就是現在的傳輸層安全標準 (TLS),加密與 Cloud SQL 執行個體的連線。

總覽

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

伺服器憑證

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

憑證授權單位 (CA) 層級

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

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

  • 共用 CA:這個選項會使用由根 CA 和從屬伺服器 CA 組成的 CA 階層。區域中的從屬伺服器 CA 會簽署伺服器憑證,並在區域中的執行個體之間共用。Cloud SQL 會在 Google Cloud憑證授權單位服務 (CA 服務) 上,代管及管理根 CA 和從屬伺服器 CA。Cloud SQL 也會處理根 CA 和從屬伺服器 CA 的輪替作業,並提供CA 憑證套件的公開連結供您下載。如要選擇共用 CA,請在建立執行個體時,為 serverCaMode 設定 (Cloud SQL Admin API) 或 --server-ca-mode 旗標 (gcloud CLI) 指定 GOOGLE_MANAGED_CAS_CA

  • 客戶管理的 CA:選擇這個選項後,您將建立及管理自己的 CA 層級。如要管理自己的 CA 和憑證,請選擇這個選項。如要選擇客戶管理的 CA,您必須在 CA 服務中建立 CA 集區和 CA。在 Cloud SQL 中,建立執行個體時,請指定 CA 集區和 CUSTOMER_MANAGED_CAS_CA,以用於 serverCaMode 設定 (Cloud SQL Admin API) 或 --server-ca-mode 旗標 (gcloud CLI)。

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

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

功能 個別執行個體 CA 共用 CA 客戶管理的 CA
CA 結構 每個執行個體都有專屬的 CA 根 CA 和從屬 CA 會在同一區域的執行個體之間共用 您建立及管理的 CA 階層
加密屬性 採用 SHA256 演算法的 RSA 2048 位元金鑰 橢圓曲線數位簽章演算法 (ECDSA),搭配 256 位元金鑰和 SHA384 演算法 橢圓曲線數位簽章演算法 (ECDSA),搭配 256 位元金鑰和 SHA384 演算法
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 驗證 Proxy 版本支援 支援所有版本的 Cloud SQL 驗證 Proxy,包括 v1 以上版本。 需要 Cloud SQL 驗證 Proxy 2.13.0 以上版本。 需要 Cloud SQL 驗證 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) 憑證設定」和「建立根憑證授權單位 (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 CLIserverCaMode設定保持未指定狀態,也可以在 Google Cloud 控制台中選取「Google 內部憑證授權單位」選項。

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

每個執行個體內部 CA 階層的圖表。

由 CA 服務代管的共用 CA

使用 Google Cloud 控制台建立執行個體時,共用 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,並使用 CUSTOMER_MANAGED_CAS_CA 值設定 serverCaMode 欄位。CA 服務會提供 CA 集區中的 CA,並使用該 CA 為執行個體核發伺服器憑證。

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

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

伺服器憑證如何輪替

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

如果執行個體使用每個執行個體專屬的 CA、共用 CA 或客戶管理的 CA 層級,Cloud SQL 執行個體的伺服器憑證到期前約三個月,專案擁有者會收到 Cloud SQL 的電子郵件,指出該執行個體的憑證輪替程序已開始。這封電子郵件會提供執行個體名稱,並說明 Cloud SQL 已在專案中新增伺服器憑證。現有的伺服器憑證仍可正常運作。因此,在這段期間,執行個體會有兩個伺服器憑證。

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

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

更新所有 SQL Server 用戶端後,請將輪替指令 (適用於每個執行個體的 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 設定。

後續步驟