2013-03-08 66 views
2

希望这是一个快速简单的问题。以下是在bucket的cfn模板中设置bucketpolicy的示例。如何在cfn模板的bucketpolicy中指定多个桶?

"mybucketpolicy" : { 
    "Type" : "AWS::S3::BucketPolicy", 
    "Properties" : { 
     "PolicyDocument" : { 
     "Id" : "MyPolicy", 
     "Statement" : [ { 
      "Sid" : "ReadAccess", 
      "Action" : [ "s3:GetObject" ], 
      "Effect" : "Allow", 
      "Resource" : { "Fn::Join" : [ 
        "", [ "arn:aws:s3:::", { "Ref" : "mybucket" } , "/*" ] 
       ] }, 
      "Principal" : { 
       "AWS" : { "Fn::GetAtt" : [ "mygroup", "Arn" ] } 
      } 
     } ] 
     }, 
     "Bucket" : { "Ref" : "mybucket" } 
     } 
    } 
} 

如果我想将策略应用到另一个桶中,除了mybucket,我会怎么做呢?

我必须: 1.创建一个全新的bucketpolicy可以说'mybucketpolicy2'这将是非常类似于上述? 2.只需添加一个项目到上面的'Statement'数组中并使用新的bucket名称?如果是,那么这将与上面的“桶”键冲突,不会吗? 3.其他方式?

任何帮助,非常感谢。

--su

PS:我也问过在AWS上CFN论坛同样的问题,但我已经认识到,我得到的答案更快的SO比AWS论坛。

回答

2

您无法将AWS :: S3 :: BucketPolicy资源附加到多个存储桶。要将策略附加到多个资源,您将需要使用IAM资源。资源AWS::IAM::Policy用于通过IAM管理定义策略并将其应用于各种资源。在我看来,IAM接口比旧式的策略资源更加强大和灵活(但更为复杂)。您不仅可以将单个策略应用于多个存储桶,还可以将多个策略(语句)应用于多个存储桶并分配给多个IAM用户/组/角色。

您可以使用IAM组或用户来授予对特定策略的访问权限,这些组或用户可以使用例如以下方式在您的CloudFormation模板中创建。 AWS :: IAM :: Group资源。

适应这个片段,以您的需求:

"GetS3ContentPolicy" : { 
    "Type" : "AWS::IAM::Policy", 
    "Properties" : { 
    "PolicyName" : "S3ContentPolicy", 
    "PolicyDocument" : { 
     "Statement" : [ { 
     "Effect" : "Allow", 
     "Action" : [ 
      "s3:ListBucket" 
     ], 
     "Resource" : [ 
      { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "PubS3Bucket" } ] ] }, 
      { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "SecretS3Bucket" } ] ] } 
     ] 
     }, 
     { 
     "Effect" : "Allow", 
     "Action" : [ 
      "s3:GetObject", 
      "s3:GetObjectVersion" 
     ], 
     "Resource" : [ 
      { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "PubS3Bucket" }, "/*" ] ] }, 
      { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "SecretS3Bucket" }, "/*" ] ] } 
     ] 
     } ] 
    }, 
    "Groups" : [ 
     { "Ref" : "ManagementInstancesGroup" }, 
     { "Ref" : "WebInstancesGroup" } 
    ] 
    } 
}, 
相关问题