首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS认知和AWS S3集成?

AWS认知和AWS S3集成?
EN

Stack Overflow用户
提问于 2018-10-22 15:59:05
回答 2查看 1.8K关注 0票数 4

是否可以限制AWS S3对象,使只有通过AWS认知进行身份验证的用户才能访问该对象?我还没有想出一种方法来做到这一点,但在我看来,这显然是一种用例。

我想通过AWS S3托管一个网站,并限制一些对象(我的页面),这样如果用户直接访问它们,就会得到一个被拒绝的权限错误。如果用户是通过AWS认知技术进行身份验证的,那么对象应该是可用的。

代码语言:javascript
复制
{
    "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/*"
        }
    ]
}
EN

回答 2

Stack Overflow用户

发布于 2018-12-16 20:47:13

您可以将一个角色传递给您的用户,通过身份验证,然后允许他们执行某些操作。

为角色映射创建角色

为每个角色添加适当的信任策略是很重要的,这样它只能由Amazon为身份池中经过身份验证的用户使用。下面是这样一种信任策略的一个例子:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-dead-beef-cafe-123456790ab"
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

授予Pass角色权限

要允许IAM用户设置权限超过该用户对标识池的现有权限的角色,您可以授予该用户iam:PassRole权限,以便将该角色传递给集合标识池角色API。

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myS3WriteAccessRole"
            ]
        }
    ]
}

这里有更多信息:https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html

票数 2
EN

Stack Overflow用户

发布于 2019-07-28 04:02:07

是的,您可以做到这一点,但是不能通过控制台直接配置它。

首先,您需要创建策略,限制对S3和→桶的访问 →创建一个附加它们的角色 将它们分配给EC2或Lambda 使用→对应用程序中的用户进行身份验证 使用该方法可以为S3对象拥有一个有签名的→并检索它们

这可能对你有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52933373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档