2017-09-08 101 views
2

后,我已申请一项政策,allow only connections from my VPC错误:访问在S3桶被拒绝申请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": "*" 
    } 
    ] 
} 

但现在我得到“拒绝访问”甚至当我尝试从AWS控制台访问在给定的VPC实例:

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

+0

在该EC2实例上安装awscli,然后使用“aws s3 ls examplebucket”测试S3访问。 – jarmod

+0

我使用联合登录(我使用我公司的AD帐户登录)。我无权访问root用户或IAM用户。我不确定是否有权访问AWS CLI。 – sashoalm

回答

1

你有一个VPC端点S3设置?

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

如果您尝试从AWS控制台访问存储桶,则权限将由您的IAM用户/角色和存储桶策略进行管理。您正在使用联合登录,因此我认为这是一个角色。

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

+0

请注意,我在策略中使用'aws:sourceVpc',而不是'aws:sourceVpce'。我正在遵循教程“限制访问特定的VPC”。 “限制访问特定VPC端点”的部分在上面。 – sashoalm

+0

顺便说一句,我实际上可以从VPC访问存储桶中的文件,但我无法管理存储桶(如添加其他文件,更改策略等)。我也试图遵循此答案 - https:// stackoverflow.com/a/43372890/492336,但迄今为止失败。 – sashoalm

+0

如果您可以访问存储桶中的对象,那么您可能有一个允许它的ACL。您可以在“权限”选项卡中向我们显示任何ACL吗? – AppleBaggins

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" 
     } 
    } 
    ] 
}