对 Artifact Registry 的身份验证对于上传和
下载打包的 Go 模块。将 Go 模块打包并上传到
Artifact Registry,gcloud CLI 工具会在
按以下顺序设置身份验证,除非
--json_key
标志,以使用服务账号密钥。
应用默认凭据 (ADC) 是一种按以下顺序查找凭据的策略:
在
GOOGLE_APPLICATION_CREDENTIALS
环境变量中定义的凭据。Compute Engine、Google Kubernetes Engine、Cloud Run、App Engine 或 Cloud Functions 的默认服务账号提供的凭据。
Google Cloud CLI 提供的凭据,包括来自 命令
gcloud auth application-default login
。
GOOGLE_APPLICATION_CREDENTIALS
变量可让账号
身份验证,从而简化问题排查过程。如果
您未使用该变量,请确认 ADC 可能使用的所有账号
所需的权限。例如,
默认服务账号,用于 Compute Engine 虚拟机、Google Kubernetes Engine 节点
Cloud Run 修订版本拥有对代码库的只读权限。如果您
打算使用默认服务账号从这些环境上传
您必须修改权限。
从以下位置下载打包的 Go 模块以用作依赖项时 Artifact Registry,Go 二进制文件使用 netrc 文件中的凭据 对 Artifact Registry 进行身份验证简化身份验证 使用 Go 凭据帮助程序来刷新 netrc 文件,用于向 Artifact Registry 进行身份验证。
netrc 文件的位置可以使用 netrc 环境变量进行设置。
如果未设置 NETRC
变量,则 go
命令将读取
$HOME/.netrc
(在类似 UNIX 的平台上)或 %USERPROFILE%\_netrc
(在 Windows 上)。
使用 Artifact Registry 时, 指定 netrc 文件中的凭据:
- 短期有效凭据(推荐)
- 使用 Artifact Registry Go 凭据帮助工具 使用 创建 Artifact Registry,或者手动添加 Artifact Registry 添加到 netrc 文件中。
- 使用服务账号密钥
- 如果您无法在自己的环境中将凭据用于以下用途时,请使用此选项 身份验证。您可以使用 Artifact Registry Go 凭据帮助程序工具,将 将未加密的服务账号密钥添加到 netrc 文件中,或手动将其添加到 文件。 。
准备工作
- 安装 前往 1.15 或更高版本。
安装 package-go-module gcloud CLI 插件:
gcloud components install package-go-module
设置 Go 环境
指示 Go 从 Artifact Registry(公共 Go)下载模块 模块代理,然后是 source,顺序如下:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
替换以下内容:
使用公共校验和数据库排除您的模块:
export GONOSUMDB=MODULE_PATH_REGEX
将 MODULE_PATH_REGEX 替换为您的模块路径或常规的 表达式。
例如,如需使用以下代码将模块
example.com/foo
从检查中排除: 公共校验和数据库,请运行以下命令:export GONOSUMDB=example.com/foo
以下命令会排除模块路径以 使用公共校验和数据库检查
example.com
:export GONOSUMDB=example.com/*
将 Artifact Registry 凭据添加到 netrc 文件
运行以下命令,将您的 Artifact Registry 凭据添加到 带有 Go 凭据帮助程序的 netrc 文件:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
其中:
- LOCATION 是单区域级或多区域级 位置 创建 Deployment 清单要添加多个地理位置,请以逗号分隔 分隔列表。
PATH_TO_JSON_KEY(可选)。服务账号的路径 键。
Go 凭据帮助程序会将身份验证设置添加到您的 netrc 文件中 复制到 Artifact Registry如果您传递
--json_key
标志,则系统会添加相应键 添加到 netrc 文件,以进行密码身份验证。
如果您使用短期有效凭据进行身份验证 到 Artifact Registry,您需要运行以下命令来刷新 OAuth 令牌 将模块用作依赖项之前,先使用以下命令:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
使用服务账号密钥进行身份验证
如果您需要使用用户名和密码进行身份验证,请使用此方法。
服务账号密钥是长期有效的凭据。请使用以下准则来限制对代码库的访问:
- 请考虑使用专用服务账号与代码库进行交互。
- 授予服务账号所需的最低 Artifact Registry 角色。例如,将 Artifact Registry Reader 分配给仅用于下载工件的服务账号。
- 如果您组织中的群组需要不同级层的访问权限来访问特定代码库,请在代码库级层而不是项目级层授予访问权限。
- 按照管理凭据的最佳做法操作。
如需配置身份验证,请执行以下操作:
创建一个服务账号代表您的应用执行操作,或选择一个现有服务账号用于进行自动化。
您需要服务账号密钥文件所在的位置,才能使用 Artifact Registry 设置身份验证。对于现有账号,您可以在“服务账号”页面上查看密钥和创建新密钥。
授予适当的 为服务账号授予 Artifact Registry 角色,以提供代码库 访问权限。
运行以下命令,将您的服务账号凭据添加到 带有 Go 凭据帮助程序的 netrc 文件:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEY
其中:
您还可以将服务账号密钥手动添加到 netrc 文件中 格式如下:
machine LOCATION.pkg.dev
login json_key_base64
password KEY
替换以下内容:
- 将 LOCATION 替换为单区域级或多区域级 位置 创建 Deployment 清单
- 将 KEY 替换为您的服务账号密钥文件中的 base64 编码密钥。
将 Go 凭据帮助程序添加到 GONOPROXY
在使用 Go 凭据帮助程序之前,您需要将其添加到 GONOPROXY
列表中
强制使用 Go 直接从 GitHub 下载该应用。如果你还学习了
想要直接从来源下载的文件,可以用逗号分隔
如以下示例中所示:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
其中 MODULE_PATH1 和 MODULE_PATH2 是要下载的模块的模块路径 。
将 Go 凭据帮助程序添加到您的 GONOPROXY
列表并运行它以进行设置
您的凭据:
将 Go 凭据帮助程序添加到您的
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
运行以下命令,将您的 Artifact Registry 凭据添加到 netrc 文件与 Go 模块包工具结合使用:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
其中 LOCATION 是单区域级或多区域级 位置 创建 Deployment 清单要添加多个地理位置,请以 逗号分隔列表。
Go 凭据帮助程序会将身份验证设置添加到您的 netrc 文件中 复制到 Artifact Registry如果您传递
--json_key
标志,则系统会将键添加到 您的 netrc 文件,用于密码身份验证。