amazon-web-services - S3 - 撤销拥有对象的“full_control”权限
问题描述
在编写 S3 服务器实现时,遇到了我在任何地方都找不到答案的问题。
例如,我是存储桶所有者,也是上传对象的所有者。
如果我撤销对象所有者(我自己)的“full_control”权限,我可以访问和修改该对象吗?以下示例中的预期行为是什么:
s3cmd setacl --acl-grant full_control:ownerID s3://bucket/object
s3cmd setacl --acl-revoke full_control:ownerID s3://bucket/object
s3cmd setacl --acl-grant read:ownerID s3://bucket/object
谢谢
解决方案
所以有来自 AWS 支持的官方回答:
对该问题的简短回答是肯定的,存储桶/对象所有者有权读取和更新存储桶/对象 ACL,前提是没有附加存储桶策略显式删除所有者的这些权限。例如,以下策略将阻止所有者对存储桶执行任何操作,包括更改存储桶的 ACL:
{ "Id": "Policy1531126735810", "Version": "2012-10-17", "Statement": [ { "Sid": "Example bucket policy", "Action": "s3:*", "Effect": "Deny", "Resource": "arn:aws:s3:::<bucket>", "Principal": "*" } ] }
但是,作为 root(存储桶所有者),您仍然有权删除该策略,然后恢复您作为存储桶所有者的权限以更新 ACL。
默认情况下,所有 S3 资源、存储桶、对象和子资源都是私有的;只有资源所有者(即创建它的 AWS 账户)才能访问资源 [1]。作为资源所有者(AWS 账户),您可以选择通过向用户附加访问策略来向其他用户授予权限。
示例:假设您创建了一个名为 -S3User1- 的 IAM 用户,并授予其在 S3 中创建存储桶并更新其 ACL 的权限。然后有问题的用户继续创建一个存储桶并将其命名为“s3user1-bucket”。之后,他进一步从 ACL 部分的根帐户中删除了 List 对象、Write 对象、Read bucket 权限和 Write bucket 权限。此时,如果您以 root 身份登录并尝试读取该存储桶中的对象,则会抛出“拒绝访问”错误。但是,作为 root,您将能够转到存储桶的“权限”部分并重新添加这些权限。
推荐阅读
- c# - 机器中的多任务与多进程
- reactjs - 日期选择器 npm 在本机反应中不起作用
- node.js - Svelte/Sapper - 遇到与 Luxon 和 Lodash 相关的构建错误
- android-fragments - 尝试在 kotlin 的片段中执行自动图像滑块,但是 runouithread 不起作用。任何可能的解决方案?
- java - 浏览器和邮递员返回结果,但由于 %26,Rest 模板返回 0 个结果
- django - 反向访问抽象模型中的 OneToOne 字段
- python - 如何在python中计算矩阵的-1/2幂
- language-agnostic - 固件和嵌入式软件之间的真正区别是什么
- python - pyqtgraph 不显示整个数据
- android - OnCreate() 方法会影响 Android Profiling 中的 Misc 时间吗?