連接器存放區會做為上游來源的 Proxy,確保所有要求都由上游來源處理。與遠端存放區不同,連接器存放區不會快取構件。因此,如果您需要完整稽核上游來源,或必須遵守禁止構件快取的第三方政策,連接器存放區就相當實用。
本頁說明如何建立 Artifact Registry 連接器存放區。
支援的連接器格式
Artifact Registry 僅支援 Docker 格式的連接器存放區。
事前準備
- 啟用 Artifact Registry API,並安裝 Google Cloud CLI。
- 選用:設定 gcloud CLI 指令的預設值。
- 如要使用客戶自行管理的加密金鑰 (CMEK) 加密存放區內容,請在 Cloud KMS 中建立並啟用存放區的金鑰。
啟用 Secret Manager API。
gcloud services enable secretmanager.googleapis.com \ --project=PROJECT_ID如果 Artifact Registry 位於 VPC Service Controls 服務範圍內,請啟用 Access Context Manager API (如果尚未啟用)。
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
必要的角色
如要取得管理存放區所需的權限,請要求管理員授予您下列 IAM 角色:
-
建立連接器存放區,並授予個別存放區的存取權:
專案的 Artifact Registry 管理員 (
roles/artifactregistry.admin) -
將上游存放區憑證儲存在密鑰版本中:
專案的 Secret Manager 管理員 (
roles/secretmanager.admin) -
授予存取權給 VPC Service Controls 服務範圍外的上游來源:
Access Context Manager 編輯者 (
roles/accesscontextmanager.policyEditor) 在套用存取權政策的資源所屬機構中
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立連接器存放區
建立連接器存放區時,您必須設定下列設定,且存放區建立後就無法變更:
- 構件格式,只能是 Docker。
- 存放區模式設為連接器。
- 連接器存放區上游來源。
- 存放區位置。
- 使用 Google-owned and Google-managed encryption keys 或客戶自行管理的加密金鑰進行加密。Artifact Registry 預設會使用Google-owned and Google-managed encryption keys 。
Artifact Registry 會強制執行組織政策限制,規定必須使用 CMEK 加密資源,或限制可用於 CMEK 保護的 Cloud KMS 金鑰。
主控台
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
點選「Create Repository」。
指定存放區名稱。專案中每個存放區位置的存放區名稱不得重複。
在「格式」部分,選取「Docker」。
在「Repository mode」(存放區模式) 部分,選取「Connector」(連接器)。
在「連接器存放區來源」部分,選取下列其中一個選項:
- Docker Hub:連接器會使用 Docker Hub (
https://docker.io) 做為上游存放區。 - 自訂:連接器會為上游存放區使用不同的 Docker 上游網址。
- Docker Hub:連接器會使用 Docker Hub (
如果選取「自訂」,請在「自訂存放區」欄位中輸入完整的存放區網址。存放區建立後即無法變更網址。
如需常見上游網址的範例,請參閱「自訂上游」。
在「Connector repository authentication mode」(連接器存放區驗證模式) 部分,輸入下列資訊:
- 上游存放區的使用者名稱。
- 在 Secret Manager 中儲存憑證的密鑰。
建立存放區後,您可以編輯這些值。
在「位置類型」部分,選擇存放區的位置:
選擇位置類型:區域或多區域。地點清單會根據您的選取項目變更。
在「Region」(區域) 或「Multi-region」(多區域) 清單中,選取位置。
如要瞭解位置類型和支援的位置,請參閱「存放區位置」一文。
為存放區新增說明。說明可協助您瞭解存放區的用途,以及其中包含的構件類型。
請勿加入私密資料,因為存放區說明不會加密。
如要使用標籤整理存放區,請按一下「新增標籤」,然後輸入標籤的鍵/值組合。建立存放區後,您可以新增、編輯或移除標籤。
在「Encryption」(加密) 區段中,選擇存放庫的加密機制。
- Google-managed encryption key - Encrypt repository content with a Google-owned and Google-managed encryption key.
- 客戶管理的金鑰 - 使用您透過 Cloud Key Management Service 控制的金鑰,加密存放區內容。如需金鑰設定操作說明,請參閱「為存放區設定 CMEK」。
在「Artifact Analysis」部分,選擇安全漏洞掃描設定:
已啟用:允許掃描這個存放區。您必須在專案中啟用 Container Scanning API。
啟用 Container Scanning API 後,系統會立即開始計費。在專案中啟用 Container Scanning API 後,所有新舊存放區都會啟用安全漏洞掃描功能。將映像檔推送至 Artifact Registry 時,Artifact Analysis 會自動掃描。
已停用:禁止掃描這個存放區。如果專案已啟用 Container Scanning API,系統會繼續掃描其他存放區,但會排除這個存放區。
如要進一步瞭解安全漏洞掃描選項,請參閱「啟用及停用自動掃描」。
點選「建立」。
Artifact Registry 會建立存放區,並將其新增至存放區清單。
gcloud CLI
如要建立連接器存放區,請執行指令來建立 Docker 連接器存放區或自訂連接器存放區。
gcloud artifacts repositories create CONNECTOR-REPOSITORY-NAME \
--project=PROJECT_ID \
--location=LOCATION \
--description="DESCRIPTION" \
--repository-format=docker \
--mode=connector-repository \
--remote-docker-repo="UPSTREAM-NAME" \
--remote-username="USERNAME" \
--remote-password-secret-version="PASSWORD" \
您必須使用 --mode=connector-repository 旗標,將存放區定義為連接器存放區。--repository-format 必須為 docker。
更改下列內容:
CONNECTOR-REPOSITORY-NAME:存放區的名稱。專案中每個存放區位置的存放區名稱不得重複。PROJECT_ID:專案 ID。如果省略這個旗標,系統會使用目前或預設專案。LOCATION:存放區的區域或多區域位置。如果您設定 default,可以省略這個旗標。如要查看支援的位置清單,請執行gcloud artifacts locations list指令。DESCRIPTION:選用。連接器存放區的說明。請勿輸入私密資料,因為存放區說明不會經過加密。UPSTREAM-NAME:上游預設名稱或上游存放區的使用者定義網址。USERNAME:選用。用於向上游存放區驗證的使用者名稱。PASSWORD:選用。包含上游存放區密碼的密鑰版本。
舉例來說,下列指令會建立名為 my-connector-repo 的連接器存放區,將上游的 Jfrog 存放區連結至 Google Cloud 專案 my-project。上游存放區的完整網址為 https://my-account.jfrog.io/scoped-repo。
gcloud artifacts repositories create my-connector-repo \
--project=my-project \
--location=us-east1 \
--repository-format=docker \
--mode=connector-repository \
--remote-docker-repo=https://my-account.jfrog.io/scoped-repo \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1
如要進一步瞭解如何向上游存放區驗證,請參閱「向來源驗證連接器存放區」。
Terraform
使用 google_artifact_registry_repository 資源建立存放區。
必須使用 terraform-provider-google 以上版本。5.0.0
如果您是第一次將 Terraform 與 Google Cloud搭配使用,請參閱 HashiCorp 網站上的「 Get Started - Google Cloud」頁面。
下列範例會使用 Terra 資源名稱 my-repo 定義供應商和連接器存放區。
```hcl
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "NAME" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "docker"
mode = "REMOTE_REPOSITORY"
# Setting mode="REMOTE_REPOSITORY" and no_cache() together configures the repository as a connector-type repository.
remote_repository_config {
description = "CONFIG_DESCRIPTION"
docker_repository {
public_repository = "DOCKER_HUB"
}
no_cache {}
}
}
```
Replace the following:
* `PROJECT-ID`: the Google Cloud project ID.
* `NAME`: the name of your repository.
* `LOCATION`: the repository location.
* `REPOSITORY_ID`: the repository ID.
* `DESCRIPTION`: optional. A description for the repository.
Do not include sensitive data. Repository descriptions are
not encrypted.
* `KEY`: the name of the Cloud Key Management Service key, if you are using
[customer-managed encryption keys][cmek] (CMEK) for encryption. Omit
this argument to use the default setting, Google-managed encryption
keys.
* `CONFIG_DESCRIPTION`: optional. A description of the remote
source.
建立存放區後,請執行下列操作:
編輯存放區說明
您可以透過 Google Cloud 控制台或 gcloud CLI 變更存放區說明。
控制台
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
在存放區清單中選取存放區,然後按一下「Edit Repository」(編輯存放區)。
編輯存放區說明,然後按一下「儲存」。
gcloud
如要更新存放區說明,請執行下列指令:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT \
--location=LOCATION \
--description="DESCRIPTION"
更改下列內容:
存取 service perimeter 中的上游來源
VPC Service Controls 服務範圍內的服務,存取範圍外的資源時會受到限制。
您可以允許或拒絕存取指定Google Cloud 專案和位置的上游來源。
根據預設,如果您未明確授予存取權,Artifact Registry 會拒絕存取上游來源。
如果是 Artifact Registry,則必須具備 Artifact Registry 管理員 (roles/artifactregistry.admin) 角色。
查看上游來源的設定
如要查看特定專案和位置組合的設定,請執行下列指令:
gcloud artifacts vpcsc-config describe \
--project=PROJECT_ID \
--location=LOCATION
舉例來說,使用下列指令可查看專案 my-project 中 us-east1 的連接器存放區設定:
gcloud artifacts vpcsc-config describe \
--project=my-project \
--location=us-east1
允許存取上游來源
如要在特定位置允許存取上游來源,請執行下列指令:
gcloud artifacts vpcsc-config allow \
--project=PROJECT_ID \
--location=LOCATION
舉例來說,使用下列指令,允許專案 my-project 中 us-east1 的所有連接器存放區存取 perimeter 外部的上游來源:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
拒絕存取上游來源
如要在特定位置拒絕存取上游來源,請執行下列指令:
gcloud artifacts vpcsc-config deny \
--project=PROJECT_ID \
--location=LOCATION
舉例來說,使用下列指令,封鎖專案 my-project 中 us-west1 內所有連接器存放區的周邊以外上游來源存取權:
gcloud artifacts vpcsc-config deny \
--project=my-project \
--location=us-west1
後續步驟
- 進一步瞭解 Artifact Registry 連接器存放區。
- 向上游來源驗證連接器存放區。