設定服務連線政策
本頁面說明網路管理員如何設定服務連線政策,以便自動連線至代管服務。
事前準備
請確認要部署的受管理服務支援服務連線政策。
如要進一步瞭解支援服務連線政策的服務,請參閱「支援的服務」。
您必須知道要為其部署連線的 Managed Service 執行個體的服務類別名稱。
請參閱Private Service Connect 端點相關說明。
您需要虛擬私有雲 (VPC) 網路和子網路。
您必須在專案中啟用 Compute Engine API。
您必須在專案中啟用 Network Connectivity API。
您必須在部署 Private Service Connect 端點的消費者專案中啟用 Service Consumer Management API。這個 API 可讓您Google Cloud 建立用於部署 Private Service Connect 端點的 Network Connectivity Service 帳戶。
必要的角色
如要取得設定網路及建立服務連線政策所需的權限,請要求管理員為您授予專案的 Compute Network Admin (roles/compute.networkAdmin
) 身分與存取權管理角色。
如要搭配共用虛擬私有雲使用服務連線政策,您必須為服務和主機專案中的網路連線服務帳戶授予角色。建立服務連線政策時,系統會自動設定這些服務帳戶,但您可以手動移除這些角色。如果您看到缺少權限的錯誤訊息,服務帳戶管理員可能需要再次授予角色。詳情請參閱「為共用虛擬私人雲端設定服務帳戶」。
建立服務連線政策
服務連線政策可讓您授權指定的服務類別,在供應端和用戶端虛擬私有雲網路之間建立 Private Service Connect 連線。
您最多可以為每個服務類別、區域和 VPC 網路組合建立一項政策。政策會針對該特定組合指定服務連線自動化功能。
設定政策時,您會選取一或多個子網路。這些子網路會用來為透過政策建立的端點分配 IP 位址。子網路的堆疊類型會影響可部署的端點 IP 版本。如果多個連線政策位於相同的區域,您可以在這些政策中重複使用相同的子網路。
舉例來說,如果您想在三個不同區域使用兩項服務的服務連線自動化功能,請建立六個政策。您至少可以使用三個子網路,每個區域一個。
建立服務連線政策後,您只能更新政策的子網路、連線限制和服務執行個體範圍。如果需要更新其他欄位,請刪除政策並建立新的政策。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
按一下「建立連線政策」。
輸入連線政策的「名稱」。
指定服務類別。
- 針對 Google 服務,請執行下列操作:
- 在「服務詳細資料」中,選取「Google 服務」。
- 從「Service class」選單中選取服務類別。
- 針對第三方服務,請採取下列行動:
- 在「服務詳細資料」中,選取「第三方服務」。
- 在「Service class」(服務類別) 中,輸入服務類別名稱。
- 針對 Google 服務,請執行下列操作:
在「Endpoints scope」部分,選取這項政策適用的「Network」和「Region」。
在「Endpoints configuration」部分,從「Subnetworks」選單中選取一或多個子網路。子網路用於為端點分配 IP 位址。
選用步驟:為政策指定連線限制。限制會決定使用此連線政策可建立的端點數量。如未指定,則代表沒有限制。
根據預設,系統會為與連線政策位於相同專案的服務執行個體建立端點。如果您已選取支援的 Google 服務,可以設定連線政策,連線至 Resource Manager 階層中不同部分的服務例項。
如要選取不同的資源管理工具節點,請按照下列步驟操作:
- 選取「自訂服務執行個體範圍」。
- 選擇包含要連結服務執行個體的機構、資料夾和專案。
按一下「建立政策」。
gcloud
使用 service-connection-policies create
指令。
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description=DESCRIPTION \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=LIST_OF_NODES
更改下列內容:
POLICY_NAME
:服務連線政策的名稱。NETWORK
:要套用這項政策的網路。PROJECT_ID
:VPC 網路專案的專案 ID 或編號。對於共用虛擬私有雲網路,服務連線政策必須部署在主專案中,服務專案不支援這類政策。REGION
:要套用這項政策的地區。您必須為每個要自動連線服務的區域建立相同的政策。SERVICE_CLASS
:服務類別的產生者提供的資源 ID。SUBNETS
:一或多個用於為 Private Service Connect 端點分配 IP 位址的一般消費者子網路。子網路必須與服務連線政策位於相同區域。如果多個連線政策位於相同的區域,您可以在這些政策中重複使用相同的子網路。您可以使用半形逗號分隔的清單輸入多個子網路。LIMIT
:使用這項政策可建立的端點數量上限。如未指定,則代表沒有限制。DESCRIPTION
:服務連線政策的選用說明。PRODUCER_INSTANCE_LOCATION
:針對支援的 Google 託管服務,指定這項政策是否會自動連線至位於自訂 Resource Manager 位置的服務例項。如果設為none
,系統會建立端點,連線至與服務連線政策位於相同專案的服務執行個體 (如果是共用虛擬私有雲,則會連線至已連結的專案)。預設值為none
。如果設為custom-resource-hierarchy-levels
,您可以使用--allowed-google-producers-resource-hierarchy-level
標記指定自訂位置。LIST_OF_NODES
:針對支援的 Google 受控服務,指定包含您要連線的服務執行個體的 Resource Manager 節點 (專案、資料夾和機構) 清單。只有在--producer-instance-location
旗標設為custom-resource-hierarchy-levels
時,系統才會勾選這個欄位。清單可包含任何專案、資料夾和機構組合。如需範例清單,請參閱以下內容:"projects/1111111111", "folders/2222222222", "folders/3333333333", "organizations/4444444444"
舉例來說,下列指令會為 Google 發布的 google-cloud-sql
服務類別建立服務連線政策。這項政策可用於自動連線至在 shared-db-service-project
中部署的服務執行個體。使用這項政策建立的 Private Service Connect 端點會從 endpoint-subnet
子網路中分配 IP 位址。使用這項政策最多可建立 10 個端點。
gcloud network-connectivity service-connection-policies create google-cloud-sql-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-sql \ --subnets=endpoint-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-producer-instance-scope=projects/shared-db-service-project
Terraform
您可以使用 Terraform 資源建立服務連線政策。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
API
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:專案 ID。REGION
:服務連線政策的區域。POLICY_NAME
:服務連線政策的名稱。DESCRIPTION
:服務連線政策的選用說明。NETWORK
:服務連線政策的網路。LIMIT
:使用這項政策可建立的端點數量上限。如未指定,則代表沒有限制。SUBNET
:一或多個用於為 Private Service Connect 端點分配 IP 位址的一般消費者子網路。子網路必須與服務連線政策位於相同區域。如果多個連線政策位於相同的地區,您可以在這些政策中重複使用相同的子網路。您可以使用逗號分隔清單輸入多個子網路 URI。SERVICE_CLASS
:服務類別的產生者提供的資源 ID。PRODUCER_INSTANCE_LOCATION
:PRODUCER_INSTANCE_LOCATION_UNSPECIFIED
(預設) 或CUSTOM_RESOURCE_HIERARCHY_LEVELS
。LIST_OF_NODES
:包含您要連線的服務例項的 Resource Manager 節點 (專案、資料夾和機構) 清單。只有在PRODUCER_INSTANCE_LOCATION
旗標設為CUSTOM_RESOURCE_HIERARCHY_LEVELS
時,系統才會檢查這個欄位。清單可包含任何專案、資料夾和機構組合。如需範例清單,請參閱以下內容:"projects/1111111111", "folders/2222222222", "folders/3333333333", "organizations/4444444444"
HTTP 方法和網址:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
JSON 要求主體:
{ "description": "DESCRIPTION", "network": "projects/PROJECT_ID/global/networks/NETWORK", "pscConfig": { "limit": "LIMIT", "subnetworks": [ "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" ] "producerInstanceLocation": "CUSTOM_RESOURCE_HIERARCHY_LEVELS", "allowedGoogleProducersResourceHierarchyLevel": [ LIST_OF_NODES ] }, "serviceClass": "SERVICE_CLASS" }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
列出服務連線政策
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
系統會顯示連線政策。
gcloud
使用 service-connection-policies list
指令。
gcloud network-connectivity service-connection-policies list \ --region=REGION
將 REGION
替換為您要列出服務連結政策的地區。
API
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:專案 ID。REGION
:要列出服務連線政策的區域。
HTTP 方法和網址:
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "serviceConnectionPolicies": [ { "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-1", "createTime": "2023-08-15T15:33:54.712819865Z", "updateTime": "2023-08-15T15:33:54.945630882Z", "description": "descriptor", "network": "projects/project-id/global/networks/network-two", "serviceClass": "service-class", "infrastructure": "PSC", "pscConfig": { "subnetworks": [ "projects/project-id/regions/us-west1/subnetworks/us-west1-subnet" ], "limit": "12" }, "etag": "zCqDFBG1dS7B4gNdJKPR98YMUXpSrBIz0tZB_hwOIZI" }, { "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-2", "createTime": "2023-08-15T16:59:29.230257109Z", "updateTime": "2023-08-15T16:59:29.508994923Z", "description": "descriptor", "network": "projects/project-id/global/networks/custom-test", "serviceClass": "service-class", "infrastructure": "PSC", "pscConfig": { "subnetworks": [ "projects/project-id/regions/us-central1/subnetworks/subnet-one" ], "limit": "25" }, "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8" } ] }
說明服務連線政策
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
按一下要查看的服務連線政策。
gcloud
使用 service-connection-policies describe
指令。
gcloud network-connectivity service-connection-policies describe POLICY_NAME \ --region=REGION
更改下列內容:
POLICY_NAME
:您要說明的服務連線政策名稱。REGION
:您要說明的服務連線政策區域。
API
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:專案 ID。REGION
:服務連線政策的區域。POLICY_NAME
:要說明的服務連線政策名稱。
HTTP 方法和網址:
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name", "createTime": "2023-08-15T16:59:29.230257109Z", "updateTime": "2023-08-15T16:59:29.508994923Z", "description": "description", "network": "projects/project-id/global/networks/custom-test", "serviceClass": "gcp-memorystore-redis", "infrastructure": "PSC", "pscConfig": { "subnetworks": [ "projects/project-id/regions/us-central1/subnetworks/subnet-one" ], "limit": "25" }, "etag": "nB603i61nRGMZpNjWoWMM6wRzsgM8QN9C9v5QFLyOa8" }
更新服務連線政策
您可以更新服務連線政策的子網路、連線限制和服務執行個體範圍。
如果您從服務連線政策中移除子網路,則適用下列規定:
- 現有的 Private Service Connect 端點不會受到影響。
- 新的端點不會使用已移除的子網路。
如果您更新服務連線政策的連線限制,則適用下列規定:
- 現有的端點不會受到影響。
- 如果新連線限制低於與政策相關聯的現有端點數量,服務連線自動化功能就會阻止建立使用此政策的新端點。
- 如果新的連線限制高於與政策相關聯的現有端點數量,系統就會建立先前因連線限制而遭到封鎖的端點。
如果您更新服務連線政策,但未指定連線限制,則更新後的政策就沒有連線限制。
如果您更新服務連線政策的服務執行個體範圍,現有的端點不會受到影響。如要更新範圍,請使用Google Cloud 主控台或 API。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
按一下要編輯的服務連線政策。
按一下 [編輯]。
更新服務連線政策。
按一下「更新政策」。
gcloud
使用 service-connection-policies update
指令。
gcloud network-connectivity service-connection-policies update POLICY_NAME \ --region=REGION \ --project=PROJECT_ID \ --subnets=SUBNETS \ --psc-connection-limit=LIMIT
POLICY_NAME
:服務連線政策的名稱。REGION
:服務連線政策的區域。您無法更新政策的區域。PROJECT_ID
:政策專案的專案 ID 或編號。SUBNETS
:一或多個用於為 Private Service Connect 端點分配 IP 位址的一般消費者子網路。子網路必須與服務連線政策位於相同區域。如果多個連線政策位於相同的區域,您可以在這些政策中重複使用相同的子網路。您可以使用半形逗號分隔的清單輸入多個子網路。LIMIT
:使用這項政策可建立的端點數量上限。如未指定,則代表沒有限制。
API
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:專案 ID。REGION
:服務連線政策的區域。您無法更新政策的區域。POLICY_NAME
:服務連線政策的名稱。LIMIT
:使用這項政策可建立的端點數量上限。如未指定,則代表沒有限制。SUBNET
:一或多個用於為 Private Service Connect 端點分配 IP 位址的一般消費者子網路。子網路必須與服務連線政策位於相同區域。如果多個連線政策位於相同的地區,您可以在這些政策中重複使用相同的子網路。您可以在逗號分隔的清單中輸入多個子網路 URI。NETWORK
:服務連線政策的網路。
HTTP 方法和網址:
PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME
JSON 要求主體:
{ "pscConfig": { "limit": "LIMIT", "subnetworks": [ "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" ] }, "network": "projects/PROJECT_ID/global/networks/NETWORK" }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/project-id/locations/us-central1/operations/operation-1692118768698-602f91a204523-8c6a2d93-d5c20a6a", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
刪除服務連線政策
如果您已完成使用服務,或想停止自動連線,可以刪除服務連線政策。如果有效的 Private Service Connect 連線與政策相關聯,系統就會封鎖政策刪除作業。刪除服務連線政策前,請先停用所有相關聯的服務執行個體,刪除所有有效連線。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
選取要刪除的服務連線政策,然後按一下「刪除」。
gcloud
使用 service-connection-policies delete
指令。
gcloud network-connectivity service-connection-policies delete POLICY_NAME \ --region=REGION
更改下列內容:
POLICY_NAME
:您要刪除的服務連線政策名稱。REGION
:要刪除的服務連線政策所在的區域。
API
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:專案 ID。REGION
:服務連線政策的區域。POLICY_NAME
:要刪除的服務連線政策名稱。
HTTP 方法和網址:
DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/project-id/locations/us-central1/operations/operation-1692128792549-602fb6f98194a-e0275435-36edc095", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T19:46:32.605032867Z", "target": "projects/project-id/locations/us-central1/serviceConnectionPolicies/policy-name", "verb": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
設定共用虛擬私有雲的服務帳戶
使用服務連線政策搭配共用 VPC 時,系統會自動設定服務帳戶,但您可以手動移除角色。如果您看到缺少權限的錯誤訊息,請嘗試再次授予角色。
如要授予必要角色,服務帳戶管理員可以執行下列操作。
在服務專案中將角色授予服務帳戶
gcloud
將 Network Connectivity Service Agent 角色 (
roles/networkconnectivity.serviceAgent
) 授予服務專案的 Network Connectivity Service 帳戶。授予服務專案的角色。gcloud projects add-iam-policy-binding SERVICE_PROJECT_NUMBER \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \ --role=roles/networkconnectivity.serviceAgent
將
SERVICE_PROJECT_NUMBER
替換為服務專案的專案編號。將 Compute Network User 角色 (
roles/compute.networkUser
) 授予服務專案的 Network Connectivity 服務帳戶。請執行下列任一操作。在主專案中授予角色。
gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \ --role=roles/compute.networkUser
將
HOST_PROJECT_NUMBER
替換為主機專案的專案編號。為主專案中與服務連結政策相關聯的每個子網路授予角色。請針對每個子網路使用下列指令。
gcloud compute networks subnets add-iam-policy-binding SUBNET \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \ --role=roles/compute.networkUser \ --region=REGION \ --project=HOST_PROJECT_NUMBER
更改下列內容:
SUBNET
:與服務連線政策相關聯的子網路名稱。REGION
:子網路的地區。
將角色授予主機專案中的服務帳戶
gcloud
將網路連線服務代理人角色 (
roles/networkconnectivity.serviceAgent
) 授予主機專案的網路連線服務帳戶。在主機專案中授予角色。gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER \ --member=serviceAccount:service-HOST_PROJECT_NUMBER@gcp-sa-networkconnectivity.iam.gserviceaccount.com \ --role=roles/networkconnectivity.serviceAgent
將
HOST_PROJECT_NUMBER
替換為主機專案的專案編號。