2

使用Cloudformation,您可以在創建S3存儲桶時將Authenticated Users組設置爲放入/刪除訪問控制?帶有Cloudformation的非罐裝ACL S3存儲桶

+0

您是否確實希望將存儲桶的放入/刪除權限授予全部** Amazon S3用戶或只有您自己的帳戶的用戶? –

+0

@Steffan - 感謝您的回覆。它看起來像使用ACL的真正需要的是一個AuthenticatedWrite(這令人討厭的是通過Amazon Web Console可用)。我想我真正想要的是通過存儲桶策略來複制AuthenticatedWrite的方法。 – nsfyn55

+0

所以你真的想這樣做,有趣(我總是想知道用例可能會限制對數百萬事實上的匿名S3用戶的寫入訪問權限,而不是首先允許真正的匿名用法,無論如何...... ) - 如果存儲桶策略允許爲_Principal_中的名稱空間/帳戶片段指定通配符,例如'arn:aws:iam :: *:root';這會很容易。這似乎並不可能,但至少它沒有記錄(當然你可以給它一個鏡頭)。 –

回答

5

這是不可能的初始和分別限量Access Control Lists (ACL)Amazon S3,其中只有預定義Canned ACLs都可以通過依次AWS CloudFormation支持AWS resource types使用,請參閱財產AWS::S3::Bucket資源的AccessControl的

授予存儲桶預定義權限的預設ACL。默認 是私人的。有關canned ACL的更多信息,請參閱Canned ACLs in the Amazon S3 documentation

AccessControl的有效值:Private | PublicRead | PublicReadWrite | AuthenticatedRead | BucketOwnerRead | BucketOwnerFullControl

假如你不想給PUT /刪除對訪問其實都是 S3用戶(其中​​身份驗證的用戶組實際上意味着在不知道S3開發者的驚訝),但只對像大多數用例一樣,您自己的(或衆所周知的)帳戶用戶可以通過使用S3 Bucket Policies來實現您的目標。

Example Cases for Amazon S3 Bucket Policies授予權限將多個帳戶新增限制,這補助PutObject,並PutObjectAcl權限多個賬戶提供了一個示例策略,並要求公衆閱讀罐頭ACL包括 - 剝離這對指定的一組,並把它變成一個CloudFormation模板片斷將產生大約如下(你需要的主要調整到你的課程帳戶):

"Resources" : { 
    "S3Bucket" : { 
    "Type" : "AWS::S3::Bucket" 
    }, 
    "BucketPolicy" : { 
    "Type" : "AWS::S3::BucketPolicy", 
    "Properties" : { 
     "PolicyDocument": { 
     "Id"   : "Grant access to all account users", 
     "Statement" : [{ 
      "Sid"  : "PutObjectAccess", 
      "Action"  : ["s3:PutObject"], 
      "Effect"  : "Allow", 
      "Resource" : { "Fn::Join" : ["", ["arn:aws:s3:::", {"Ref" : "S3Bucket"} ]]}, 
      "Principal" : { "AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"] } 
     }] 
     }, 
     "Bucket" : {"Ref" : "S3Bucket"} 
    } 
    }, 
}, 

請注意的p以防萬一Using ACLs and Bucket Policies Together的特殊情況。

+0

這很有幫助,謝謝,但上面的「特性」鏈接已死亡。你能總結一下這些問題或找到它轉移到的地方嗎? – telent

+0

@telent - 在整個部分的重大重組期間,內容似乎已經消失。我稍後需要重新說明這一點,但現在,前者的內容仍然可以在AWS中國(北京)區域文檔中找到,請參閱[一起使用ACL和存儲桶策略](http://docs.amazonaws.cn/en_us/ AmazonS3/latest/dev/UsingACLsandBucketPoliciesTogether.html)。 –