【发布时间】:2020-05-17 12:21:30
【问题描述】:
我已经与 AWS 合作多年,但我对一些高级网络概念不是很了解。
所以,我们有多个 AWS 账户。他们都没有公共互联网访问权限,但我们使用 Direct Connect 进行本地到 AWS 的连接。
我在账户 A 中有一个 S3 存储桶。 我在账户 A 中创建了一个 IAM 用户以及一个访问/密钥,并授予该 IAM 用户 s3:PutObject 对 S3 存储桶的权限。
我编写了一个简单的 Python 脚本来从本地列出此存储桶中的对象,它按预期工作。
然后我在账户 B 中运行的 EC2 实例上执行相同的 Python 脚本,我得到 “botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling ListObjects operation: Access Denied”。
我需要在账户 B 中为 S3 创建 VPC 端点吗?跨账户 IAM 角色是否在这里发挥作用?
【问题讨论】:
-
您在帐户 B 中使用什么凭据?如果您使用来自 EC2 实例的权限,那么您需要代入具有所需权限的跨账户角色。从技术上讲,您可以使用账户 B 中的 EC2 实例在账户 A 中创建的访问/密钥,但不建议这样做。如果您在存储桶上有一个存储桶策略限制访问,除非您在 VPC 内,那么事情会变得有点复杂。
-
@JasonWadsworth 我没有在账户 B 中使用 EC2 实例角色。我在账户 A 中使用属于 IAM 用户的访问/密钥。通过此设置,我的访问被拒绝。除非您在 VPC 内,否则存储桶上没有限制访问的存储桶策略。
-
您的存储桶策略是否设置为阻止公共访问?
-
docs.aws.amazon.com/AmazonS3/latest/user-guide/…。可能是您的问题是“仅限此账户的授权用户 – 访问权限与此账户中的 IAM 用户和角色以及 AWS 服务主体隔离,因为有一项授予公共访问权限的策略。”
-
因为您使用的是来自账户 A 的凭证,所以是的,假设您没有限制访问特定 VPC 的存储桶策略。
标签: amazon-web-services amazon-s3 amazon-iam amazon-vpc