【问题标题】:Bucket policy to allow Cognito user in User Pool access to S3 bucket允许用户池中的 Cognito 用户访问 S3 存储桶的存储桶策略
【发布时间】:2018-07-12 07:17:59
【问题描述】:

我正在尝试向我的存储桶添加存储桶策略,因为我的存储桶位于根 aws 账户中,并且我想限制根账户下的其他用户、角色等访问我的存储桶,特定 Cognito 用户除外在我的用户池中。

我不想同时使用身份池——我只想在我的存储桶策略中将 Cognito 用户称为主体。有没有办法在不使用身份池的情况下做到这一点?我找不到任何执行此操作的示例策略。

【问题讨论】:

  • 运气好吗?你是怎么解决这个问题的?
  • 经过进一步研究,我认为不可能将 Cognito 用户称为策略中的主体。当 Cognito 用户使用用户池进行身份验证时,他们在客户端的应用程序中进行身份验证,not 在 AWS 中,即 Cognito 用户无权访问 AWS 资源。由于 Cognito 用户不是 AWS 范围内已知的身份,因此您不能将用户称为委托人。您需要使用联合身份为用户提供您可以引用的 IAM 角色,该角色在 AWS 范围内被理解,因此可以在策略中引用。
  • 这个问题有点老了,但我只是花了几天时间试图弄清楚如何让 Cognito 用户访问 AWS 服务,并认为我至少会确认,因为 AWS 文档严重缺乏: (身份池是必需的。原因可以通过摘要from this article 轻松解释,其中写道:“Cognito 用户池存储您的所有用户,然后插入您的 Cognito 身份池,这可以让您的用户访问您的 AWS 服务。 "

标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam


【解决方案1】:

您可以将存储桶策略的原则设置为您的 Cognito 用户的身份验证角色。就我而言,原则看起来像

"Principal": {
    "AWS": "arn:aws:iam::123456789000:role/NAME_OF_MY-authRole"
},

然后,您可以通过更改资源来进一步控制访问。这是来自AWS docs 的示例。

"arn:aws:s3:::bucket-name/cognito/application-name/${cognito-identity.amazonaws.com:sub}",
                "arn:aws:s3:::bucket-name/cognito/application-name/${cognito-identity.amazonaws.com:sub}/*"

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 2021-06-28
    • 2017-06-13
    • 1970-01-01
    • 2023-03-19
    • 2013-10-25
    • 2023-04-05
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多