【发布时间】:2019-03-26 18:23:30
【问题描述】:
是否可以限制 AWS S3 对象,以便只有通过 AWS Cognito 进行身份验证的用户才能访问该对象?我还没有想出办法来做到这一点,但对我来说这显然是一个用例。
我想通过 AWS S3 托管一个网站并限制一些对象(我的页面),以便如果用户直接访问它们,他们会收到权限被拒绝错误。如果用户通过 AWS Cognito 进行身份验证,则该对象应该可用。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Deny access to objects in the secured directory.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::domain.com/secured/*"
},
{
"Sid": "Only allowed authenticated users access to a specific bucket.",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::x:role/Cognito_Domain_IdP_Auth_Role"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::domain.com/secured/*"
},
{
"Sid": "Read access for web hosting.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::domain.com/*"
}
]
}
【问题讨论】:
-
我已经尝试了一切试图让它工作但无济于事。我在 AWS Cognito 中创建了一个自定义 IdP,它创建了两个角色 - 一个用于 unauth,一个用于 auth,但是我无法使用这些角色配置 S3 存储桶。我真的完全不知所措。
-
您能说出您当前的 S3 权限是什么吗?也许是因为其他允许的方式而被访问。
-
感谢 Deepthi,我刚刚发布了我的 S3 存储桶策略。我认为这行得通。现在我只需要弄清楚如何使用 Cognito 身份池登录。我可以使用用户池登录,有什么不同吗?
-
您想要一个纯网络应用程序,包含静态内容,还是愿意拥有一些后端(例如 lambda)。取决于答案,您可能有不同的选择
标签: amazon-web-services amazon-s3 amazon-cognito