【问题标题】:How restrict public access to S3 Bucket in AWS SAM Template如何在 AWS SAM 模板中限制对 S3 存储桶的公开访问
【发布时间】:2019-06-18 17:50:02
【问题描述】:

我目前正在尝试使用 SAM 模板为云形成部署定义一个 s3 存储桶。按照文档,我认为我正确设置了 PublicAccessBlockConfiguration:

(yaml)
    S3Bucket1:
        Type: AWS::S3::Bucket
        Properties:
          BucketName: abl-ar-report-container 
          BucketEncryption: 
            ServerSideEncryptionConfiguration: 
            - ServerSideEncryptionByDefault:
                SSEAlgorithm: AES256
          PublicAccessBlockConfiguration:
            BlockPublicAcls : true
            BlockPublicPolicy : true
            IgnorePublicAcls : true
            RestrictPublicBuckets : true

但是,当我部署时,我收到以下消息:

ID 为 [S3Bucket1] 的资源无效。没有为 AWS::S3::Bucket 类型的资源定义属性 PublicAccessBlockConfiguration

我确实在 git 上看到了一些对模板变体的引用 我将 AWS 模板声明为:

AWSTemplateFormatVersion: 2010-09-09
Description: A template for a Node.js-based application 

Transform: AWS::Serverless-2016-10-31

进一步挖掘后,我认为我将 CF 模板语法与 SAM 语法混合在一起。谁能指出这些设置的正确文档或语法?

【问题讨论】:

  • 这是CFN模板还是SAM模板?似乎不完整。它验证了吗?
  • 这是来自 SAM 模板的 sn-p。这是 s3 存储桶的完整定义。如果我删除 PubicAccessBlockConfiguration 部分,它将部署 s3 存储桶。

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


【解决方案1】:

我建议使用默认设置创建 s3bucket。默认情况下,S3 被阻止进行公共访问。并且只需将 IAM 角色/策略关联到 reads3 对象以进行 CFN 部署

【讨论】:

  • 我用这个模板创建存储桶没有问题
【解决方案2】:

我对此进行了深入研究,目前它是 SAM 中的一个错误。这是GitHub issue。有一个patch 已被合并,应该在v1.10.0 中修复。

问题的根源在于SAM中的s3模型有一个硬编码的属性列表,而PublicAccessBlockConfiguration比较新,还没有添加。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-04-22
    • 2016-11-16
    • 1970-01-01
    • 2020-08-11
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多