2013-06-12 61 views
2

这是一个后续但独立的问题AWS s3 bucket policy invalid group principal影响其他组的S3资源上的AWS IAM组策略?

我有2组:开发人员和合作者。 Devlopers具有预配置的“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”文件时可以放置任何文件。

我在做什么错?

+0

也许您正在测试的开发者属于两个组? – yegor256

+0

不是,他绝对只是“开发者”组织的成员之一。我的所有用户都只是一个组的成员。 – HoaxKey

回答

0

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

{ 
    "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" 
     } 
    ] 
} 

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

0

如果您确定此政策仅附加到协作者组,则不应影响开发人员。

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