【问题标题】:What IAM policy do I need to sign an browser-based POST policy document?我需要什么 IAM 策略来签署基于浏览器的 POST 策略文档?
【发布时间】:2016-11-15 01:55:30
【问题描述】:

我的目标是让浏览器只将表单上传到 S3 存储桶中。我按照这里的说明进行操作:

http://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTExamples.html

在其中,需要创建一个策略文档,然后使用秘密访问密钥对其进行签名。如果我完全按照说明操作,使用我的管理员级别帐户(例如,访问所有内容),一切正常。

我希望有一个特定此功能的用户帐户,并使用该用户的凭据签署文档。这样,我可以随时轻松地弃用密钥(或整个用户)。但是,说明中并未准确列出(我也无法从 google/experimentation 中找出)此用户在 IAM 中需要什么权限才能签署文档。我什至尝试过与下面的策略一样宽(我将存储桶名称重命名为 my-bucket),这足以让用户登录 S3 的 Web 界面并完全从那里管理存储桶。但是,使用上传表单仍然会导致访问被拒绝。请注意,我希望的行为是允许此用户将文件上传到特定存储桶中的特定文件夹。不删除、获取等。

{
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::my-bucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::my-bucket/*"
      }
   ]
}

【问题讨论】:

  • "您在表单中指定的每个表单字段(AWSAccessKeyId、签名、文件、策略和具有 x-ignore- 前缀的字段名称除外)必须包含在条件”(在表格中包含的政策文件中)。您的表单中是否有任何字段不在您生成的政策文档中?
  • 不,我相信它是洁净的。如果我使用管理员用户的密钥和秘密签署政策文档,它就可以工作。我只想创建一个仅有权签署此文档的用户。

标签: amazon-web-services amazon-s3


【解决方案1】:

我遇到了同样的问题,但是当我阅读此问题以找到答案时,我再次尝试了它并且它适用于您的政策,我之前尝试了几次但没有成功。这是我的信息:我正在使用的上传是到云端的,所以我认为缓存是问题所在,在用你使用的策略更改策略后,我使我的分发无效,它对我有用,我希望你解决了你的问题问题!!

【讨论】:

  • 您能否澄清一下您是如何清除缓存的,以便将来偶然发现这篇文章的读者可能会在您的答案中找到价值?
  • 当然,我使用了问题的策略,但是在从云端收到不允许的错误后,我在 Cloudfront-> 使用通配符(*)的分发中创建了一个无效,它有效,我不知道如果 profesor_tortuga 使用的是 cloudfront,但我认为这可能有助于将来的参考,我还注意到其他一些事情:如果您在开发环境中使用 angular-fullstack,请确保在更改密钥和密钥 id 后再次部署您的服务器(gulp 服务)只是为了确保所有更改都已保存(如果密钥在服务器上并且密钥 ID 在客户端上)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 2023-02-04
  • 2012-07-20
  • 2020-10-01
  • 2021-10-16
  • 2018-12-08
  • 2022-08-17
相关资源
最近更新 更多