使用临时凭证限制访问s3

时间:2014-08-11 12:34:51

标签: ruby amazon-web-services amazon-s3

我需要获得具有特定权限的临时凭据,我的应用可以使用该权限来使用S3 over API。 问题是政策变量$ {aws:userid}在我的情况下不起作用。

重现的步骤:

创建允许所有s3操作进入用户特定文件夹的策略。

policy = AWS::STS::Policy.new(version: '2012-10-17')
policy.allow({
  actions: ["s3:*"],
  resources: ["arn:aws:s3:::my-bucket/folder/${aws:userid}/*"]
})

获取以前政策的临时凭证。

sts = AWS::STS.new(:access_key_id => 'ADMIN_ACCESS_KEY',
                   :secret_access_key => 'ADMIN_SECRET_KEY')
session = sts.new_federated_session("custom_user", policy: policy)

现在session返回所有必需的凭据参数和user_id 811395474237:custom_user

我希望这个user_id将在$ {aws:userid}中,但事实并非如此。

s3u = AWS::S3.new(session.credentials)
bucket = s3u.buckets['my-bucket']
file = bucket.objects.create("folder/#{session.user_id}/user.txt", 'test file', :acl => :public_read)

这会让我Access Deny错误。

使用来自sts.new_federated_session("custom_user", policy: policy)的凭据时,应该是$ {aws:userid}?

0 个答案:

没有答案