为 Artifact Registry 远程代码库配置上游身份验证后,您可以使用自己的账号凭据从外部注册表拉取和缓存软件包。您可以将个人访问令牌存储在 Secret Manager 中,并将其附加到远程仓库以用于上游来源。
如需完成这些步骤,您需要一个 Artifact Registry 远程仓库和一个具有外部来源的账号。如需详细了解远程仓库,请参阅远程仓库概览。
所需的角色
如需获得为远程仓库配置对上游来源的身份验证所需的权限,请让管理员向您授予项目的以下 IAM 角色:
- Artifact Registry Admin (
roles/artifactregistry.admin) - Secret Manager Admin (
roles/secretmanager.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
预设的上游来源
如需为预设的上游来源配置身份验证,请参阅以下每个上游的相应指南:
用户定义的上游来源
如需为用户定义的上游来源配置身份验证,请完成以下步骤。
将访问令牌保存在 Secret 中
授予 Artifact Registry 服务账号对您的 Secret 的访问权限
Artifact Registry 服务代理在与 Cloud de Confiance 服务交互时会代表 Artifact Registry 执行操作。如需允许服务代理使用 Secret Manager 中存储的 Secret,您必须向服务代理授予查看 Secret 版本的权限。
服务代理标识符为:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.s3ns-system.iam.gserviceaccount.com
PROJECT-NUMBER 是运行 Artifact Registry 的 Cloud de Confiance 项目的项目编号。
如需向 Artifact Registry 服务代理授予 Secret Manager Secret Accessor 角色,请执行以下操作:
控制台
-
前往 Cloud de Confiance 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击 Secret 名称旁边的复选框。
-
如果面板尚未打开,请点击显示信息面板以打开面板。
-
在信息面板中,点击添加主账号。
-
在新主账号文本区域中,输入要添加的成员的电子邮件地址。
-
在选择角色下拉列表中,选择 Secret Manager,然后选择 Secret Manager Secret Accessor。
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
其中,member 是 IAM 成员,例如用户、群组或服务账号。
C#
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Go
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Java
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Node.js
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Python
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Ruby
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
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 的访问权限。
向远程仓库添加上游凭据
如需使用上游来源凭据更新远程仓库,请执行以下操作:
控制台
在 Cloud de Confiance 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在远程仓库身份验证模式部分中,更新或添加您的上游来源用户名和包含访问令牌的 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
替换以下内容:
下次远程仓库向上游来源发送制品请求时,系统会使用您的凭据。
后续步骤
- 创建清理政策以清理不需要的制品。