限制联合IAM用户在对象级别对Amazon S3的访问

时间:2013-04-03 14:59:03

标签: amazon-web-services amazon-s3 federated-identity amazon-iam

我正在做一些关于使用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 Federated用户,我可以授予此用户访问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'
        }
     }

    }
]

}

这是否可以实现?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

  

AWS Identity and Access Management (IAM)可让您创建   控制对AWS服务API和资源的访问的策略。今天   我们正在扩展AWS访问策略语言以包含支持   变量。 Policy variables让您更轻松地创建和管理   包含个性化访问控制的一般政策。

以下是常规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 对于相应的${aws:principaltype} FederatedUser , - 请参阅Request Information That You Can Use for Policy Variables中的表格,了解有关如何根据主体类型替换这些变量的详细信息。