对连接器仓库进行身份验证,以连接到上游来源

为 Artifact Registry 连接器制品库配置上游身份验证后,您可以使用自己的账号凭据连接到私有外部注册中心。您可以将个人访问令牌存储在 Secret Manager 中,并将其附加到连接器代码库,以对向上游来源发出的请求进行身份验证。

如需完成这些步骤,您需要一个 Artifact Registry 连接器仓库和一个具有外部来源的账号。如需详细了解连接器仓库,请参阅连接器仓库概览。

所需的角色

如需获得为连接器代码库配置上游来源的身份验证所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

用户定义的上游来源

如需为用户定义的上游来源配置身份验证,请完成以下步骤。

将访问令牌保存在 Secret 中

  1. 在私有注册表中创建访问令牌。
  2. 在 Secret Manager 中创建 Secret。
  3. 将您的个人访问令牌保存为 Secret 版本。

授予 Artifact Registry 服务账号对您的 Secret 的访问权限

Artifact Registry 服务代理在与 Google Cloud 服务交互时会代表 Artifact Registry 执行操作。如需允许服务代理使用 Secret Manager 中存储的 Secret,您必须向服务代理授予查看 Secret 版本的权限。

服务代理标识符为:

service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

PROJECT-NUMBER 是运行 Artifact Registry 的 Google Cloud 项目的项目编号。

如需向 Artifact Registry 服务代理授予 Secret Manager Secret Accessor 角色,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的 Secret Manager 页面。

    转到 Secret Manager 页面

  2. 在 Secret Manager 页面上,点击 Secret 名称旁边的复选框。

  3. 如果面板尚未打开,请点击显示信息面板以打开面板。

  4. 在信息面板中,点击添加主账号。

  5. 在新主账号文本区域中,输入要添加的成员的电子邮件地址。

  6. 在选择角色下拉列表中,选择 Secret Manager,然后选择 Secret Manager Secret Accessor。

gcloud

$ gcloud secrets add-iam-policy-binding secret-id \
    --member="member" \
    --role="roles/secretmanager.secretAccessor"

其中,member 是 IAM 成员,例如用户、群组或服务账号。

API

注意:与其他示例不同,它将替换整个 IAM 政策。

$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"

如需详细了解如何授予或撤消对 Secret 的访问权限,请参阅管理对 Secret 的访问权限。

向连接器代码库添加上游凭据

如需使用上游来源凭据更新连接器仓库,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中打开代码库页面。

    打开“代码库”页面

  2. 在代码库列表中,选择相应代码库,然后点击修改代码库。

  3. 在连接器仓库身份验证模式部分中,更新或添加您的上游来源用户名以及包含访问令牌的 Secret。

gcloud CLI

如需使用上游来源凭据更新连接器代码库,请运行以下命令:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --remote-username=USERNAME \
    --remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION

替换以下内容:

  • REPOSITORY:您的 Artifact Registry 连接器代码库的名称。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令 gcloud artifacts locations list。
  • USERNAME:您的上游来源用户名。
  • SECRET_PROJECT_ID:您在其中创建 Secret 的项目的 ID。
  • SECRET_ID:您为 Secret 指定的名称。
  • SECRET_VERSION:您在其中保存访问令牌的 Secret 版本。

当连接器代码库下次向上游来源发送制品请求时,系统会使用您的凭据。