错误:应用VPC策略后,S3存储桶中的访问被拒绝

时间:2017-09-08 14:28:15

标签: amazon-web-services amazon-s3

我已将政策应用于allow only connections from my VPC

{
   "Version": "2012-10-17",
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::examplebucket",
                    "arn:aws:s3:::examplebucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:sourceVpc": "vpc-111bbb22"
         }
       },
       "Principal": "*"
     }
   ]
}

但现在我得到了#34;访问被拒绝"即使我尝试从给定VPC中的实例从AWS控制台访问它:

enter image description here

我已阅读https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/,但遗憾的是我使用了公司提供的联合登录信息,但我无法访问完整的root用户。

我的问题是为什么即使在VPC内部也无法访问存储桶?

我发现的一些类似问题 - Policy Denying Access On Amazon S3S3 VPC end point Bucket policy

2 个答案:

答案 0 :(得分:1)

您是否有用于S3设置的VPC端点?

在S3中有两种访问对象的方法。一个是通过AWS控制台,另一个是通过对S3对象的HTTPS调用。

如果您尝试从AWS控制台访问存储分区,则权限由您的IAM用户/角色和存储分区策略管理。您正在使用联合登录,因此我假设它是一个角色。

从VPC-111bbb222中的实例注销AWS控制台,尝试使用HTTPS URL访问该存储桶中的对象。

答案 1 :(得分:1)

要防止您的策略应用于AWS控制台中的联盟用户,您可以使用策略声明中的NotPrincipal元素而不是Principal将其列入“白名单”。例如:

{
   "Version": "2012-10-17",
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::examplebucket",
                    "arn:aws:s3:::examplebucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:sourceVpc": "vpc-111bbb22"
         }
       },
       "NotPrincipal": {
         "Federated": "arn:aws:iam::YOUR-AWS-ACCOUNT-ID:saml-provider/YOUR-PROVIDER-NAME"
       }
     }
   ]
}