通过访问受限 URL 访问 Google Cloud 上的私有 Apt 存储库

通过访问受限 URL 访问 Google Cloud 上的私有 Apt 存储库

我在 Google Cloud 上创建了一个 Apt 存储库,用于托管 Debian 软件包。目标是使用访问令牌/私钥或类似的东西从互联网进行私人访问。访问存储库的机器是与 Google Cloud 无关的标准机器,它们没有 gcloud 和 gcloud 凭据。访问存储库的选项有哪些?或者,如果这不起作用(不以手动方式执行),如何在 Google Cloud 上托管私有 Apt 存储库?

答案1

通过使用访问令牌或私钥限制访问,您可以通过几种不同的方法获得对 Google Cloud 上 Apt 存储库的私人访问权限,而无需在设备上使用 gcloud 凭据。

取决于您的需求和要求。考虑您的安全需求、预算和所需的控制级别等因素,并采取以下任何一种方法:

  1. 使用带有签名 URL 的云存储:您的 Debian 软件包应上传到云存储桶。授予某个服务帐户对该存储桶的读取权限并创建签名 URL包含存储桶中对象的到期日期。将这些经过验证的 URL 发送到需要存储库访问的机器。

  2. 将 Artifactory 存储库与 IAM 身份验证结合使用:使用托管服务 Google Artifact Registry 存储包和容器镜像。确保您的 Debian 包存储在私有存储库中。要提供对特定服务帐户的访问权限,请配置访问控制使用 IAM 策略。机器可以使用这些凭证来访问存储库。

  3. 使用云函数: 创建一个云功能它可作为存储在云存储桶中的软件包的安全入口点。该函数可以使用令牌和证书来管理身份验证。如果身份验证完成,该函数将为请求的软件包提供临时下载 URL。

编辑1:

虽然它是管理私有包的不错选择,但Artifact 注册表不直接与 Debian 系统上的标准 apt 工具集成。对于您的私有存储库,您仍然可以使用 Artifact Registry,而在客户端计算机上,您可以使用特定工具来访问包。

根据官方 GCP 文件管理 Debian 软件包

“Artifact Registry 支持您使用 Apt 管理的 Debian 软件包”。对于您的 Debian 软件包,您必须首先在 Artifact Registry 中建立一个私有存储库。

将所需的 IAM 权限分配给将用于身份验证的服务账户(例如,roles/artifact registry.reader)。

在客户端计算机上安装与 Artifact Registry 兼容的 Docker 工具或类似工具。请参阅此官方 GCP 文档使用 Docker 推送和拉取容器镜像了解更多信息。

编辑2

没错,上一个答案使用 docker 进行身份验证,但这并不直接相关。对于这个问题,我将为您提供一种相关方法,即利用私有 Artifact Registry 存储库和 Curl 作为工具进行 IAM 身份验证。

设置 IAM 身份验证:

转到 Google Cloud Console > IAM Admin-Service Accounts。单击它并创建一个新的服务帐户,以便您可以访问存储库。

分配角色,如工件注册表等。然后由读者读取服务帐户。这将授予您对自己的工件注册表存储库的读取权限。

您需要下载此服务帐户的 JSON Key 文件,因为它包含身份验证凭据。

接下来,对上一步中获得的 JSON 密钥文件的内容进行 base64 编码。您可以使用 base64 或任何其他您熟悉的工具进行此编码。授权标头需要此编码文本。

编码的 _key = $(base64 密钥 _file.json)

现在,需要为 curl 命令添加一个额外的权限标头,即授权:bearer<encoded_key>

添加授权标头以及编码密钥后,可以使用 curl 从您的 Artifact 注册表存储库下载包。

按照上述步骤,您只需使用 curl 和服务帐户凭据即可从机器上的私有 Artifact 注册表存储库下载软件包,而无需 gcloud 或 docker。

参考此文档JFrog 提供了有关使用 cURL 和访问令牌的更多信息

相关内容