2013-03-18 102 views
0

我有一个Django应用程序,它将定期将事情上传到S3。我想,这将会是很容易存储S3密钥和密码在我的设置文件:S3的自定义用户权限

S3_KEY = "whateverkeything" 
S3_SECRET = "mykeysecret" 

然后,考虑到安全性和权限限制的想法,只要适用,重新考虑这种做法。我的应用程序只需要GET和PUT/POST对象,绝不会删除对象,永远不会创建DELETE存储桶等等。另外,如果有人能够访问我的AWS密钥和密钥,他们可能会启动100个大型EC2实例,运行我陷入一大笔债务。

有没有办法限制访问权限并为S3创建一个新的“用户”,它只能拥有所描述的权限?还是我太偏执?

回答

1

你绝对应该创建一个只有必要权限的用户。使用IAM(身份和访问管理)很容易。您可以在现有的AWS账户上创建一个新用户(最容易从AWS控制台执行),然后仅为其提供最低限度的权限。那样的话,如果凭证不知何故被破坏,损害的范围是有限的。

另一种选择是为您的服务器分配IAM角色,但我不知道PHP工具是否可以与角色一起工作。

使用控制台的策略编辑器分配S3权限非常简单。您只需选择特定的操作(GET对象和PUT对象,看起来像),并给予资源的“ARN”来应用它。如果您的存储桶命名为“mybucket”,则ARN将为arn:aws:s3:::mybucket/*。如果您还需要列出存储桶中的资源,则可以为列表存储桶添加第二个策略,其ARN为arn:aws:s3:::mybucket(无尾部斜杠或星号)。

有关IAM用户和角色的信息,请参见IAM User Guide