Amazon web services 具有限制访问s3存储桶中文件夹的策略的角色被忽略
我已将此策略(称为“备份”)分配给一个角色(称为“同步”):Amazon web services 具有限制访问s3存储桶中文件夹的策略的角色被忽略,amazon-web-services,amazon-s3,amazon-ec2,amazon-iam,Amazon Web Services,Amazon S3,Amazon Ec2,Amazon Iam,我已将此策略(称为“备份”)分配给一个角色(称为“同步”): 在将包含备份策略的同步角色分配给实例之前,该实例无法访问bucket中的资源。这是意料之中的 将实例分配给同步角色后,该实例可以访问策略中指定文件夹中的对象。这是意料之中的 但是,出乎意料的是,实例现在也可以访问bucket中的所有对象,无论它们在哪个文件夹中。这就像政策中的限制被忽略了一样 bucket不授予公众访问权限 更新 问题似乎与我制定的桶策略有关: { "Version": "
{
"Version": "2012-10-17",
"Id": "Policy1607462323232",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::My_Bucket",
"arn:aws:s3:::My_Bucket/*"
],
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-aaaaadddddfffff"
}
}
}
]
“可以访问对象”是什么意思?他们可以只列出对象,还是也可以获取和放置对象?您能否确认添加此策略是情况1和情况3之间的唯一变化?听起来确实有些奇怪。在使用此策略将实例添加到角色后,该实例可以在命令行上获取/放置并与整个aws s3 bucket同步。将角色添加到实例是唯一的更改。我通过使用“Get/PutObject”操作删除第二条语句来修改策略,它仍然允许我下载对象并将其上载到bucket中的任何文件夹。超级奇怪。你是说策略现在只授予ListBucket,但实例仍然可以获取/放置对象?实例是否可能使用保存在实例上的凭据(在
~/.aws/credentials
中)而不是IAM角色?它必须从某处获取权限。只要请求来自VPC端点,Bucket策略就向任何人授予List/Get/Put。这是可添加的,因此如果IAM角色或bucket策略授予该权限,则实例将能够访问该bucket。
{
"Version": "2012-10-17",
"Id": "Policy1607462323232",
"Statement": [
{
"Sid": "Stmt1",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::My_Bucket",
"arn:aws:s3:::My_Bucket/*"
],
"Condition": {
"StringEquals": {
"aws:SourceVpce": "vpce-aaaaadddddfffff"
}
}
}
]