使用 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 ProxyCloud 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 管理員 API) 或 --server-ca-mode 標記 (gcloud CLI) 指定 GOOGLE_MANAGED_INTERNAL_CA。如果您在建立執行個體時未指定設定或標記,則此選項會是執行個體的預設值。

  • 共用 CA:使用這個選項時,系統會使用 CA 階層,其中包含根 CA 和從屬伺服器 CA。區域中的從屬伺服器 CA 會簽署伺服器憑證,並在該區域的各個執行個體之間共用。Cloud SQL 會在憑證授權單位服務 (CA 服務) 上代管及管理根 CA 和從屬伺服器 CA。 Google CloudCloud 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 中,請在建立執行個體時,為 serverCaMode 設定 (Cloud SQL Admin API) 或 --server-ca-mode 旗標 (gcloud CLI) 指定 CA 集區和 CUSTOMER_MANAGED_CAS_CA

    中顯示為已選取。

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

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

功能 個別執行個體 CA 共用 CA 客戶管理的 CA
自訂目標對象結構 為每個執行個體建立個別的 CA 在同一區域的執行個體之間共用根 CA 和從屬 CA 您建立及管理的 CA 階層
加密編譯屬性 使用 SHA256 演算法的 RSA 2048 位元金鑰 橢圓曲線數位簽章演算法 (ECDSA),使用 384 位元金鑰和 SHA384 演算法 橢圓曲線數位簽章演算法 (ECDSA),使用 384 位元金鑰和 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) 欄位 SAN 欄位僅會在使用 Private Service Connect 的執行個體中,包含主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。如果您使用 DNS 名稱做為主機名稱,連線至 Cloud SQL 執行個體,則需要設定 DNS 解析。 SAN 欄位包含所有類型執行個體的主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。如果您使用 DNS 名稱做為主機名稱,連線至 Cloud SQL 執行個體,則需要設定 DNS 解析。 SAN 欄位包含所有類型執行個體的主機名稱 (執行個體的 DNS 名稱)。主機名稱可用於驗證伺服器身分。

* 對於客戶管理的 CA 選項,CA 服務中 CA 憑證的預設有效期限為 10 年。您可以為 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 管理員 API 或 gcloud CLI,讓 serverCaMode 配置設定保持未指定狀態,也可以在 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 代管的 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 檔案,其中包含目前和新伺服器憑證的憑證資訊。將新檔案複製到所有 MySQL 用戶端主機機器,取代現有檔案,以便更新 MySQL 用戶端以使用新檔案。

所有 MySQL 用戶端都已更新後,請將旋轉指令 (針對個別執行個體 CA)旋轉指令 (針對共用 CA 或客戶管理的 CA)傳送至 Cloud SQL 執行個體,以便旋轉至新的伺服器憑證。完成後,系統就不會再辨識舊的伺服器憑證,只能使用新的伺服器憑證。

用戶端憑證不會受到伺服器憑證輪替作業的影響。

SSL 憑證到期

對於使用每個執行個體 CA 的 Cloud SQL 執行個體 (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 或伺服器憑證中的主機名稱,則該用戶端連線至 Cloud SQL 執行個體時,如果伺服器憑證已過期,連線就會失敗。為避免用戶端連線中斷,請在憑證到期前輪替伺服器憑證。

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

後續步驟