为 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 成员,例如用户、群组或服务账号。
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
替换以下内容:
REPOSITORY:您的 Artifact Registry 连接器代码库的名称。PROJECT_ID:您的 Cloud de Confiance 项目 ID。LOCATION:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行命令gcloud artifacts locations list。USERNAME:您的上游来源用户名。SECRET_PROJECT_ID:您在其中创建 Secret 的项目的 ID。SECRET_ID:您为 Secret 指定的名称。SECRET_VERSION:您在其中保存访问令牌的 Secret 版本。
当连接器代码库下次向上游来源发送制品请求时,系统会使用您的凭据。