限制联邦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 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'
        }
     }
    }
]

}

这是可以实现的吗?

提前感谢您的帮助!

如果我正确理解了您所需的配置,那么AWS可能刚刚发布了支持此场景的功能,请参阅AWS访问控制策略中的变量:

AWS身份和访问管理(IAM)使您能够创建控制对AWS服务api和资源的访问的策略。今天我们正在扩展AWS访问策略语言,以支持变量。策略变量使创建和管理更容易包括个性化访问控制的一般策略。

以下是常规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 ,—请参阅您可以用于策略变量的请求信息中的表,了解如何根据主体类型替换这些变量。

相关内容

  • 没有找到相关文章

最新更新