Private Service Connect 執行個體不會向公開網際網路公開任何端點。建立 Private Service Connect 執行個體時,系統會建立端點,提供執行個體的 SSH (Git) 和 HTTPS (Git、網頁介面、API) 存取權。端點必須在您的私有網路上指派 IP 位址。Private Service Connect 執行個體的所有進出流量都會通過 Private Service Connect 端點。
如要進一步瞭解如何使用 Private Service Connect,從虛擬私有雲網路內部私下存取受管理服務,請參閱「Private Service Connect」。
Secure Source Manager 是單一租戶服務。除非有多家公司有合約關係,需要使用單一執行個體進行協作,否則單一 Secure Source Manager 執行個體應只包含一個Google Cloud 客戶的使用者。
如果您與多家公司合作,並想與他們共同處理原始碼,建議您為每家公司建立個別的執行個體。
事前準備
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Secure Source Manager API.
-
Install the Google Cloud CLI.
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如要初始化 gcloud CLI,請執行下列指令:
gcloud init
- 安裝
beta
Google Cloud CLI 元件:gcloud components install beta
-
Access Context Manager 管理員角色 (
roles/accesscontextmanager.policyAdmin
) 機構 -
執行個體擁有者角色 (
roles/sercuresourcemanager.instanceOwner
) 執行個體 -
如要建立服務身分和憑證授權單位集區,請執行下列步驟:
CA 服務作業管理員 (
roles/privateca.caManager
) 在機構中 執行下列指令,在專案中為 Secure Source Manager API 建立服務身分:
gcloud beta services identity create \ --service=securesourcemanager.googleapis.com \ --project=PROJECT_ID
其中
PROJECT_ID
是您的專案 ID。輸出結果會與下列內容相似:
Service identity created: service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com
其中
service-PROJECT_NUM@gcp-sa-sourcemanager.iam.gserviceaccount.com
是 Secure Source Manager 服務代理程式,PROJECT_NUM
則是專案編號。建立憑證授權單位 (CA) 集區,並允許以 CSR 為基礎的憑證要求。
建立 CA。您可以視需求建立根或從屬 CA。
- 如要建立根 CA,請按照「建立根 CA」一文的說明操作。
- 如要從 Google Cloud中的父項 CA 建立從屬 CA,請按照「建立從屬 CA」一文中的指示操作。
- 如要透過外部 CA 建立從屬 CA,請按照「透過外部 CA 建立從屬 CA」一節的說明操作。
如要進一步瞭解根 CA 和下層 CA 的差異,請參閱「判斷憑證授權單位設定」。
授予 Secure Source Manager API 服務身分權限,在 CA 集區中要求新憑證:
gcloud privateca pools add-iam-policy-binding CA_POOL_NAME \ --location=CA_LOCATION \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com' \ --role='roles/privateca.certificateRequester' \ --project=CA_PROJECT_ID
更改下列內容:
CA_POOL_NAME
改成您為 CA 集區指定的名稱。CA_LOCATION
,並替換為 CA 集區的區域或可用區。PROJECT_NUMBER
替換為啟用 Secure Source Manager 的專案編號。如要找出專案編號,請按照「識別專案」一文中的操作說明進行。- 將
CA_PROJECT_ID
替換為您建立 CA 集區的專案 ID。
INSTANCE_ID
改成您要為執行個體取的名稱。LOCATION
改為您要建立執行個體的地區。如要查看支援的位置,請參閱「位置」。PROJECT_ID
替換為要在其中建立執行個體的專案名稱。CA_PROJECT
,前提是您使用自己的 CA 憑證。- 如果您使用自己的 CA 憑證,請將
CA_LOCATION
替換為您建立 CA 集區的區域。 CA_POOL_NAME
,並輸入 CA 集區名稱 (僅限使用自有 CA 憑證時)。INSTANCE_ID
改成您要為執行個體取的名稱。LOCATION
改為您要建立執行個體的地區。如要查看支援的位置,請參閱「位置」。PROJECT_ID
替換為要在其中建立執行個體的專案名稱。CA_PROJECT
,前提是您使用自己的 CA 憑證。- 如果您使用自己的 CA 憑證,請將
CA_LOCATION
替換為您建立 CA 集區的區域。 CA_POOL_NAME
,並輸入 CA 集區名稱 (僅限使用自有 CA 憑證時)。OPERATION_NAME
,並將其替換為建立指令回應中的作業名稱。LOCATION
改為您要建立執行個體的地區。如要瞭解支援的位置,請參閱「位置」。如要建立 Private Service Connect 端點,請按照「透過端點存取已發布的服務」一文中的操作說明進行。
如要取得 Secure Source Manager 執行個體 HTTP 和 SSH 服務附件的 URI,請執行下列指令:
gcloud beta source-manager instances describe INSTANCE_ID \ --region=LOCATION
更改下列內容:
- 將
INSTANCE_ID
換成執行個體名稱。如要列出特定區域中的執行個體,可以執行gcloud beta source-manager instances list --region=LOCATION
。 LOCATION
改為執行個體的位置。如要瞭解支援的位置,請參閱「位置」。
輸出結果會與下列內容相似:
createTime: '2023-09-22T18:21:35.729454612Z' hostConfig: api: my-project-012345678901-api.us-central1.p.sourcemanager.dev gitHttp: my-project-012345678901-git.us-central1.p.sourcemanager.dev gitSsh: my-project-012345678901-ssh.us-central1.p.sourcemanager.dev html: my-project-012345678901.us-central1.p.sourcemanager.dev name: projects/my-project/locations/us-central1/instances/my-instance privateConfig: caPool: projects/my-project/locations/us-central1/caPools/my-ca-pool httpServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc isPrivate: true sshServiceAttachment: projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc state: ACTIVE updateTime: '2023-09-22T18:39:53.390563549Z'
其中:
projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/http-psc
是執行個體的 HTTP 服務附件 URI。projects/abc12345d1a1234a0a-tp/regions/us-central1/serviceAttachments/ssh-psc
是執行個體的 SSH 服務連結 URI。
- 將
建立 Private Service Connect 端點後,您需要設定私人 DNS 記錄。如需如何設定私人 DNS 記錄的操作說明,請參閱「手動設定 DNS」。
- 將
hostConfig.html
、hostConfig.api
和hostConfig.gitHttp
的值對應至 HTTP 服務附件的內部 IP 位址。 - 將
hostConfig.ssh
的值對應至 SSH 服務連結的內部 IP 位址。
舉例來說,在先前的輸出範例中,
Google CloudhostConfig.html
的值為my-project-012345678901.us-central1.p.sourcemanager.dev
。- 將
如要下載 CA,請執行下列指令:
gcloud privateca pools get-ca-certs CA_POOL \ --location LOCATION \ --output-file=root-cert.pem \ --project PROJECT
如要對執行個體執行 API 呼叫,請將 CA 憑證傳遞至資料平面 Secure Source Manager API。
舉例來說,下列指令會將 CA 憑證
root-cert.pem
傳遞至 Secure Source Manager API,以便列出位置us-central1
中私人執行個體my-instance
的存放區。curl \ --cacert root-cert.pem \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://my-instance-01234567890-api.us-central1.sourcemanager.dev/v1/projects/01234567890/locations/us-central1/repositories
- 將 Cloud Build 連線至 Private Service Connect Secure Source Manager 執行個體。
- 在 VPC Service Controls 範圍中設定 Secure Source Manager。
必要的角色
如要取得建立 Private Service Connect Secure Source Manager 執行個體所需的權限,請管理員授予下列 IAM 角色:
建立服務身分和憑證授權單位集區
本節說明如何使用自己的 CA 憑證。如要使用 Google代管憑證,您只需執行 gcloud beta source-manager instances create
指令,不必建立服務身分和 CA 集區。
如果您使用自己的 CA 憑證,而非Google管理的憑證,建立私有 Secure Source Manager 執行個體時,必須指定憑證授權單位 (CA) 集區名稱。系統會將簽署執行個體 HTTPS 安全資料傳輸層 (SSL) 憑證的要求傳送至 CA 集區。
建立 Private Service Connect Secure Source Manager 執行個體
gcloud
使用下列指令建立 Private Service Connect 執行個體:
gcloud beta source-manager instances create INSTANCE_ID \
--region=LOCATION \
--project=PROJECT_ID \
--is-private \
--ca-pool=projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME
更改下列內容:
API
使用下列指令建立 Private Service Connect 執行個體:
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances?instance_id=INSTANCE_ID \
-H "Content-Type: application/json" \
-d '{"private_config":{"is_private":true,"ca_pool":"projects/CA_PROJECT/locations/CA_LOCATION/caPools/CA_POOL_NAME"}}'
更改下列內容:
系統會啟動長時間執行的建立執行個體作業。建立執行個體最多需要 60 分鐘。輸出結果會與下列內容相似:
Create request issued for [my-instance].
done: false
metadata:
'@type': type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata
apiVersion: v1
createTime: '2023-02-27T20:57:52.315609549Z'
requestedCancellation: false
target: projects/my-project/locations/us-central1/instances/my-instance
verb: create
name: projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
projects/my-project/locations/us-central1/operations/operation-1234567894561-5ec69948c0f2b-60dd727f-a9b97a2e
OPERATION_NAME
。
請記下 OPERATION_NAME
,您需要使用這個 ID 檢查作業狀態。
如要檢查作業狀態,請執行下列指令:
gcloud beta source-manager operations describe OPERATION_NAME \
--region=LOCATION
更改下列內容:
建立執行個體後,輸出內容會列出 Private Service Connect 端點 httpServiceAttachment
和 sshServiceAttachment
,以及 html
、api
、gitHttp
和 gitSsh
的主機名稱。
存取私人執行個體
如要存取 Private Service Connect 執行個體,您可以根據轉送規則建立 Private Service Connect 端點,或是根據負載平衡器建立 Private Service Connect 後端。
以負載平衡器為基礎的 Private Service Connect 後端更具彈性,可與 Cloud Build 等其他 Google Cloud 服務整合,但較為複雜,且會產生額外費用。
以轉送規則為基礎的 Private Service Connect 端點較簡單,費用也較低,但無法連線至 Cloud Build 或其他Google Cloud 服務。
如要根據負載平衡器為 Private Service Connect 執行個體設定 Private Service Connect 後端,並將其連線至 Cloud Build,請參閱「將 Cloud Build 連線至 Private Service Connect 執行個體」。
根據轉送規則設定 Private Service Connect 端點
搭配使用 CA 與 Secure Source Manager API
Secure Source Manager 包含控制層和資料層。資料平面端點是由 Secure Source Manager 執行個體直接代管,因此您必須連線至執行個體的 API 主機名稱,才能存取這些端點。
如要使用私有 Secure Source Manager 執行個體,您必須使用在「建立服務身分和憑證授權單位集區」一節中建立的 CA。