允许用户池中的Cognito用户访问S3存储桶的存储桶策略

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

我不想使用身份池,只想在我的桶策略中将 Cognito 用户作为主体引用。是否有任何方法可以在不使用身份池的情况下实现这一点?我找不到任何示例策略来完成此操作。


有什么进展了吗?你是怎么解决这个问题的? - saurabh
2
经过进一步研究,我认为在策略中无法将Cognito用户称为负责人。当Cognito用户使用User Pool进行身份验证时,他们会在客户端应用程序中进行身份验证,而不是在AWS中进行身份验证,即Cognito用户无法访问AWS资源。由于Cognito用户不是在AWS范围内已知的身份,因此您无法将该用户称为负责人。您需要使用联合身份来为用户提供IAM角色,以便您可以引用在AWS范围内理解的IAM角色,并因此可以在策略中引用它。 - rooscous
1
这个问题有点老了,但我刚花了几天时间尝试弄清楚如何让Cognito用户访问AWS服务,并且认为至少应该确认一下,因为AWS文档严重缺乏:(需要Identitiy Pool。原因可以通过这篇文章的摘要(来自此文章)轻松解释,其中写道:“Cognito用户池存储所有用户,然后插入到您的Cognito身份池中,该池可以使您的用户访问AWS服务。” - kiddailey
1个回答

0
您可以将存储桶策略的主体设置为 Cognito 用户的授权角色。在我的情况下,主体看起来像是:
"Principal": {
    "AWS": "arn:aws:iam::123456789000:role/NAME_OF_MY-authRole"
},

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

"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}/*"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接