amazon-web-services – 限制联盟IAM用户在对象级别访问Amazon S3

我正在做一些关于使用S3的研究.

我想要实现的基本上是以与文件系统相同的方式控制对S3存储桶中对象的访问,但是对于IAM联合用户.

我们假设以下场景

  Bucket  
     |- File 1.txt -> ACL: Read: User1; Read: User 2
     |- File 2.txt -> ACL: Read: Everyone; Read, Write: User 2
     |- File 3.txt -> ACL: Read: Group 1; Read, Write: User 2

可以使用ACL和Amazon“本机”用户和组来实现此类配置.另一方面,对于联合用户,我唯一能够找到的是生成具有分配的存储桶策略的临时令牌.

如果我理解正确,则存储桶策略的工作方式与ACL相反(定义用户可以访问的对象,而ACL定义谁有权访问该对象)

我的问题是.是否可以在ACL中分配联合用户(或以其他方式为联合用户分配相同的目标)?

我想在文件系统上实现相同的行为,在文件系统中,您有组中的用户和您正在标记哪些组可以访问它们的对象

假设字段’x-amz-meta-seclevels’包含可以访问文件(Group1,Group2,admin3rdfloor)的组,其中包含所显示的策略(这是不合适的,但我想描述一下我的想法) IAM联合用户,我可以授予此用户访问x-amz-meta-seclevels字段中包含admin3rdfloor值的所有文件的权限.

{
'Statement': [
    { 
        'Sid': 'PersonalBucketAccess', 
        'Action': [ 
            's3:GetObject' 
            ],
        'Effect': 'Allow', 
        'Resource': 'arn:aws:s3:::MyBucketName' 
        'Condition':{
        'StringLike':{
           's3:x-amz-meta-seclevels':'admin3rdfloor'
        }
     }

    }
]

}

这有可能以任何方式实现吗?

提前感谢您的帮助!

最佳答案 如果我正确理解了您所需的配置,AWS可能刚刚发布了启用此方案的功能,请参阅
Variables in AWS Access Control Policies

07001 enables you to create
policies that control access to AWS service APIs and resources. Today
we’re extending the AWS access policy language to include support for
variables. 07002 make it easier to create and manage
general policies that include individualized access control.

以下是常规IAM用户提供的示例策略:

{
   "Version": "2012-10-17",
   "Statement": [
     {
       "Action": ["s3:ListBucket"],
       "Effect": "Allow",
       "Resource": ["arn:aws:s3:::myBucket"],
       "Condition":{"StringLike":
      {"s3:prefix":["home/${aws:username}/*"]}}
     },
     {
       "Action":["s3:GetObject", "s3:PutObject", "s3:DeleteObject*"],
       "Effect":"Allow",
       "Resource": ["arn:aws:s3:::myBucket/home/${aws:username}",
       "arn:aws:s3:::myBucket/home/${aws:username}/*"]
     }
]
}

虽然此示例中包含的${aws:username}不适用于联合用户(或假定的角色),但还有另一个变量${aws:userid},它将替换为account:caller-specified-name for the各个${aws:principaltype} FederatedUser, – 请参阅Request Information That You Can Use for Policy Variables中的表格,了解有关如何根据主体类型替换这些变量的详细信息.

点赞