本文档介绍了如何配置对 Maven Central 上游的身份验证。 Artifact Registry 远程代码库
本文档假定您已创建 Artifact Registry Maven 远程仓库以及 Maven Central 。
如需详细了解远程仓库,请参阅 远程仓库概览。
所需的角色
如需获取为远程仓库配置 Maven Central 身份验证所需的权限, 请让管理员向您授予 项目的以下 IAM 角色:
-
Artifact Registry 管理员 (
roles/artifactregistry.admin
) -
Secret Manager Admin (
roles/secretmanager.admin
)
如需详细了解如何授予角色,请参阅管理访问权限。
创建 Maven Central 个人访问令牌
- 登录 Maven Central。
创建access-token。
在以下情况下,使用个人访问令牌的用户代码作为用户名: 将凭据添加到 Artifact Registry如需详细了解 在 Maven Central 中管理用户令牌,请参阅 使用用户令牌进行安全设置。
将您的个人访问令牌保存在 Secret 版本中
向 Artifact Registry 服务账号授予对 Secret 的访问权限
在与 Artifact Registry 进行交互时,Artifact Registry 服务代理会代表 Artifact Registry 执行操作 Google Cloud 服务。允许服务代理使用 Secret 存储在 Secret Manager 中,则必须向服务代理授予权限 查看您的密钥版本。
服务代理标识符为:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER 是 项目编号 运行 Artifact Registry 的 Google Cloud 项目的 ID。
向 Artifact Registry 服务代理授予 Secret Manager Secret Accessor 角色:
控制台
-
转到 Google Cloud 控制台中的 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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 的访问权限。
将 Maven Central 凭据添加到远程仓库
如需使用 Maven Central 凭据更新远程代码库,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,选择该代码库,然后点击 修改代码库。
在远程仓库身份验证模式部分中,更新或添加 与您的个人访问令牌相关联的 Maven Central 用户代码, 您的用户名以及包含 Maven Central 的 Secret 版本 访问令牌。
gcloud CLI
要使用 Maven Central 凭据更新远程代码库,请运行 以下命令:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USER_CODE \
--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
。 USER_CODE
:与您的 Maven 关联的用户代码 中央访问令牌。如需详细了解如何在 Maven 中管理用户令牌 请参阅使用用户令牌进行安全设置。- 将
SECRET_PROJECT_ID
替换为项目的 ID 并在其中创建密钥 - 将
SECRET_ID
替换为您为 Secret 指定的名称。 - 将
SECRET_VERSION
替换为您的已保存的密钥版本 将您的 Maven Central 访问令牌放置到该位置。 秒
远程代码库下次发送请求时,系统会使用您的凭据 。