如何在不使用IAM角色或IAM用户访问权限的情况下访问AWS资源

时间:2018-12-10 07:19:24

标签: amazon-web-services amazon-s3 amazon-ec2

假设我们有Ec2实例,并且有两个应用程序。只有一个应用程序应该能够访问S3存储桶和其他应用程序 应该不能访问S3存储桶。

1)对于此问题,我不想使用IAM用户访问密钥ID和秘密访问密钥,因为它很难管理。不建议这样做。 (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

2)但是我不能使用IAM角色。因为它与Ec2实例相关联,并且将允许访问该Ec2中的每个应用程序。

1 个答案:

答案 0 :(得分:0)

您可以应用存储桶策略来限制对HTTP标头请求的访问。使用aws:referer键允许s3:GetObject权限具有条件,该条件要求get请求必须源自特定网页。以下策略使用aws:Referer条件键指定StringLike条件。

"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests referred by www.example.com and example.com.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
}
},
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
}
}
]
}

AWS Reference Link