用于S3完全访问的Cloudformation AWS :: IAM :: Policy的正确语法是什么

时间:2019-06-26 04:50:18

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

在CloudFormation脚本中,我创建一个IAM :: Policy并将其应用于Kinesis Firehose。它具有以下PolicyDocument语句

Statement:
  - Effect: Allow
    Action:
      - 's3:AbortMultipartUpload'
      - 's3:GetBucketLocation'
      - 's3:GetObject'
      - 's3:ListBucket'
      - 's3:ListBucketMultipartUploads'
      - 's3:PutObject'
    Resource: arn:aws:s3:::mybucketname

这来自AWS文档。

当我使用“测试数据”进行测试时,它不允许任何数据通过。如果我编辑策略并添加S3FullAccess,它将开始允许测试数据通过S3存储桶。我也尝试过

Resource: arn:aws:s3:::mybucketname/*

并获得相同的结果。

如果我将CloudFormation脚本更改为此

Statement:
  - Effect: Allow
    Action: 's3:*'
    Resource: '*'

它允许测试数据通过。

第一句话怎么了?

2 个答案:

答案 0 :(得分:1)

这些操作在存储桶级别上运行,并且需要资源arn:aws:s3:::mybucketname

  • s3:GetBucketLocation
  • s3:ListBucket
  • s3:ListBucketMultipartUploads

这些操作在对象级别上运行,并且需要资源arn:aws:s3:::mybucketname/*(或特定前缀,例如arn:aws:s3:::mybucketname/invoices/*):

  • s3:AbortMultipartUpload
  • s3:GetObject
  • s3:PutObject

您可以通过查看{{3}上的资源类型列来确定操作是在 Bucket 还是 Object 级别上执行的}

您可以单独列出动作,也可以将它们与以下各项组合:

    Action:
      - 's3:AbortMultipartUpload'
      - 's3:GetBucketLocation'
      - 's3:GetObject'
      - 's3:ListBucket'
      - 's3:ListBucketMultipartUploads'
      - 's3:PutObject'
    Resource:
      - arn:aws:s3:::mybucketname
      - arn:aws:s3:::mybucketname/*

答案 1 :(得分:0)

查看是否可以尝试cloudkast。这是一个在线cloudformation模板生成器。