针对 S3 资源的 AWS 用户权限策略不限于特定用户



sRuby 1.8.7(是的,我知道它很古老)
AWS-开发工具包-v1 1.60.2
亚马逊云服务器 S3

我正在尝试限制对 S3 存储桶的访问,以便只有一个用户可以读取/写入它。

我创建了以下权限策略并将其附加到 IAM 用户,我们称他们为 UserX:

{
   "Version": "2012-10-17",
   "Statement": [
     { "Sid":"my_sid",
       "Effect":"Allow",
       "Action":"s3:*",
       "Resource": "arn:aws:s3:::my_bucket_name/*"
     }]
}

我的期望是,由于 UserX 附加了此策略,因此他们将是唯一可以对此存储桶执行任何操作的用户。

但是,如果我在没有凭证的情况下连接到 AWS,则可以毫无问题地写入此存储桶。这不是我想要的。我不希望除了 UserX 之外的任何人写入此存储桶(或从中读取)。

如果我从 UserX 中删除此策略,则默认行为适用 - 既不请求(经过身份验证或未经过身份验证)即可写入工作,这是我所期望的。

此策略似乎向所有用户开放访问权限,即使它附加到 UserX。

这是我用来执行此操作的(有效 - 实际代码在方法中)代码:

对于未经身份验证的请求(可以写入但不应能够:

  s3 = AWS::S3.new
  bucket = s3.buckets[my_bucket_name]
  o = bucket.objects[aws_filename]
  o.write(:file => filename_on_local_system)

对于经过身份验证的请求:

  AWS.config(:access_key_id => AWS_ACCESS_KEY_ID,
             :secret_access_key => AWS_SECRET_ACCESS_KEY,
             :region => 'us-west-2')
  s3 = AWS::S3.new
  bucket = s3.buckets[my_bucket_name]
  o = bucket.objects[aws_filename]
  o.write(:file => filename_on_local_system)

我也试过:

  • 将此策略附加到组并将 UserX 分配给该组
  • ,结果相同
  • 创建存储桶策略以允许此用户写入该策略,这会导致相同的行为
  • 在不同的 AWS 账户中创建相同的存储桶策略,并获得相同的行为
  • 使用 s3cmd 实用程序,并获得相同的行为
  • 改用 AWS-S3 Gem(但无法获得访问 AWS 的良好请求)。

AWS 策略模拟器似乎可以工作,但由于您无法指定哪个用户正在执行该操作,因此它并不能真正帮助我调试它。

这是非常令人沮丧的。认为我可能需要研究 ACL,即使它们不受欢迎。

任何帮助,不胜感激。

韦斯

我使用的客户端软件仍在从配置文件 (aws.yml) 中获取凭据,即使我在配置时明确没有传入凭据。

感谢您的帮助。

韦斯

相关内容

  • 没有找到相关文章

最新更新