Amazon web services S3-撤销“合同”;完全“U控制”;来自所属对象的权限
在编写S3服务器实现时,遇到了一个问题,我在任何地方都找不到答案 例如,我是bucket所有者,也是上传对象的所有者 如果我撤销了对象所有者(我自己)的“完全控制”权限,我是否能够访问和修改该对象? 以下示例中的预期行为是什么:Amazon web services S3-撤销“合同”;完全“U控制”;来自所属对象的权限,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,在编写S3服务器实现时,遇到了一个问题,我在任何地方都找不到答案 例如,我是bucket所有者,也是上传对象的所有者 如果我撤销了对象所有者(我自己)的“完全控制”权限,我是否能够访问和修改该对象? 以下示例中的预期行为是什么: s3cmd setacl --acl-grant full_control:ownerID s3://bucket/object s3cmd setacl --acl-revoke full_control:ownerID s3://bucket/object s3cm
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
感谢最近,建议使用官方命令,而不是
s3cmd
通常应避免使用对象级权限来控制访问。最好将它们全部设置为“bucket owner完全控制”,然后使用bucket策略授予对bucket或路径的访问权限
如果希望提供对每个对象的访问,建议使用,这样可以对私有对象进行有时间限制的访问。一旦时间到期,URL将不再工作。您的应用程序将负责确定是否允许用户访问对象,然后生成预签名的URL(例如作为HTML页面上的链接或href)。因此AWS支持部门给出了正式答案: 这个问题的简短答案是“是的,桶/物体” 所有者有权读取和更新bucket/object ACL, 前提是没有明确附加的bucket策略 从所有者处删除这些权限。例如,以下 策略会阻止所有者在桶上做任何事情, 包括更改存储桶的ACL:
{
"Id": "Policy1531126735810",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example bucket policy",
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::<bucket>",
"Principal": "*"
}
]
}
{
“Id”:“Policy1531126735810”,
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“示例存储桶策略”,
“行动”:“s3:*”,
“效果”:“拒绝”,
“资源”:“arn:aws:s3::”,
“委托人”:“*”
}
]
}
但是,作为root用户(bucket所有者),您仍然有删除的权限
该策略将恢复您作为bucket所有者的权限
更新ACL
默认情况下,所有S3资源、存储桶、对象和子资源都是
私有的只有资源所有者,即
创建后,可以访问资源[1]。作为资源所有者(AWS)
帐户),您可以选择通过以下方式向其他用户授予权限:
将访问策略附加到用户
示例:假设您创建了一个名为-S3User1-的IAM用户,并给出了
它拥有在S3中创建bucket并更新其ACL的权限。中的用户
问题继续,创建一个bucket并命名它
“s3user1 bucket”。之后,他进一步移除列表对象,
写入对象、读取存储桶权限和写入存储桶权限
从ACL部分的根帐户。此时,如果您登录
作为root用户并尝试读取该bucket中的对象,一个“访问
将抛出“拒绝”错误。但是,作为root用户,您可以访问
单击bucket的“权限”部分并添加这些权限
回来
这很有趣。你能提供一些链接来得出这个结论吗?因为根据我的经验,我认为是另一种方式。拥有原子访问权对于避免任何事故(在大多数情况下)非常有用。对象级权限只能向其他AWS用户授予简单权限。它对于提供基于web的访问没有用处。我在上面添加了另一个选项。谢谢你的回答John。谢谢@JohnRotenstein,我仍然没有得到答案如果我撤销“完全控制”权限,bucket owner将拥有哪些权限?;)我不知道。你自己试试,让我们知道你发现了什么!