【问题标题】:Assert that you hold an AWS IAM role to an external service断言您拥有外部服务的 AWS IAM 角色
【发布时间】:2020-09-01 20:38:29
【问题描述】:

有权访问 IAM 角色的服务是否可以断言(证明)它可以访问该角色以访问外部服务?本质上,IAM 角色可以用于外部身份吗?

我想做的是让在 AWS 内运行的服务 X 对在 AWS 内运行的外部服务 Y not 进行 API 调用,说“我是 AWS 身份 arn:aws:iam::account-id:role/role-name”,而外部服务将能够验证这一事实。

我意识到这可以通过将实际的访问密钥/秘密凭据发送到外部服务来完成,但我正在寻找一种不涉及发送实时凭据的方法。

外部服务可以验证的签名/JWT 之类的东西是完美的。

【问题讨论】:

    标签: amazon-web-services authentication amazon-iam identity


    【解决方案1】:

    其实你可以使用AWS的STS服务。

    它将根据文档“创建并为受信任的用户提供可以控制对您的 AWS 资源的访问的临时安全凭证”:

    https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html

    【讨论】:

    • 感谢您的链接,但这不是正确的解决方案。我不是在寻找充当角色的外部服务,而且我特别不想共享访问密钥,因为它们会授予对 AWS 资源的访问权限。相反,我希望内部服务使用 AWS 身份与外部服务进行身份验证。就像,“我证明我是 X 角色”,但仅此而已。除非我遗漏了什么,否则 STS 允许您检索临时访问密钥,但它们不受任何限制。
    • 嗨,Jacob,此时,我真的不知道您要做什么,但我认为 STS 可以在这种情况下为您提供帮助。在任何时候你想进行身份验证,使用 STS 检索临时密钥并使用它们,它们将在一段时间后过期。另一个 AWS 凭证服务是 Cognito,您可以快速浏览一下,但我认为它没有帮助
    【解决方案2】:

    我认为这是不可能的。该角色通过签名提供对 AWS API 的访问权限,但这要求两端都知道您显然没有的秘密访问密钥。

    您可以通过证明用户有权访问可验证资源来使用有效的解决方案。例如,您可以将 S3 putObject 权限授予角色,将存储桶公开,然后外部服务可以要求调用方将某个文件放入此存储桶。如果调用者有权访问角色,则它可以编写对象,然后证明其对角色的访问权。

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2018-08-19
      相关资源
      最近更新 更多