本頁面說明如何設定私人服務存取權和 Private Service Connect。
設定私人服務存取權後,您就能分配 IP 位址範圍,並為 Google Cloud 專案中的虛擬私有雲 (VPC) 網路建立私人服務連線。這樣一來,虛擬私有雲網路中的資源就能連線至 Cloud SQL 執行個體。
設定 Private Service Connect 後,您就能從屬於不同群組、團隊、專案或機構的多個虛擬私有雲網路,連線至主要 Cloud SQL 執行個體或任何讀取副本。
建立支援私人服務存取權和 Private Service Connect 的執行個體
建立同時支援私人服務存取權和 Private Service Connect 的 Cloud SQL 執行個體,即可享有這兩項服務的優點。詳情請參閱「執行個體的連線選項」。
使用 Private Service Connect 後,您就能從屬於不同群組、團隊、專案或機構的多個虛擬私有雲網路連線至 Cloud SQL 執行個體。
您可以使用 gcloud CLI 或 API,建立支援私人服務存取權和 Private Service Connect 的 Cloud SQL 執行個體。
gcloud
如要建立同時支援私人服務存取權和 Private Service Connect 的執行個體,請使用 gcloud beta sql instances create
指令:
gcloud beta sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --network=VPC_PSA_NETWORK_PATH \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
請將以下項目改為對應的值:
- INSTANCE_NAME:執行個體的名稱。
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- REGION_NAME:執行個體的區域名稱。
ALLOWED_PROJECTS:允許的專案 ID 或編號清單,以半形逗號分隔。如果專案未包含在這份清單中,您就無法在專案中建立Private Service Connect 端點,以便連線至執行個體。
- AVAILABILITY_TYPE:為執行個體啟用高可用性。針對這個參數,請指定下列其中一個值:
REGIONAL
:啟用高可用性,建議用於正式版執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL
:不提供備援功能。這是預設值。
如要進一步瞭解如何設定及移除執行個體的高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- RANGE_NAME:針對這個選用參數,設定 IP 範圍的分配範圍名稱。範圍名稱必須符合
RFC 1035
的規範,且長度介於 1 至 63 個字元之間。 - MACHINE_TYPE:執行個體的機器類型。
- DATABASE_VERSION:執行個體的資料庫版本 (例如
POSTGRES_13
)。 - VPC_PSA_NETWORK_PATH:執行個體連線的 VPC 網路名稱和路徑 (例如
"projects/PROJECT_ID/global/networks/default"
)。這個網路用於私人服務存取連線,以及 Cloud SQL 執行個體的私人服務存取 IP 位址。 - VPC_PSC_NETWORK_PATH:Private Service Connect 端點需要建立的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT:Private Service Connect 端點建立的專案。如果 VPC 網路不是共用虛擬私有雲,則只能是網路的主機專案。如果這是共用虛擬私有雲,則可以是主專案或服務專案。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
如要停用公開 IP,請使用 --no-assign-ip
參數。
您也可以選擇使用 --enable-google-private-path
參數,允許 BigQuery 等其他 Google Cloud 服務存取 Cloud SQL 中的資料,並透過私人 IP 連線對這項資料執行查詢。只有在下列情況下,此參數才有效:
- 您可以使用
--no-assign-ip
參數。 - 您可以使用
--network
參數指定要用來建立私人連線的虛擬私人雲端網路名稱。
Terraform
如要建立同時具備私人服務存取權和 Private Service Connect 的執行個體,請使用
google_sql_database_instance
Terraform 資源。
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,該檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,請視需要加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,並確認 Terraform 將要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- INSTANCE_NAME:執行個體的名稱。
- REGION_NAME:執行個體的區域名稱。
- AVAILABILITY_TYPE:為執行個體啟用高可用性。針對這個參數,請指定下列其中一個值:
REGIONAL
:啟用高可用性,建議用於正式版執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL
:不提供備援功能。這是預設值。
如要進一步瞭解如何設定及移除執行個體的高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- VPC_PSA_NETWORK_PATH:執行個體連線的 VPC 網路路徑 (例如
"projects/PROJECT_ID/global/networks/default"
)。這個網路用於私人服務存取連線,以及 Cloud SQL 執行個體的私人服務存取 IP 位址。 - RANGE_NAME:針對這個選用參數,設定 IP 範圍的分配範圍名稱。範圍名稱必須符合
RFC 1035
的規範,且長度介於 1 至 63 個半形字元之間。 ALLOWED_PROJECTS:允許的專案 ID 或編號清單,以半形逗號分隔。如果專案未包含在這份清單中,您就無法在專案中建立Private Service Connect 端點,以便連線至執行個體。
- VPC_PSC_NETWORK_PATH:Private Service Connect 端點需要建立的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT:Private Service Connect 端點建立的專案。如果 VPC 網路不是共用虛擬私有雲,則只能是網路的主機專案。如果這是共用虛擬私有雲,則可以是主專案或服務專案。
- MACHINE_TYPE:執行個體的機器類型。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
由於執行個體具有內部 IP 位址,因此您將 ipv4Enabled
參數設為 false
。
如果您將選用的 enablePrivatePathForGoogleCloudServices
參數設為 true
,即可允許 BigQuery 等其他 Google Cloud 服務存取 Cloud SQL 中的資料,並透過內部 IP 連線對這類資料執行查詢。將這個參數設為 false
後,其他 Google Cloud 服務就無法透過內部 IP 連線存取 Cloud SQL 中的資料。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 要求主體:
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "POSTGRES_13", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": VPC_PSA_NETWORK_PATH, "allocatedIpRange": "RANGE_NAME", "enablePrivatePathForGoogleCloudServices": true, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
為執行個體停用 Private Service Connect
如果執行個體同時啟用私人服務存取權和 Private Service Connect,您可以為該執行個體停用 Private Service Connect。
為執行個體停用 Private Service Connect 時,這項作業可能需要 8 分鐘,執行個體的停機時間約為 45 秒。作業完成後,私人服務存取權和 Private Service Connect 連線路徑就不會再同時存在於同一個執行個體中。您無法使用 Private Service Connect 連線至執行個體。
您可以使用 gcloud CLI 或 API,為執行個體停用 Private Service Connect。
gcloud
如要停用執行個體的 Private Service Connect,請使用 gcloud beta sql instances patch
指令:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
請將以下項目改為對應的值:
- INSTANCE_NAME:執行個體名稱
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
Terraform
如要為執行個體停用 Private Service Connect,請使用
google_sql_database_instance
Terraform 資源。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
為執行個體啟用 Private Service Connect
您可以為已啟用私人服務存取權的執行個體啟用 Private Service Connect。您可以使用 Private Service Connect,透過多個虛擬私有雲網路連線至 Cloud SQL 執行個體。
為執行個體啟用 Private Service Connect 時,這項作業可能需要 8 分鐘,且執行個體會暫時停止運作約 45 秒。作業完成後,私人服務存取權和 Private Service Connect 連線路徑會在同一個執行個體上並存。
您可以使用 gcloud CLI 或 API,為執行個體啟用 Private Service Connect。
gcloud
如要為執行個體啟用 Private Service Connect,請使用 gcloud beta sql instances patch
指令:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
請將以下項目改為對應的值:
- INSTANCE_NAME:執行個體名稱
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
ALLOWED_PROJECTS:允許的專案 ID 或編號清單,以半形逗號分隔。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,以便連線至執行個體。
- VPC_PSC_NETWORK_PATH:Private Service Connect 端點建立位置的 VPC 網路路徑。例如:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT:Private Service Connect 端點建立的專案。如果 VPC 網路不是共用虛擬私有雲,則只能是網路的主機專案。如果這是共用虛擬私有雲,則可以是主專案或服務專案。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
Terraform
如要為執行個體啟用 Private Service Connect,請使用
google_sql_database_instance
Terraform 資源。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- INSTANCE_NAME:執行個體的名稱。
- ALLOWED_PROJECTS:允許的專案 ID 或編號清單,以半形逗號分隔。這些專案會覆寫已設定為使用 Private Service Connect 的專案。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,以便連線至執行個體。
- VPC_PSC_NETWORK_PATH:Private Service Connect 端點建立位置的 VPC 網路路徑。例如:
projects/my-host-project/global/networks/default
。 SERVICE_PROJECT:Private Service Connect 端點建立的專案。如果 VPC 網路不是共用虛擬私有雲,則只能是網路的主機專案。如果這是共用虛擬私有雲,則可以是主專案或服務專案。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": "true", "allowedConsumerProjects": [ALLOWED_PROJECTS] } }, "kind": "sql#settings" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。