当前位置: 首页 > 知识库问答 >
问题:

谷歌云服务帐户联合访问AWS服务

蓬森
2023-03-14

我正在调查AWS/Google云基础架构系统是否可以混合,我的要求之一是从一个系统到另一个系统的安全和简单的身份验证。目前,我需要从一个Google Cloud VM实例连接到一个受限的AWS S3 bucket。

我的问题通常是:有没有办法做到这一点,什么是最好的html" target="_blank">方法。我相信每个人都希望有机会使用多个云提供商为他们的基础设施提供高安全性、易用性和维护性。

经过一些研究,我发现唯一可能的方法是通过Web身份联邦,这根本不是为这个目的而设计的。然后,在探索了Google方面的选项之后,我发现服务帐户看起来可以用来进行OAuth2身份验证,并提供一个令牌,以便通过带有AssemerOleWithWebIdentity动作的STS客户机访问AWS。

require 'aws-sdk'
require 'googleauth'

scopes =  ['https://www.googleapis.com/auth/cloud-platform', 'https://www.googleapis.com/auth/compute']
authorization = Google::Auth.get_application_default(scopes)
token = authorization.fetch_access_token!['access_token']
bucket_name  = 'xxx'
arn_role     = 'arn:aws:iam::xxx:role/xxx'
session_name = 'GoogleApps'
client = Aws::STS::Client.new(region: 'us_east-1')
resp = client.assume_role_with_web_identity({
  role_arn: arn_role,
  role_session_name: session_name,
  web_identity_token: token
})
The ID Token provided is not a valid JWT. (You may see this error if you sent an Access Token) (Aws::STS::Errors::InvalidIdentityToken)

为了获得id_token,我试图找到一种使用服务帐户进行身份验证的方法,就像我在执行正常的Google登录一样,但没有任何成功。

我还有其他几个选项来执行相同的任务,但它们不如使用特定类型的联邦那么优雅:

  • 为此创建一个IAM帐户,并使用像HashiCorp的保险库这样的安全系统分发安全凭据。
  • 在AWS中使用一个中介器“jump”实例,该实例可以访问必要的资源,并且可以从Google Cloud中VM的特定静态外部IP SSH。
  • 使用一个生成外部文件的简单系统来创建访问令牌,并使用这种类型的联邦。

暂时还没有答案

 类似资料:
  • 我想使用gsutil和服务帐户在命令行上访问Goolge播放报告。有一个云存储URI,格式为gs://bucket\u name,我可以用我的用户帐户列出和下载报告,但不能用我创建的服务帐户。错误总是相同的: 我已向服务帐户授予了所有必需的权限,因此我不明白为什么用户帐户可以使用,而服务帐户却无法使用。 所以如果你知道如何帮助我,我会非常感谢你。

  • 我正在尝试访问谷歌联系人API,但我的尝试已经失败了。从其他(网络)语言,我习惯于API控制台和公共API密钥(授权)。 这样,我就不能刷新令牌,也不能确定是否将公钥用作accesstoken...相反,我尝试了一个服务帐户: 这里我的例外: 谢谢提示!

  • 我正在使用一个服务帐户访问我们的域名用户的谷歌驱动器,这工作像一个魅力!然而,我现在正在尝试使用相同的服务帐户获得用户的activity在谷歌驱动器。 我已授予服务帐户API访问https://www.googleapis.com/auth/activity和https://www.googleapis.com/auth/drive的权限 并启用API! 然而我总是得到错误403,禁止! 可能需要

  • 我正在使用Google. net客户端库来访问谷歌日历应用编程接口。我需要研发创建日历事件并将其发布给用户的应用程序。 这是一个服务器到服务器的应用程序,所以我创建了一个服务帐户,并用它来发送邀请。当从web浏览器提交响应时,创建的与会者对这些事件的响应将被更新,但当来自outlook等任何邮件客户端的响应时,响应将以电子邮件的形式发送给服务帐户电子邮件id(这是一个虚拟电子邮件id)。如何将有效

  • 我想使用谷歌驱动器作为一个网站的准CMS工作,我正在使内容所有者可以编辑他们的内容使用谷歌驱动器。我希望使用一个可以访问Google Drive的特定用户帐户(在写这篇文章时,服务帐户不能直接访问Google Drive),并且能够与内容所有者共享文档。 在阅读了API和教程之后,我在委托中找到了答案:https://developers.google.com/drive/development

  • 我想使用Google服务帐户JWT令牌获取Azure服务主体(SP)的临时凭据。这是从GKE工作负载调用Azure API所必需的,而无需在GKE中存储长期SP凭据。 这样的联盟对GCP来说可能吗- [1]https://cloud.google.com/iam/docs/workload-identity-federation [2] https://docs.aws.amazon.com/IA