影响其他组的 S3 资源的 AWS IAM 组策略?

Posted

技术标签:

【中文标题】影响其他组的 S3 资源的 AWS IAM 组策略?【英文标题】:AWS IAM group policy on S3 resource affecting other groups? 【发布时间】:2013-06-12 13:47:52 【问题描述】:

这是来自AWS s3 bucket policy invalid group principal的后续但独立的问题

我有 2 个组:开发人员和协作者。开发人员具有预配置的“PowerUser”组策略。协作者具有以下组策略


   "Version": "2012-10-17",
   "Statement":[
      
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      ,
      
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::bucket"
      ,
      
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::bucket/*.txt"
                 
   ]

存储桶有以下策略来拒绝上传未加密的 .txt 文件:


    "Version": "2008-10-17",
    "Id": "PutObjPolicy",
    "Statement": [
        
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": 
                "AWS": "*"
            ,
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket/*.txt",
            "Condition": 
                "StringNotEquals": 
                    "s3:x-amz-server-side-encryption": "AES256"
                
            
        
    ]

我期望的行为:“开发者”组可以放置任何类型的文件,“.txt”文件必须加密,包括制作目录。 “协作者”组只能放置、获取和删除“.txt”文件,不能创建目录。

我得到的行为与“开发人员”的预期一致。 “协作者”的行为与开发者相同,当他们只能放置“.txt”文件时,他们可以放置任何文件。

我做错了什么?

【问题讨论】:

也许您正在测试的开发人员属于这两个群体? 不,他绝对只是 1 组的成员,即“开发者”组。我所有的用户都只是一个组的成员。 【参考方案1】:

经过大量试验和错误后,我尝试在存储桶级别执行大部分权限,但遇到了一些意外行为,不得不将其拆分为组和存储桶策略。这是我的“协作者”组策略:


   "Version": "2012-10-17",
   "Statement":[
      
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      ,
      
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::bucket"
      ,
      
         "Effect":"Allow",
         "Action":[
            "s3:GetObject"            
         ],
         "Resource":"arn:aws:s3:::bucket/*"
      

   ]

这里是只允许“协作者”组中的四个用户上传和删除“.txt”文件的存储桶策略:


    "Version": "2008-10-17",
    "Id": "PutObjPolicy",
    "Statement": [
        
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": 
                "AWS": "*"
            ,
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket/*.txt",
            "Condition": 
                "StringNotEquals": 
                    "s3:x-amz-server-side-encryption": "AES256"
                
            
        ,
        
            "Sid": "CelOnly",
            "Effect": "Deny",
            "Principal": 
                "AWS": [
                    "arn:aws:iam::111122223333:user/collaborator1",
                    "arn:aws:iam::111122223333:user/collaborator2",
                    "arn:aws:iam::111122223333:user/collaborator3",
                    "arn:aws:iam::111122223333:user/collaborator4"
                ]
            ,
            "Action": [
                "s3:DeleteObject",
                "s3:PutObject"
            ],
            "NotResource": "arn:aws:s3:::bucket/*.txt"
        
    ]

在存储桶策略中包含 s3:GetObject 不允许下载“.txt”文件,这就是我不得不将其移至组策略的原因。我仍然不确定为什么要进行如此多的反复试验,而我的其他一些解决方案(例如原始问题中的解决方案)不起作用。但至少这是我的问题的答案。

【讨论】:

【参考方案2】:

如果您确定此政策仅适用于协作者组,则不应影响开发者。

根据您的相关问题,您似乎最初尝试了存储桶策略。您是否仍然应用了将整个存储桶限制为 *.txt 文件的存储桶策略?尝试删除任何现有的存储桶策略。

【讨论】:

以上是关于影响其他组的 S3 资源的 AWS IAM 组策略?的主要内容,如果未能解决你的问题,请参考以下文章

AWS-IAM:授予对单个存储桶的访问权限

如何限制 AWS IAM 组访问 AWS Secret Manager?

允许用户访问特定 S3 存储桶进行备份的 AWS IAM 策略

Amazon Web Service S3 Access Denied with 看似不错的 IAM 策略

针对 Grafana 警报写入 s3 存储桶的 AWS IAM 策略问题

AWS IAM 策略:如何更改 AWSLambdaFullAccess 策略以仅允许访问一个 S3 存储桶?