設定服務連線政策
本頁面說明網路管理員如何設定服務連線政策,自動建立與代管服務的私人連線。
事前準備
確認要部署的受管理服務支援服務連線政策。
如要進一步瞭解支援服務連線政策的服務,請參閱「支援的服務」。
您必須知道要部署連線的代管服務執行個體服務類別名稱。
請參閱這篇文章,瞭解 Private Service Connect 端點。
您需要虛擬私有雲 (VPC) 網路和子網路。
您必須在專案中啟用 Compute Engine API。
您必須在專案中啟用 Network Connectivity API。
您必須在部署 Private Service Connect 端點的消費者專案中啟用 Service Consumer Management API。這個 API 可讓您Google Cloud 建立 Network Connectivity 服務帳戶,部署 Private Service Connect 端點。
必要的角色
如要取得設定網路及建立服務連線政策所需的權限,請要求管理員為您授予專案的Compute Network Admin (roles/compute.networkAdmin
) 身分與存取權管理角色。
如要在共用虛擬私有雲中使用服務連線政策,必須在服務和主專案中,將角色授予「網路連線服務帳戶」。建立服務連線政策時,系統會自動設定這些服務帳戶,但您可以手動移除角色。如果看到權限不足的錯誤訊息,服務帳戶管理員可能需要重新授予角色。詳情請參閱「設定共用虛擬私有雲的服務帳戶」。
建立服務連線政策
服務連線政策可授權指定服務類別,在生產端和用戶端虛擬私有雲網路之間建立 Private Service Connect 連線。
每個服務類別、區域和虛擬私有雲網路組合最多可建立一項政策。政策會規定該特定組合的服務連線自動化。
設定政策時,請選取一或多個子網路。這些子網路會用於為透過政策建立的端點分配 IP 位址。子網路的堆疊類型會影響可部署的端點 IP 版本。如果多項連線政策共用相同區域,您可以在這些政策中重複使用同一個子網路。
舉例來說,如要在三個不同區域使用兩個服務,並啟用服務連線自動化功能,請建立六項政策。您至少需要三個子網路,每個區域各一個。
建立服務連線政策後,您只能更新政策的子網路、連線限制和服務執行個體範圍。如要更新其他欄位,請刪除政策並建立新政策。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
按一下「建立連線政策」。
輸入連線政策的「Name」(名稱)。
指定服務類別。
- 如果是 Google 服務,請執行下列操作:
- 在「服務詳細資料」中,選取「Google 服務」。
- 從「服務類別」選單中選取服務類別。
- 如果是第三方服務,請按照下列步驟操作:
- 在「服務詳細資料」中,選取「第三方服務」。
- 在「服務類別」中,輸入服務類別名稱。
- 如果是 Google 服務,請執行下列操作:
在「端點範圍」部分,選取要套用這項政策的「網路」和「區域」。
在「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
:虛擬私有雲網路專案的 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 的服務帳戶
使用服務連線政策和共用 VPC 時,系統會自動設定服務帳戶,但您可以手動移除角色。如果看到權限不足的錯誤訊息,請嘗試再次授予角色。
如要授予必要角色,服務帳戶管理員可以執行下列操作。
在服務專案中將角色授予服務帳戶
gcloud
將網路連線服務代理人角色 (
roles/networkconnectivity.serviceAgent
) 授予服務專案的網路連線服務帳戶。在服務專案中授予角色。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
替換為託管專案的專案編號。