如何使用Boto在S3上设置一个密钥,以便以后不会意外地覆盖它?有没有办法使它成为只读的,或者如果你最终再次尝试写同一个键,至少会给你一些错误。在
我尝试过更改acl,包括密钥和bucket,但似乎没有任何区别。在
当我使用DragonDisk删除write
权限时(因此它变成了<Policy: roddds (owner) = READ, roddds (owner) = READ_ACP>
),但如果我运行keyfile.set_contents_from_string()
,它会将其更改回完全控制。在
我以主人的身份进入水桶。在
Tags:
所有者确实拥有不可剥夺的访问权限。但是,你可以做一些事情来保护自己。在
首先,在bucket上启用版本控制。那么,即使你删除了一个对象,它也不会真正被删除,除非你显式地删除对象versionId。您仍然可以找到旧版本并恢复它们。您可以找到有关bucket版本控制的更多信息here
其次,如果S3上的对象确实不想意外删除,请查看MFA删除功能。这是一个可以在版本控制的bucket上启用的功能。启用后,要删除任何对象,必须从MFA设备实际提供令牌。有关详细信息,请参见this。在
bucket
或object
的所有者将始终拥有FULL_CONTROL
,即使使用最严格的ACLprivate
:请参见S3 ACL Overview。如果不是这样,所有者如何删除他或她设置为只读的对象?在在将密钥写入S3之前,请检查该密钥是否存在:
或者,您可以尝试为Boto程序设置一个不同的AWS用户,并对bucket进行
READ
访问。然后,当您创建密钥(使用所有者凭据)时,将ACL设置为authenticated-read
。在相关问题 更多 >
编程相关推荐