3

Cloudformation を使用して、S3 バケットを作成するときに、Authenticated Users グループにアクセス制御を配置/削除するように設定できますか?

4

1 に答える 1

7

これは、Amazon S3の初期およびそれぞれ制限されたアクセス コントロール リスト (ACL)では不可能です。AWS CloudFormationでサポートされているAWS リソース タイプでは、定義済みの既定のACLのみを使用できます。AWS のプロパティAccessControlを参照してください:: S3::バケットリソース:

バケットに対する事前定義されたアクセス許可を付与する既定の ACL。デフォルトは非公開です。既定の ACL の詳細については、Amazon S3 ドキュメントの「既定の ACL」を参照してください。

AccessControl の有効な値: AuthenticatedRead | AwsExecRead | バケット所有者読み取り | バケット所有者フルコントロール | ログ配信書き込み | プライベート | パブリック読み取り | PublicReadWrite

実際には、すべてのS3 ユーザーにput/delete アクセス権を付与したくないと仮定します( Authenticated Usersグループは実際には、知らない S3 開発者を驚かせることを暗示しています)。 ) アカウントを通常どおり使用する場合、代わりにS3 バケット ポリシーを使用して目標を達成できます。

Amazon S3 バケット ポリシーのケース例では、追加された制限を使用して複数のアカウントにアクセス許可を付与するためのポリシーの例を提供します。これは、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"}
    }
  },
},

場合によっては、 ACL とバケット ポリシーを一緒に使用する際の特殊性に注意してください。

于 2012-05-27T20:14:11.403 に答える