0 authentication curl google-cloud-storage google-cloud-platform
好的,我的开发人员和编码人员。上周我一直在尝试使用 Google (GCP) 云存储对象来解决这个问题。这是我的目标。
我已经尝试了 Google 文档中提到的 OAuth2.0 设置,但每次我想设置 OAuth2.0 密钥时,我都没有选择“离线”访问。最重要的是,它需要您输入将访问身份验证请求的源 URL。
此外,谷歌云存储不支持 key= 像他们的其他一些服务一样。所以这里我有一个用于我的项目的 API KEY 以及一个用于我的服务用户的 OAuth JSON 文件,但它们没有用。
我可以得到一个 curl 命令来处理临时 OAuth 不记名密钥,但我需要一个长期的解决方案。
RUN curl -X GET \
-H "Authorization: Bearer ya29.GlsoB-ck37IIrXkvYVZLIr3u_oGB8e60UyUgiP74l4UZ4UkT2aki2TI1ZtROKs6GKB6ZMeYSZWRTjoHQSMA1R0Q9wW9ZSP003MsAnFSVx5FkRd9-XhCu4MIWYTHX" \
-o "/home/shmac/test.tar.gz" \
"https://www.googleapis.com/storage/v1/b/mybucket/o/my.tar.gz?alt=media"
Run Code Online (Sandbox Code Playgroud)
允许我从任何位置下载 GCP 存储桶对象的长期密钥/ID/秘密。
该解决方案需要是轻量级的,因为它将用于在 docker 镜像中下载镜像,因此需要 curl。
这是一个模糊的要求。什么是轻量级?没有外部库,所有用汇编语言编写的东西都必须适合 1 KB 等。
GCP 存储桶和对象需要安全且不公开。
这个正常要求。除了一些例外(网站的静态文件存储等),您希望您的存储桶是私有的。
我需要一个“长期”存在的票证/密钥/client_ID。
我的建议是停止思考“长期关键”。安全的趋势是实施短期密钥。在 Google Cloud Storage 中,7 天被认为是长期的。3600 秒(一小时)是 Google Cloud 中几乎所有地方的标准。
对于 Google Cloud Storage,您有多种选择。您没有指定环境,因此我将包括用户凭据、服务帐户和基于预签名 url 的访问。
用户凭证
您可以使用用户凭据(例如 username@gmail.com)进行身份验证并保存刷新令牌。然后当需要访问令牌时,您可以从刷新令牌生成一个。在我关于学习 Go 语言的网站文章中,我在第 8 天编写了一个程序,该程序实现了 Google OAuth,保存了必要的凭据并根据需要创建了访问令牌和 ID 令牌,而无需进一步“登录”。源代码中的注释应该可以帮助您了解这是如何完成的。https://www.jhanley.com/google-cloud-and-go-my-journey-to-learn-a-new-language-in-30-days/#day_08
如果您需要使用用户凭据,则可以选择此选项。这种技术更复杂,需要保护机密文件,但会为您提供可刷新的长期令牌。
服务帐户凭据
服务帐户 JSON 密钥文件是服务到服务身份验证和授权的标准方法。使用这些密钥,生成有效期为一小时的访问令牌。当它们到期时,会创建新的。最大时间为 3600 秒。
如果您使用受您控制的程序以编程方式访问 Cloud Storage(服务帐户 JSON 文件必须受到保护),则可以选择此选项。
预签名 URL
这是提供对私有 Google Cloud Storage 对象的访问的标准方法。此方法需要 URL 并生成具有到期时间的签名,以便可以在定义的时间段内访问对象。您的要求之一(这是不切实际的)是您不想使用源 URL。最长的时间是 7 天。
如果您需要向第三方提供访问您的云存储对象的权限,则可以选择此选项。
基于 IAM 的访问
此方法不使用访问令牌,而是使用身份令牌。权限分配给 Cloud Storage 存储分区和对象,而不是分配给 IAM 成员账户。这种方法需要对身份在 Google Cloud Storage 中的工作方式有深入的了解,并且是 Google 安全的未来方向 - 这意味着许多服务的访问将在服务/对象的基础上进行控制,而不是通过授予对整个服务的广泛访问权限的角色一个专案。我在我关于基于身份的访问控制的文章中谈到了这一点
概括
您尚未明确定义将访问 Cloud Storage 的内容、机密的存储方式、机密是否需要防止用户访问(公共 URL 访问)等。选择取决于多种因素。
如果您阅读了我网站上的最新文章,我将讨论一些有关基于身份的访问控制的高级技术。这些功能开始出现在许多 Google 服务的 Beta 级别命令中。这包括 Cloud Scheduler、Cloud Pub/Sub、Cloud Functions、Cloud Run、Cloud KMS 等等。Cloud Storage 支持完全不需要权限的基于身份的访问 - 身份用于控制访问。
归档时间: |
|
查看次数: |
702 次 |
最近记录: |