本頁面說明如何為 Cloud SQL 執行個體設定自訂網域名稱系統 (DNS) 名稱。
總覽
您可以設定 Cloud SQL 執行個體,讓應用程式使用貴組織管理的自訂 DNS 名稱連線。如要使用自訂 DNS 名稱 (而非 IP 位址) 連線至 Cloud SQL 執行個體,請設定自訂主體別名 (SAN)。建立或更新執行個體時,您可以設定自訂 SAN。
將自訂 DNS 名稱做為自訂 SAN 設定新增至執行個體時,Cloud SQL 會將自訂 DNS 名稱插入執行個體伺服器憑證的 SAN 欄位。這項自訂功能可讓您安全地搭配主機名稱驗證使用自訂 DNS 名稱。您可以在自訂 SAN 設定中,新增以逗號分隔的清單,最多可包含三個自訂 DNS 名稱。基於安全考量,只有將伺服器 CA 模式設為 CUSTOMER_MANAGED_CAS_CA 的執行個體,才能使用自訂 SAN 設定。
為執行個體設定自訂 DNS 名稱後,您可以使用該自訂 DNS 名稱連線資料庫用戶端或應用程式,包括 Cloud SQL 語言連接器和 Cloud SQL Auth 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。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。
Terraform
如要建立具有自訂 SAN 值的執行個體,請使用 Terraform 資源。下列範例也會為新執行個體建立必要資源。
新增或更新執行個體的自訂 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。
Terraform
如要更新已有自訂 SAN 值的執行個體,請使用 Terraform 資源。
清除執行個體的所有自訂 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 Auth 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 名稱連線至執行個體
連線至 SQL Server 適用的 Cloud SQL 執行個體時,請將自訂 DNS 名稱設為主機名稱。接著,指定sqlcmd 的 -N 旗標,或選取 SSMS 的「Encrypt Connection/Encryption」(加密連線/加密) 選項,啟用伺服器身分驗證。
其他 SQL Server 驅動程式也有類似的旗標或設定。
如要從外部網路連線至私人 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如何處理加密。