根据用户组限制 S3 资源

2024-03-17

我有一个网络应用程序,用户(通过 Cognito 使用 ID 令牌 JWT 登录)可以从 S3 上传/下载文件。用户应仅访问与其组织相关的 S3 资源。为此,我正在考虑按组织分离 S3 路径:

"arn:aws:s3:::my_bucket/org1"
"arn:aws:s3:::my_bucket/org2"
"arn:aws:s3:::my_bucket/org3"

Question

如何保护 S3 路径(“文件夹”),以便用户只能访问其组织的资源?我做了一些研究,请参阅下面的选项 - 但有更简单的方法吗?这似乎是一个相当常见的用例。谢谢!

我考虑过的选项

编辑:我最初想到使用 JWT 声明(下面#1)。但我逐渐意识到,AWS 更喜欢使用“身份池”来完成此类任务。这是有道理的,因为您可以将不同的 IdP(例如 Auth0)连接到身份池,并使用身份设置策略(身份角色 -> 身份策略)。所以我会尝试一下,然后报告是否有效。

  1. 使用 JWT 声明的 S3 策略。尚未找到有关使用 JWT 的文档,因此不确定这是否可行。使用 JWT 声明作为 s3 策略中的路径选择器。每个用户都有一个称为“组织”的自定义声明。
User 1 has JWT with claim "organization: organization1"
User 2 has JWT with claim "organization: organization2"
etc.

存储桶策略示例 [1](不确定语法是否正确)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${cognito-identity.amazonaws.com:organization}/*"]}} // here
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:organization}/*"] // here
    }
  ]
}
  1. 具有身份池的“基于角色的访问控制”功能的 IAM 策略 [0]。
  • 在用户池中为每个认知用户分配一个组值。这是他们的组织(例如“organization1”)。
  • 将组映射到名为“OrgRole”的 IAM 角色,其 IAM 策略仅允许 s3 访问其组织的路径。

像这样的东西...

User  | Cognito Group | IAM Role | IAM Policy S3 resource Mapping
user1 | organization1 | OrgRole  | my-bucket/organization1/*
user2 | organization2 | OrgRole  | my-bucket/organization1/*
user3 | organization2 | OrgRole  | my-bucket/organization2/*
user4 | organization3 | OrgRole  | my-bucket/organization3/*

此角色的 IAM 策略示例

      "Resource": ["arn:aws:s3:::my_bucket/${current-users-cognito-group}/*"]

缺点:设置复杂,并且根据 [0],每个用户池仅支持 25 个组,无法扩展。这让我认为我的设置不正确。

[0] https://aws.amazon.com/blogs/aws/new-amazon-cognito-groups-and-fine-grained-role-based-access-control-2/ https://aws.amazon.com/blogs/aws/new-amazon-cognito-groups-and-fine-grained-role-based-access-control-2/

[1] https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html

[2] https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/ https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据用户组限制 S3 资源 的相关文章

随机推荐