【问题标题】:What is the correct syntax for Cloudformation AWS::IAM::Policy for S3 full accessCloudformation AWS::IAM::Policy S3 完全访问的正确语法是什么
【发布时间】:2019-11-07 23:04:31
【问题描述】:

在 CloudFormation 脚本中,我创建了一个应用于 Kinesis Firehose 的 IAM::Policy。它具有以下 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: '*'

它允许测试数据通过。

第一句话有什么问题?

【问题讨论】:

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


    【解决方案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

    您可以通过查看Actions, Resources, and Condition Keys for Amazon S3 - AWS Identity and Access Management上的资源类型列来确定操作是在Bucket还是Object级别进行的/p>

    您可以单独列出操作,也可以将它们与:

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

    【讨论】:

      【解决方案2】:

      看看你能不能试试cloudkast。它是一个在线的 cloudformation 模板生成器。

      【讨论】:

        猜你喜欢
        • 2018-05-04
        • 2021-07-29
        • 2017-07-03
        • 2013-02-27
        • 2020-02-01
        • 1970-01-01
        • 2017-05-27
        • 2020-06-24
        • 2019-07-08
        相关资源
        最近更新 更多