Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services S3-撤销“合同”;完全“U控制”;来自所属对象的权限_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services S3-撤销“合同”;完全“U控制”;来自所属对象的权限

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

在编写S3服务器实现时,遇到了一个问题,我在任何地方都找不到答案

例如,我是bucket所有者,也是上传对象的所有者

如果我撤销了对象所有者(我自己)的“完全控制”权限,我是否能够访问和修改该对象? 以下示例中的预期行为是什么:

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将拥有哪些权限?;)我不知道。你自己试试,让我们知道你发现了什么!