2013-03-08 2 views
2

바라건대 이것은 빠르고 쉬운 질문입니다. 다음은 A 버킷에 대한 cfn 템플릿에서 버킷 정책을 설정하는 예제입니다.cfn 템플릿의 버킷 정책에 여러 버킷을 지정하는 방법은 무엇입니까?

"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 : 나는 포럼 CFN AWS에서 같은 질문을했다하지만 난 빨리 SO에 AWS 포럼에 비해 답변을 얻을 수 있음을 깨닫게했다.

답변

2

AWS :: S3 :: BucketPolicy 자원을 둘 이상의 버킷에 첨부 할 수 없습니다. 하나 이상의 정책에 정책을 첨부하려면 IAM 리소스를 사용해야합니다. AWS::IAM::Policy 리소스는 IAM 관리를 통해 정책을 정의하고이를 다양한 리소스에 적용하는 데 사용됩니다. 제 생각에 IAM 인터페이스는 구식 정책 리소스보다 훨씬 강력하고 유연합니다 (그러나 더 복잡합니다). 하나 이상의 버킷에 단일 정책을 적용 할 수있을뿐만 아니라 여러 버킷에 여러 정책 (명령문)을 적용하고 여러 IAM 사용자/그룹/역할에 할당 할 수도 있습니다.

예를 들어 CloudFormation 템플릿에서 만들 수있는 IAM 그룹 또는 사용자를 사용하여 특정 정책에 대한 액세스 권한을 부여 할 수 있습니다. 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" } 
    ] 
    } 
}, 
관련 문제