如何使用不同的密钥ID和密码授予对存储桶的访问权限?

时间:2012-06-08 07:07:35

标签: ruby-on-rails ruby-on-rails-3 security amazon-s3 amazon-web-services

如果我想让我的开发和生产应用程序访问具有不同密钥ID和密钥的不同存储桶,那么可能吗?或者我需要创建另一个AWS账户吗?

我环顾四周但找不到任何有用的东西。理想情况下,如果我可以在一个AWS账户中拥有多个存储桶并且具有不同的密钥ID和秘密来进行这些存储桶访问,那将是一件好事。

2 个答案:

答案 0 :(得分:1)

至于将凭据存入您的应用程序,然后您可以将您复制到服务器上的单独YAML文件或(在heroku上)使用环境变量,如John所说。

但是,您不需要多个AWS账户。您可以使用iam在帐户中创建额外的用户,使用他们自己的访问密钥/密钥,然后授予他们适当的权限。例如,您可以创建一个只能访问S3存储桶但不能执行任何操作的帐户。如果您要在实例上保存密钥,我强烈建议您使用此路由,而不是使用帐户的“主”访问密钥(允许不受限制地访问您的AWS账户)

您可以通过IAM api创建/配置这些用户,也可以在亚马逊控制台上使用GUI

答案 1 :(得分:0)

在你的config目录中创建一个名为s3.yml的文件,Inside put:

development:
  bucket: development_bucket_name
  access_key_id: development_amazon_key
  secret_access_key: development_secret_key

为生产创建一个类似的文件(s3.yml)。

production:
  bucket: production_bucket_name
  access_key_id: production_amazon_key
  secret_access_key: production_secret_key

不要将文件检入源控件。而是将生产文件放在config目录中的服务器上进行开发,只需将其保存在本地配置中即可。

在environment / development.rb和production.rb

  

S3_CONFIG = YAML.load_file Rails.root.join(“config / s3.yml”)

无论你在哪里明确地调用bucket_name,amazon_key,secret_key而不是使用

S3_CONFIG[Rails.env]["bucket"], etc