AWS管理控制台:五步创建S3 bucket策略

日期: 2014-04-27 作者:Judith M. Myerson翻译:张培颖 来源:TechTarget中国 英文

亚马逊简单存储服务(S3)因其基于对象存储数据而闻名,但是S3 bucket策略可以帮助AWS实现亚马逊S3资源的设置和管理复杂访问权限的时间节省。这篇技巧指南为开发者提供了基本的S3实践。需要指出的是S3通常用和亚马逊Identity and Access Management (IAM身份识别与管理)策略一起使用,IAM用来设置、捕捉和记录用户身份和授权。 你需要一个S3 bucket策略来访问你上传的文件。

如果你没有这个文件,就会受到拒绝访问的错误信息: “This XML file does not appear to have any style information associ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

亚马逊简单存储服务(S3)因其基于对象存储数据而闻名,但是S3 bucket策略可以帮助AWS实现亚马逊S3资源的设置和管理复杂访问权限的时间节省。这篇技巧指南为开发者提供了基本的S3实践。需要指出的是S3通常用和亚马逊Identity and Access Management (IAM身份识别与管理)策略一起使用,IAM用来设置、捕捉和记录用户身份和授权。

你需要一个S3 bucket策略来访问你上传的文件。如果你没有这个文件,就会受到拒绝访问的错误信息:

“This XML file does not appear to have any style information associated with it. The document tree is shown below”
1 -<error>
2 <code>AccessDenied</code>
3 <message>Access Denied</message>
4 <requestid>F7A33F55E19C8BFA</requestid>
5 -<hostid>
6 UHwvZfsh+B9IczJIyrBQOKG1+JRVsybONoS8+pwo1DZSvscmdb9OIsnZw</hostid>
7 </error>

在你在属性窗口中点击了链接文件名后,弹出这个消息。为了查看这个窗口,点击右侧“All Buckets”窗口的属性标签。

为了解决这个问题,创建一个S3 bucket策略。使用AWS Policy Generator来生成一个脚本,允许你访问你的文件。

我这里有两个脚本示例展示给你如何设置权限。第一个示例是允许任何人访问我的文件的简单脚本。第二个示例是允许所有用户,除了一个之外,来上传其文件到我的bucket的比较长一点的脚本。

第一个示例,有三步要做:

第一步:选择策略类型

选择S3 bucket策略。

这个策略是你可以创建的四种类型的策略中的一种。其余三种为:

•IAM Policy
•SNS Topic Policy
•SQS Queue Policy

第二步:添加声明

声明是一个单一权限的正式描述。一个声明中有五个元素,分别是:

•Effect元素
•Principal元素
•AWS service元素
•Actions元素
•Amazon Resource Name (ARN)元素

Effect元素,选择Allow允许用户读取文件。

Principal元素,添加“ * ”到输入框中。这个通配符允许匿名用户读取这个文件。

AWS Service元素,生成器自动将亚马逊S3插入到输入框中。

Actions元素,检查“Get Object。”这是你需要读一个文件的唯一动作。在这个列表中你不需要任何其他动作。

Amazon Resource Name元素,设置成以下的格式:arn:aws:s3:::<bucket_name>/<key_name>

选择你创建的bucket名称(比如bucket01) 。设置键名为*。在输入框中输入如下内容:arn:aws:s3:::bucket01/*

跳过这个声明的条件,比如日期、位置、版本ID、最大键值和其他的限制。

准备好后点击Add Statement按钮。马上你就会看到添加了什么元素到这个声明的结果。

你如果对这个结果满意,继续下一个步骤。

第三步:创建bucket策略

点击Generate Policy按钮。这个将生成你需要增加到bucket中的策略。这个策略用访问策略语言编写。

{

 "Id": "Policy1393570093893",

 "Statement": [

  {

   "Sid": "Stmt1393569661962",

   "Action": [

    "s3:GetObject"

   ],

   "Effect": "Allow",

   "Resource": "arn:aws:s3:::bucket01/*",

   "Principal": {

    "AWS": [

     "*"

    ]

   }

  }

 ]

}

如果脚本显示你提供了一个错误的bucket名,你可以编辑它。一旦你满意这个策略,将其复制到剪贴板。你需要将其粘贴到策略编辑器中。

如何获得策略编辑器:

•在AWS Management Console中打开你的bucket
•进入Properties并点击Permissions
•选择Add bucket policy

编辑器打开后,粘贴这个策略。然后点击保存。编辑器提供了一个示例Bucket策略的链接。

在第二个S3 bucket策略示例中,bucket所有者完全控制所有账户的访问,除了一个之外,让他们可以上传文件。bucket所有者设置了一个具体的条件,有一个账户必须在符合授权和访问条件后才能上传文件。PutObject操作用来添加一个文件到bucket中。

{

  "Version":"2012-10-17",

  "Statement":[

   {

     "Sid":"111",

     "Effect":"Allow",

     "Principal":{

      "AWS":"123456789"

     },

     "Action":"s3:PutObject",

     "Resource":"arn:aws:s3:::bucket01/*"

   },

   {

     "Sid":"112",

     "Effect":"Deny",

     "Principal":{

      "AWS":"123456789"

     },

     "Action":"s3:PutObject",

     "Resource":"arn:aws:s3:::bucket01/*",

     "Condition":{

      "StringNotEquals":{

        "s3:x-amz-grant-full-control":[

         "emailAddress=xyz@amazon.com"

        ]

      }

     }

   }

  ]

}

这个脚本的开始首先声明,只有第二个声明中的条件不满足时,允许账户123456789上传文件到bucket01。如果账户123456789并没有发邮件给bucket所有者授权给他完全的控制,然后上传文件就失败。

总之,你需要bucket策略授权或者拒绝账户读取和上传文件到你的bucket中。亚马逊提供了运营bucket和对象的参考。

翻译

张培颖
张培颖

云计算网站编辑

相关推荐