本頁面說明如何為 Cloud SQL 執行個體設定自訂網域名稱系統 (DNS) 名稱。
總覽
您可以設定 Cloud SQL 執行個體,讓應用程式可透過貴機構管理的自訂 DNS 名稱連線。如果您想使用自訂 DNS 名稱連線至 Cloud SQL 執行個體,而非使用 IP 位址,請設定自訂主體別名名稱 (SAN)。您可以在建立或更新執行個體時設定自訂 SAN。
當您將自訂 DNS 名稱新增為執行個體的自訂 SAN 設定時,Cloud SQL 會將自訂 DNS 名稱插入執行個體伺服器憑證的 SAN 欄位。這項自訂功能可讓您安全地使用自訂 DNS 名稱,並進行主機名稱驗證。您可以將最多三個以半形逗號分隔的自訂 DNS 名稱加入自訂 SAN 設定。基於安全性考量,您只能針對以 CUSTOMER_MANAGED_CAS_CA
設定為伺服器 CA 模式的執行個體使用自訂 SAN 設定。
為執行個體設定自訂 DNS 名稱後,您可以使用該自訂 DNS 名稱連結資料庫用戶端或應用程式,包括 Cloud SQL 語言連接器和 Cloud SQL 驗證 Proxy。
工作流程
如要為執行個體設定自訂 DNS 名稱,請執行下列操作:
- 建立以客戶管理式 CA 設定的執行個體。
- 在執行個體中新增自訂 SAN 值。自訂 SAN 值會插入執行個體伺服器憑證的 SAN 欄位。
- 判斷執行個體的 IP 位址。
- 為執行個體建立自訂 DNS 記錄。
- 使用自訂 DNS 名稱連線至執行個體。
事前準備
為執行個體設定自訂 DNS 名稱前,請確認您具備必要角色和權限。
如果您要建立新的 Cloud SQL 執行個體,則為使用自訂 SAN,執行個體也必須使用客戶管理的憑證授權單位 (CA),以便採用伺服器 CA 模式。
使用自訂 SAN 值建立執行個體
如要建立含有自訂 SAN 值的執行個體,請使用下列 gcloud sql instances create
指令:
gcloud
gcloud sql instances create "INSTANCE_NAME" \ --database-version=DATABASE_VERSION \ --project=PROJECT_ID \ --region=REGION \ --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \ --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID --custom-subject-alternative-names=CUSTOM_DNS_NAME
請將以下項目改為對應的值:
INSTANCE_NAME
與您要建立的 Cloud SQL 執行個體名稱。DATABASE_VERSION
與您要建立的 Cloud SQL 執行個體版本enum
相同。客戶自行管理的 CA 選項僅適用於 MySQL 8.0.30 以上版本。PROJECT_ID
與您打算建立 Cloud SQL 執行個體的專案 ID。PROJECT_ID_CAS
與您建立 CA_POOL_ID 的專案 ID 相符。這個專案可能與您要建立 Cloud SQL 執行個體的專案相同,也可能不同。REGION
則替換為您建立 CA 集區的地區。您必須將執行個體建立在與 CA 集區相同的地區內。CA_POOL_ID
替換為您建立的 CA 集區 ID。CUSTOM_DNS_NAME
最多可包含三個自訂 DNS 名稱,以半形逗號分隔,且值之間不得有空格。例如:develop.example.com,test.example.com,production.example.com
。
為執行個體新增或更新自訂 SAN 值
如要為現有執行個體新增或更新自訂 SAN 值,請執行下列操作:
gcloud
gcloud sql instances patch INSTANCE_NAME \ --custom-subject-alternative-names=CUSTOM_DNS_NAME
請將以下項目改為對應的值:
INSTANCE_NAME
與您要更新的 Cloud SQL 執行個體名稱。CUSTOM_DNS_NAME
最多可包含三個自訂 DNS 名稱,以半形逗號分隔,且值之間不得有空格。例如develop.example.com,new-test.example.com,production.example.com
。
從執行個體中清除所有自訂 SAN 值
如要從執行個體中清除所有自訂 SAN 值,請執行下列操作:
gcloud
gcloud sql instances patch INSTANCE_NAME \ --clear-custom-subject-alternative-names
將 INSTANCE_NAME
替換為您要更新的 Cloud SQL 執行個體名稱。
建立自訂 DNS 記錄
您必須先設定 DNS 名稱和 IP 位址之間的對應關係,才能使用自訂 DNS 名稱連線至執行個體,並與用戶端和應用程式連線。這種對應稱為 DNS 解析。如果您要進行私人連線,請在對應的虛擬私有雲 (VPC) 網路中在私人 DNS 區域中建立 DNS 記錄。
如要為執行個體建立自訂 DNS 記錄,請執行下列操作:
擷取執行個體的 IP 位址。執行下列指令:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
請將以下項目改為對應的值:
- INSTANCE_NAME:Cloud SQL 執行個體的名稱
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
在回應中找出
ipAddresses:
欄位。例如:
ipAddresses: - ipAddress: 192.0.2.4 type: PRIVATE
您可以擷取已設定為私人服務存取權、Private Service Connect 或兩者的執行個體的私人 IP 位址。
將兩個 DNS 記錄新增至應用程式使用的 DNS 區域。您可以使用自行管理的 DNS 伺服器,或是應用程式使用的 Cloud DNS 私人區域。
- 為執行個體的 IP 位址建立
A
記錄 - 建立包含執行個體連線名稱的
TXT
記錄。
標準資料庫用戶端會使用
A
記錄查詢 IP 位址,以便建立連線。Cloud SQL 語言連接器和 Cloud SQL 驗證 Proxy 會使用TXT
記錄來查詢執行個體連線名稱。舉例來說,執行個體的連線字串為
my-project:region:my-instance
,但您想使用 DNS 名稱prod-db.mycompany.example.com
進行連線。如果公司網路上執行個體的 IP 位址是192.0.2.4
,請建立下列 DNS 記錄:Record type: A Name: prod-db.mycompany.example.com Value: 192.0.2.4 TTL: 600 Record type: TXT Name: prod-db.mycompany.example.com Value: my-project:region:my-instance TTL: 600
- 為執行個體的 IP 位址建立
使用自訂 DNS 名稱連線至執行個體
連線至 MySQL 適用的 Cloud SQL 執行個體時,請將自訂 DNS 名稱設為主機名稱,並在用戶端中啟用伺服器身分驗證功能。舉例來說,使用 MySQL 用戶端時,請指定--ssl-mode=VERIFY_IDENTITY
如果您要從外部網路連線至私人 Cloud SQL 執行個體,則必須設定 Cloud SQL 執行個體及其虛擬私有雲 (VPC) 網路,以便允許外部連線,並讓 Cloud DNS 與內部部署系統通訊。如要進一步瞭解這項設定,請參閱「從外部來源連線」和「為內部部署系統設定 DNS」。
限制
- 您最多只能在 Cloud SQL 執行個體的伺服器憑證中,新增三個 DNS 名稱做為自訂 SAN 值。
- 您可以將 DNS 名稱新增至憑證,做為執行個體的自訂 SAN 值,但長度上限為 253 個半形字元。
- 您為執行個體新增至憑證的 DNS 名稱不得包含萬用字元 (
*
) 或結尾的點號。舉例來說,test.example.com.
是不允許的。 - DNS 名稱必須有效,如 RFC 1034 所述。
- 您只能為
CUSTOMER_MANAGED_CAS_CA
例項指定自訂 SAN 值。
後續步驟
- 管理 Cloud SQL 執行個體的 SSL/TLS 憑證。
- 進一步瞭解 Google Cloud中加密功能的處理方式。
- 使用 SSL/TLS 憑證連線至 Cloud SQL 執行個體。
- 進一步瞭解 MySQL 如何使用 SSL/TLS。