为了实现这个目标,需要在S3存储桶策略中添加一个"Deny"语句来拒绝来自EC2实例的所有操作。以下是一个示例策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::Account-ID:root"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::EC2-Instance-ID:instance-profile/EC2-Role-Name"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket/*",
"arn:aws:s3:::my-bucket"
]
}
]
}
上面的策略允许根帐户访问存储桶并列出存储桶中的对象和存储桶位置。但是,它会拒绝来自名为"EC2-Role-Name"的EC2实例的所有其他操作。
请注意,在策略中使用的"EC2-Instance-ID"必须替换为您的实例ID。同样,"EC2-Role-Name"也必须替换为您的EC2实例角色的名称。
上一篇:AWSS3存储桶403错误