amazon-web-services - 如何拒绝任何资源对 S3 存储桶的未加密上传?
问题描述
我想防止所有资源的未加密上传到 S3 存储桶。我正在尝试使用 S3 策略执行此操作,如下所示:
PolicyS3BucketPolicy:
Type: AWS::S3::BucketPolicy
DependsOn: PolicyS3Bucket
Properties:
Bucket: !Ref PolicyS3Bucket
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Deny
Sid: DenyUnEncryptedObjectUploads
Action: "s3:PutObject"
Resource: "*"
Principal:
AWS: "*"
Condition:
StringNotEquals:
"s3:x-amz-server-side-encryption": "aws:kms"
PolicyS3Bucket
为简洁起见,省略了资源定义。
当我尝试部署我的服务时,我收到此错误:
PolicyS3BucketPolicy - Policy has invalid resource (Service: Amazon S3; Status Code: 400; Error Code: MalformedPolicy; Request ID: 5E5PR65Y1JY805Q0; S3 Extended Request ID: hxBAxt2qqqkgMRlF9JS5J0LFJ0EPxHU3mhIjYZ/x1kp+WT5FdlHSKEpY97x0gT2ZE0KXKMqzyKo=; Proxy: null).
如何设置该Resource
值以使此策略拒绝所有资源?
解决方案
我认为问题在于您的 S3 存储桶策略表明:
Resource: "*"
它的范围应该是实际的存储桶,例如:
Resource: "arn:aws:s3:::mybucket/*"
如果您使用的是无服务器框架,或者类似以下内容:
Resource: arn:aws:s3:::${self:custom.config.myBucketName}/*
推荐阅读
- dart - 如何在 Flutter 中发送带有附件的邮件?
- rest - RESTful API 按类型或 id 访问子资源
- asp.net - 配置方法startup.cs asp.net core
- rest - 谷歌设备认证后转发用户
- azure - Azure 逻辑应用失败条件
- api - 如何在 Java 8 流 api foreach 中继续或中断
- azure - 为 VM 扩展自定义 Linux WAagent
- rx-java - 使用 rx 链接时 Android 测试失败
- javascript - 如何将小部件名称传递给 Tabris 中的函数?
- android - 将背景图像添加到 Android 工具栏