当前位置: 首页 > 知识库问答 >
问题:

AWS-IAM:允许访问单个铲斗

麻昌翰
2023-03-14

我创建了一个组,我添加了新用户到这个组,然后我创建了以下IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET-NAME"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::EXAMPLE-BUCKET-NAME/*"
    }
  ]
}

我从以下方面获得上述政策:

http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html

基本上,我想为一个特定的桶开通权限,但是上面的策略不起作用。用户仍然可以从其他存储桶中添加、删除、修改文件

谢谢!

共有3个答案

宋育
2023-03-14

尝试为S3存储桶使用IAM角色,为每个用户使用角色。这将限制对存储桶的写访问。

请参阅此链接-https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

检查链接中有关授予访问权限的部分。

希望有帮助!

太叔灿
2023-03-14

此策略肯定会起作用-用户只能添加/删除/修改EXAMPLE-BUCKET-NAME BUCKET。

仔细检查您的组和用户,确保没有附加其他托管或内联策略。

锺离赤岩
2023-03-14

对于谷歌用户:

S3 API和IAM操作命名完全崩溃:

  • ListBucket是一个不建议使用的SOAP API,现在被重命名为ListObject
  • ListBuckets是一个API,它列出了您拥有的所有存储桶THE API CALLER ACCOUNT
  • ListBucketAPI是由,你可能猜想,s3: ListBucketIAM操作
  • ListBucketsAPI受...惊喜❗️s3: ListAllMyBucketsIAM action
  • 返回一个名为...惊喜❗️的对象

我现在找不到一个好方法来描述我的感受。

为了最好的向后兼容性,永远保留旧的API或错误命名的API可能是一个好习惯,但是AWS在创建新API时应该把一致性放在第一位。

简而言之:ListBucket=s3:ListAllMyBucket,忘掉s3:ListBucket

也就是说,截至2021/01年,无法:

  • 列出你拥有的桶的限制数量,因为正如它的名字所暗示的那样,只接受*作为有效资源
  • 列出任何不属于你的桶,因为没有这样的API或参数
  • 获取任何不属于你的桶的创建日期,因为列表桶是获取此信息的唯一方法
 类似资料:
  • 我已创建IAM策略并分配给IAM用户。 请查找保险单 我未选中s3 bucket testingbucket00的“阻止新公共bucket策略”。 我尝试登录aws控制台使用IAM用户列出所有桶,但显示"访问为错误"。 我想给IAM用户分配一个桶,请帮忙。

  • 以下是我所做的: 提前致谢

  • null 根据AWS文档,您应该始终为EC2创建角色,并根据您的需求为角色分配策略。 向一个角色授予多个服务访问权限是否存在安全问题?我问这个问题的原因是,使用EC2元数据,您可以在此时使用该角色获得分配给EC2实例的accesskey信息。EC2经常刷新密钥。 任何反馈或输入。

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我正在使用Microsoft扩展访问Azure DevOps中的密钥库,从密钥库中获取秘密。我得到了这个错误消息,它似乎说我需要允许Azure Devops代理访问KeyVault的权限。“无法获取托管服务主体的访问令牌。请为虚拟机”https://aka.ms/azure-MSI-docs“配置托管服务标识(MSI)。状态代码:400,状态消息:错误请求” 我在一个单独的测试订阅中运行这个功能,

  • 场景:我在同一个帐户下有一个EC2实例和一个S3 bucket,我在该EC2上的web应用程序希望访问该bucket中的资源。 在官方文档之后,我使用创建了一个IAM角色,并将其分配给EC2实例。根据我的理解,现在我的web应用程序应该可以访问桶。但是,经过试验,我似乎必须添加桶策略,如下所示: 否则我就被禁止进入。 但是,既然我已经向EC2实例授予了IAM角色,为什么还要使用这个桶策略呢?