設定安全資料傳輸層 (SSL)/傳輸層安全標準 (TLS) 憑證

本頁面說明如何為執行個體強制執行 SSL/TLS 加密,確保所有連線都經過加密。您也可以進一步瞭解 Cloud SQL 如何使用自行管理的 SSL/TLS 憑證,安全地連線至 Cloud SQL 執行個體。

總覽

建立執行個體時,Cloud SQL 會自動建立伺服器憑證。建議您強制所有連線使用 SSL/TLS。

如要使用 SSL/TLS 憑證驗證用戶端憑證和伺服器身分,您必須建立用戶端憑證,並將憑證下載到 MySQL 用戶端主機。

如果是 MySQL 8.0 以上版本,當您將 SSL 模式變更為需要信任的用戶端憑證 (TRUSTED_CLIENT_CERTIFICATE_REQUIRED),或從該模式變更為其他模式時,Cloud SQL 會重新啟動執行個體。MySQL 8.0 以上版本的其他 SSL 模式變更,以及舊版 MySQL 的所有 SSL 模式變更,都不需要重新啟動。變更 SSL/TLS 憑證後,可能也需要重新啟動。如果需要重新啟動,Cloud SQL 會自動為您重新啟動執行個體。重新啟動執行個體可能會導致停機。

強制執行 SSL/TLS 加密

您可以使用 SSL 模式設定,透過下列方式強制執行 SSL 加密:

  • 允許非 SSL/非 TLS 和 SSL/TLS 連線。系統不會驗證 SSL/TLS 連線的用戶端憑證。這是目前的預設做法。

  • 僅允許以 SSL/TLS 加密的連線。SSL 連線不會驗證用戶端憑證。

  • 僅允許使用 SSL/TLS 加密且具備有效用戶端憑證的連線。

如果為 Cloud SQL 執行個體選取「Allow non-SSL/non-TLS and SSL/TLS connections」(允許非 SSL/非 TLS 和 SSL/TLS 連線),系統會接受 SSL/TLS 連線,以及未加密和不安全的連線。如果未要求所有連線都必須使用 SSL/TLS,系統仍會允許未加密的連線。因此,如果您使用公開 IP 存取執行個體,強烈建議您對所有連線強制執行 SSL。

您可以使用 SSL/TLS 憑證直接連線至執行個體,也可以使用 Cloud SQL Auth Proxy 或 Cloud SQL 連接器連線。如果使用 Cloud SQL Auth Proxy 或 Cloud SQL 連接器連線,系統會自動以 SSL/TLS 加密連線。使用 Cloud SQL Auth Proxy 和 Cloud SQL 連接器時,無論 SSL 模式設定為何,系統都會自動驗證用戶端和伺服器身分。

如要強制要求 SSL/TLS,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在 SQL 導覽選單中,點選「連線」。
  4. 選取「安全性」分頁標籤。
  5. 選取下列其中一個選項:
    • 允許未加密的網路流量 (不建議)
    • 僅允許 SSL 連線。這個選項僅允許使用 SSL/TLS 加密的連線。系統不會驗證憑證。
    • 要求使用信任的用戶端憑證。這個選項只允許使用有效用戶端憑證並經過 SSL 加密的用戶端連線。

gcloud

   gcloud sql instances patch INSTANCE_NAME \
   --ssl-mode=SSL_ENFORCEMENT_MODE
  

將 SSL_ENFORCEMENT_MODE 替換為下列其中一個選項:

  • ALLOW_UNENCRYPTED_AND_ENCRYPTED 允許非 SSL/非 TLS 和 SSL/TLS 連線。如果是 SSL 連線,系統不會驗證用戶端憑證。這是預設值。
  • ENCRYPTED_ONLY 僅允許以 SSL/TLS 加密的連線。SSL 連線不會驗證用戶端憑證。
  • TRUSTED_CLIENT_CERTIFICATE_REQUIRED僅允許使用 SSL/TLS 加密且具備有效用戶端憑證的連線。
  • 詳情請參閱「 MySQL 適用的 Cloud SQL 設定」。

Terraform

如要強制執行 SSL/TLS 加密,請使用 Terraform 資源:

resource "google_sql_database_instance" "mysql_instance" {
  name             = "mysql-instance"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    ip_configuration {
      # The following SSL enforcement options only allow connections encrypted with SSL/TLS and with
      # valid client certificates. Please check the API reference for other SSL enforcement options:
      # https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1beta4/instances#ipconfiguration
      ssl_mode = "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell。
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    每個專案只需執行這個指令一次,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,環境變數就會遭到覆寫。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. 在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須有 .tf 副檔名,例如 main.tf。在本教學課程中,這個檔案稱為 main.tf。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在進行教學課程,可以複製每個章節或步驟中的程式碼範例。

    將程式碼範例複製到新建立的 main.tf。

    您也可以從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 請查看並修改範例參數,以便套用至您的環境。
  4. 儲存變更。
  5. 初始化 Terraform。每個目錄只需執行一次這項操作。
    terraform init

    如要使用最新版 Google 供應商,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 查看設定,確認 Terraform 要建立或更新的資源符合預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台的使用者介面中,前往資源頁面,確認 Terraform 已建立或更新資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false。
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,套用更新後的 Terraform 設定:
    terraform apply
  1. 執行下列指令,並在提示中輸入 yes,移除先前使用 Terraform 設定套用的資源:

    terraform destroy

REST v1

  1. 使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:專案 ID
    • SSL_ENFORCEMENT_MODE:請使用下列其中一個選項:
      • ALLOW_UNENCRYPTED_AND_ENCRYPTED:允許非 SSL/非 TLS 和 SSL/TLS 連線。如果是 SSL 連線,系統不會驗證用戶端憑證。這是預設值。
      • ENCRYPTED_ONLY:僅允許以 SSL/TLS 加密的連線。
      • TRUSTED_CLIENT_CERTIFICATE_REQUIRED:僅允許使用 SSL/TLS 加密且具備有效用戶端憑證的連線。
    • INSTANCE_ID:執行個體 ID

    HTTP 方法和網址:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

    JSON 要求主體:

    
    {
      "settings": {
        "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"}
      }
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

REST v1beta4

  1. 使用任何要求資料之前,請先修改下列項目的值:

    • PROJECT_ID:專案 ID
    • SSL_ENFORCEMENT_MODE:請使用下列其中一個選項:
      • ALLOW_UNENCRYPTED_AND_ENCRYPTED:允許非 SSL/非 TLS 和 SSL/TLS 連線。如果是 SSL 連線,系統不會驗證用戶端憑證。這是預設值。
      • ENCRYPTED_ONLY:僅允許以 SSL/TLS 加密的連線。
      • TRUSTED_CLIENT_CERTIFICATE_REQUIRED:僅允許使用 SSL/TLS 加密且具備有效用戶端憑證的連線。
    • INSTANCE_ID:執行個體 ID

    HTTP 方法和網址:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

    JSON 要求主體:

    {
      "settings": {
        "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"}
      }
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

伺服器憑證

Cloud SQL 會在您建立執行個體時自動建立伺服器憑證。只要伺服器憑證有效,您就不需要主動管理伺服器憑證。Cloud SQL 提供三種憑證授權單位 (CA) 階層。您選取的 CA 階層會成為執行個體的伺服器 CA 模式。如果執行個體的伺服器 CA 模式是個別執行個體 CA,伺服器憑證的到期日為 10 年。如果執行個體的伺服器 CA 模式使用共用 CA 或客戶自行管理的 CA,伺服器憑證的到期日為 1 年*。到期日過後,伺服器憑證就會失效,用戶端也無法再使用該憑證與執行個體建立安全連線。如果用戶端設定為驗證 CA 或伺服器憑證中的主機名稱,則該用戶端與伺服器憑證過期的 Cloud SQL 執行個體連線會失敗。為避免用戶端連線中斷,請啟用伺服器憑證自動輪替功能,或在憑證到期前手動輪替伺服器憑證。系統會定期通知您伺服器憑證即將到期。系統會在到期日前 90、30、10、2 和 1 天傳送通知。

* 如果是客戶自行管理的 CA,且您為 CA 有效期限選取較短的到期日,則伺服器憑證的到期日可能會短於 1 年。

列出及建立伺服器憑證

如要在 Google Cloud 控制台中查看伺服器憑證的詳細資料,請前往「Connections」(連線) 頁面,然後按一下「Security」(安全性) 分頁標籤。

憑證表格會顯示下列詳細資料:

  • 憑證狀態:即將推出、有效或先前
    • 即將生效:憑證可供使用,但尚未生效。如要啟用憑證,請使用輪替程序。
    • 有效:憑證正在使用中。
    • 先前:憑證已不再使用。 如要啟用憑證,請使用復原程序。
  • 建立日期:憑證的建立日期和時間
  • 到期日:憑證到期的日期和時間

在有效憑證到期前,您可以手動建立新憑證。

控制台

適用於使用自行簽署伺服器憑證 (每個執行個體 CA) 的執行個體:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在 SQL 導覽選單中,點選「連線」。
  4. 選取「安全性」分頁標籤。
  5. 前往「管理伺服器 CA 憑證」一節。
  6. 按一下即可展開「管理憑證」。
  7. 按一下「建立新 CA 憑證」。

新的伺服器 CA 憑證會顯示在「Upcoming」(即將推出) 版位中。如要立即輪替至新的伺服器 CA 憑證,請更新用戶端並完成輪替,繼續輪替伺服器 CA 憑證。

如果執行個體使用共用 CA 核發的伺服器憑證:

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在 SQL 導覽選單中,點選「連線」。
  4. 選取「安全性」分頁標籤。
  5. 前往「管理伺服器憑證」一節。
  6. 按一下即可展開「管理憑證」。
  7. 按一下「建立伺服器憑證」。

新的伺服器憑證會顯示在「即將推出」版位。如要立即使用新的伺服器憑證,請更新用戶端並完成輪替,繼續輪替伺服器憑證。

gcloud

適用於使用自行簽署伺服器憑證 (每個執行個體 CA) 的執行個體:

  1. 如要取得伺服器憑證的相關資訊,請使用 sql ssl server-ca-certs list 指令:
    gcloud sql ssl server-ca-certs list \
    --instance=INSTANCE_NAME
  2. 如要建立伺服器憑證,請使用 sql ssl server-ca-certs create 指令:
    gcloud sql ssl server-ca-certs create \
    --instance=INSTANCE_NAME
  3. 將憑證資訊下載至本機 PEM 檔案:
    gcloud sql ssl server-ca-certs list \
    --format="value(cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/FILE_NAME.pem
  4. 將下載的檔案複製到用戶端主機,取代現有的 server-ca.pem 檔案,即可更新所有用戶端,改用新資訊。

如果執行個體使用共用 CA 核發的伺服器憑證:

  1. 如要取得伺服器憑證的相關資訊,請使用 sql ssl server-certs list 指令:
    gcloud sql ssl server-certs list \
       --instance=INSTANCE_NAME
  2. 如要建立伺服器憑證,請使用 sql ssl server-certs create 指令:
    gcloud sql ssl server-certs create \
       --instance=INSTANCE_NAME
  3. 將憑證資訊下載至本機 PEM 檔案:
    gcloud sql ssl server-certs list \
       --format="value(ca_cert.cert)" \
       --instance=INSTANCE_NAME > \
       FILE_PATH/FILE_NAME.pem
  4. 將下載的檔案複製到用戶端主機,取代現有的 server-ca.pem 檔案,即可更新所有用戶端,改用新資訊。

Terraform

如要將伺服器憑證資訊做為輸出內容,請使用 Terraform 資料來源:

  1. 在 Terraform 設定檔中新增下列內容:
       data "google_sql_ca_certs" "ca_certs" {
         instance = google_sql_database_instance.default.name
       }
    
       locals {
         furthest_expiration_time = reverse(sort([for k, v in data.google_sql_ca_certs.ca_certs.certs : v.expiration_time]))[0]
         latest_ca_cert           = [for v in data.google_sql_ca_certs.ca_certs.certs : v.cert if v.expiration_time == local.furthest_expiration_time]
       }
    
       output "db_latest_ca_cert" {
         description = "Latest CA certificate used by the primary database server"
         value       = local.latest_ca_cert
         sensitive   = true
       }
       
  2. 執行下列指令,建立 server-ca.pem 檔案:
       terraform output db_latest_ca_cert > server-ca.pem
       

用戶端憑證

建立新的用戶端憑證

您最多可以為每個執行個體建立 10 個用戶端憑證。如要建立用戶端憑證,您必須具備 Cloud SQL Admin IAM 角色。

以下是關於用戶端憑證的重要事項:

  • 如果遺失憑證的私密金鑰,則必須建立新的憑證,因為私密金鑰無法復原。
  • 根據預設,用戶端憑證的到期日為 10 年。
  • 用戶端憑證即將到期時,您不會收到通知。
  • Cloud SQL 執行個體必須處於執行中狀態,才能建立 SSL 憑證。

主控台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 在 SQL 導覽選單中,點選「連線」。
  4. 選取「安全性」分頁標籤。
  5. 按一下「Create client certificate」(建立用戶端憑證)。
  6. 在「Create a client certificate」(建立用戶端憑證) 對話方塊中,新增不重複的名稱。
  7. 點選「建立」。
  8. 在「New SSL certificate created」(已建立新的 SSL 憑證) 對話方塊的第一個部分,按一下「Download client-key.pem」(下載 client-key.pem),將私密金鑰下載至名為 client-key.pem 的檔案。
  9. 在第二個部分中,按一下「Download client-cert.pem」(下載 client-cert.pem),將用戶端憑證下載至名為 client-cert.pem 的檔案。
  10. 在第三個部分中,按一下「Download server-ca.pem」(下載 server-ca.pem),將伺服器憑證下載至名為 server-ca.pem 的檔案。
  11. 按一下「關閉」。

gcloud

  1. 使用 ssl client-certs create 指令建立用戶端憑證:

    gcloud sql ssl client-certs create CERT_NAME client-key.pem \
    --instance=INSTANCE_NAME
  2. 使用 ssl client-certs describe 指令擷取剛才建立的憑證公開金鑰,並複製到 client-cert.pem 檔案:

    gcloud sql ssl client-certs describe CERT_NAME \
    --instance=INSTANCE_NAME \
    --format="value(cert)" > client-cert.pem
  3. 使用 instances describe 指令,將伺服器憑證複製到 server-ca.pem 檔案:

    gcloud sql instances describe INSTANCE_NAME \
    --format="value(serverCaCert.cert)" > server-ca.pem

Terraform

如要建立用戶端憑證,請使用 Terraform 資源:

resource "google_sql_ssl_cert" "mysql_client_cert" {
  common_name = "mysql_common_name"
  instance    = google_sql_database_instance.mysql_instance.name
}

REST v1

  1. 建立 SSL/TLS 憑證,為它提供對此執行個體唯一的名稱:

    使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • client-cert-name:用戶端憑證名稱

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    JSON 要求主體:

    {
      "commonName" : "client-cert-name"
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

  2. 將回應中引號內的所有憑證內容 (不含引號本身) 複製到本機檔案,如下所示:
    1. 將 serverCaCert.cert 複製到 server-ca.pem。
    2. 將 clientCert.cert 複製到 client-cert.pem。
    3. 將 certPrivateKey 複製到 client-key.pem。
  3. 使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • activation-policy:啟用政策為「ALWAYS」或「NEVER」

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restart

    JSON 要求主體:

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

REST v1beta4

  1. 建立 SSL/TLS 憑證,為它提供對此執行個體唯一的名稱:

    使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • client-cert-name:用戶端憑證名稱

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    JSON 要求主體:

    {
      "commonName" : "client-cert-name"
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

  2. 將回應中引號內的所有憑證內容 (不含引號本身) 複製到本機檔案,如下所示:
    1. 將 serverCaCert.cert 複製到 server-ca.pem。
    2. 將 clientCert.cert 複製到 client-cert.pem。
    3. 將 certPrivateKey 複製到 client-key.pem。
  3. 使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • activation-policy:啟用政策為「ALWAYS」或「NEVER」

    HTTP 方法和網址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart

    JSON 要求主體:

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

這時候,您已有:

  • 伺服器憑證,儲存為 server-ca.pem。
  • 用戶端公用金鑰憑證,儲存為 client-cert.pem。
  • 用戶端私密金鑰,儲存為 client-key.pem。

視您用來連線的工具而定,系統會以不同的方式指定這三個項目。舉例來說,使用 MySQL 用戶端連線時,這三個檔案分別是 --ssl-ca、--ssl-cert 和 --ssl-key 指令選項的值。如需使用 MySQL 用戶端和 SSL/TLS 的連線範例,請參閱「 使用 MySQL 用戶端連線」。

伺服器身分驗證

伺服器身分驗證取決於 Cloud SQL 執行個體的伺服器憑證授權單位 (CA) 階層設定。

對於使用個別執行個體 CA 的執行個體,驗證 CA 也會驗證伺服器身分,因為每個執行個體都有專屬 CA。如果執行個體使用共用 CA,則必須驗證主機名稱和 CA,才能驗證伺服器身分,因為伺服器 CA 是由多個執行個體共用。

如果您有各執行個體 CA,則只能針對設定 Private Service Connect 的執行個體,執行以 DNS 名稱為基礎的伺服器身分驗證。如果您有共用 CA,則可對所有類型的執行個體 (即 Private Service Connect、私人服務存取權和公開 IP 執行個體),執行以 DNS 名稱為基礎的伺服器身分驗證。

如果您使用客戶自行管理的 CA,則可驗證 CA 信任鏈,並針對使用客戶自行管理 CA 做為 serverCAmode 的任何類型執行個體,執行以 DNS 名稱為基礎的伺服器身分驗證。

為執行個體選取客戶自行管理的 CA 選項時,您可以在伺服器憑證的 SAN 欄位中插入自訂 DNS 名稱。詳情請參閱「編輯自訂 SAN 欄位」。

您可以查看執行個體詳細資料,瞭解 Cloud SQL 執行個體設定的 CA 階層。詳情請參閱「查看執行個體資訊」。

啟用伺服器身分驗證

如果選取共用 CA 做為 Cloud SQL 執行個體的伺服器 CA 模式,或使用自訂 SAN 值設定自訂 DNS 名稱,建議您一併啟用伺服器身分驗證。

如果執行個體使用共用 CA 做為伺服器 CA 模式,則伺服器憑證的主體別名 (SAN) 欄位會包含執行個體 DNS 名稱。您可以使用執行個體查詢 API 取得這個 DNS 名稱,並將回應做為伺服器身分驗證的主機名稱。您必須為 DNS 名稱設定 DNS 解析。

如要為使用共用 CA 的執行個體啟用伺服器身分驗證,請完成下列步驟:

  1. 擷取 DNS 名稱。

    1. 如要查看 Cloud SQL 執行個體的摘要資訊 (包括執行個體的 DNS 名稱),請使用 gcloud sql instances describe 指令:

      gcloud sql instances describe INSTANCE_NAME \
        --project=PROJECT_ID

      請依指示取代下列項目:

      • INSTANCE_NAME:Cloud SQL 執行個體的名稱
      • PROJECT_ID: Google Cloud 專案的 ID 或專案編號,該專案包含執行個體
    2. 在回應中,尋找 dnsNames: 欄位。這個欄位可傳回多個 DNS 名稱,格式如下:

      網路設定 DNS 名稱格式 名稱層級
      Private Service Connect 或公開 IP 位址 INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.

      範例:
      1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
      執行個體
      私人服務連線 INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql-psa.goog.

      範例:
      1a23b4cd5e67.1a2b345c6d27.us-central1.sql-psa.goog.
      執行個體
  2. 在 DNS 區域中建立 DNS 記錄。如果是透過私人連線,請在對應虛擬私有雲 (VPC) 網路的私人 DNS 區域中建立 DNS 記錄。

  3. 連線至 MySQL 適用的 Cloud SQL 執行個體時,請將 DNS 名稱設為主機名稱。然後在用戶端啟用伺服器身分驗證。

    舉例來說,使用 MySQL 用戶端時,請指定 --ssl-mode=VERIFY_IDENTITY 旗標。其他 MySQL 用戶端驅動程式也有類似的設定旗標。

後續步驟