如何自动化 AWS s3 存储桶对象的权限
How to automate permissions for AWS s3 bucket objects
我有一个 s3 存储桶,多个帐户正在将对象放入其中。我希望拥有该存储桶的帐户也拥有这些文件。
该脚本使用 boto3 命名和放置对象,所以我可以在此脚本中设置权限吗?
或者是否有可以强制新文件所有权的 s3 策略?
我更喜欢桶政策,但我怀疑它是否可能。
文件名为
"account# and the date.json"
account_id = (boto3.client('sts').get_caller_identity()['Account'])
s3.Object('S3bucketname', account_id + "_" + date_fmt + ".json").put(Body=json.dumps(iplist))
编辑:我应该补充一点,试图从这个包含对象的存储桶中读取的进程有一个与之关联的角色,所以我假设我的委托人是
arn:aws:iam::ACCOUNT_ID_of_bucket:role/ROLENAME
我想您是在问如何对复制到存储桶中的任何对象实施 bucket-owner-full-control
。
从 S3 Bucket Owner Access 开始,您可以使用这样的政策:
{
"Statement":[
{
"Effect":"Allow",
"Principal":{"AWS":"111111111111"},
"Action":"s3:PutObject",
"Resource":["arn:aws:s3:::examplebucket/*"]
},
{
"Effect":"Deny",
"Principal":{"AWS":"111111111111"},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
}
}
]
}
第一部分是授予对存储桶的访问权限的地方。第二部分说 "Not allowed if bucket-owner-full-control
was not specified".
当其他帐户将文件复制到该存储桶时,他们应该指定 bucket-owner-full-control
ACL。 (我知道如何使用 boto3 客户端,但不知道如何使用 boto3 资源。)
boto3.resource('s3').ObjectAcl('S3BUCKETNAME', account_id + "_" + date_fmt + ".json").put(ACL='bucket-owner-full-control')
以上内容将使存储桶拥有者完全控制由具有此名称格式的 lambda 作业创建并放入存储桶中的任何对象。
我有一个 s3 存储桶,多个帐户正在将对象放入其中。我希望拥有该存储桶的帐户也拥有这些文件。
该脚本使用 boto3 命名和放置对象,所以我可以在此脚本中设置权限吗?
或者是否有可以强制新文件所有权的 s3 策略?
我更喜欢桶政策,但我怀疑它是否可能。
文件名为
"account# and the date.json"
account_id = (boto3.client('sts').get_caller_identity()['Account'])
s3.Object('S3bucketname', account_id + "_" + date_fmt + ".json").put(Body=json.dumps(iplist))
编辑:我应该补充一点,试图从这个包含对象的存储桶中读取的进程有一个与之关联的角色,所以我假设我的委托人是
arn:aws:iam::ACCOUNT_ID_of_bucket:role/ROLENAME
我想您是在问如何对复制到存储桶中的任何对象实施 bucket-owner-full-control
。
从 S3 Bucket Owner Access 开始,您可以使用这样的政策:
{
"Statement":[
{
"Effect":"Allow",
"Principal":{"AWS":"111111111111"},
"Action":"s3:PutObject",
"Resource":["arn:aws:s3:::examplebucket/*"]
},
{
"Effect":"Deny",
"Principal":{"AWS":"111111111111"},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
}
}
]
}
第一部分是授予对存储桶的访问权限的地方。第二部分说 "Not allowed if bucket-owner-full-control
was not specified".
当其他帐户将文件复制到该存储桶时,他们应该指定 bucket-owner-full-control
ACL。 (我知道如何使用 boto3 客户端,但不知道如何使用 boto3 资源。)
boto3.resource('s3').ObjectAcl('S3BUCKETNAME', account_id + "_" + date_fmt + ".json").put(ACL='bucket-owner-full-control')
以上内容将使存储桶拥有者完全控制由具有此名称格式的 lambda 作业创建并放入存储桶中的任何对象。