第006题 - sap
复活节岛上的银河
题目翻译 (Question Translation)
English:
A retail company needs to provide a series of data files to another company, which is its business partner. These files are saved in an Amazon S3 bucket under Account A, which belongs to the retail company. The business partner company wants one of its IAM users, User_DataProcessor
, to access the files from its own AWS account (Account B).
Which combination of steps must the companies take so that User_DataProcessor
can access the S3 bucket successfully? (Choose two.)
中文翻译:
一家零售公司需要向另一家公司(其商业合作伙伴)提供一系列数据文件。这些文件存储在属于零售公司的 Amazon S3 桶(Bucket)中,该 S3 桶位于 Account A 中。合作伙伴公司希望其 AWS 账户(Account B)中的某个 IAM 用户 User_DataProcessor
能够访问这些文件。
公司需要采取哪两个步骤,才能让 User_DataProcessor
成功访问 S3 桶?(选择两项)
答案选项分析 (Answer Analysis)
选项 A:
Turn on the cross-origin resource sharing (CORS) feature for the S3 bucket in Account A.
分析:
- CORS (跨域资源共享) 仅用于支持 Web 浏览器中跨域请求的场景,而不是用于 IAM 用户之间的权限管理。
- 本题的场景涉及两个 AWS 账户的 IAM 用户访问权限,与 CORS 无关。 此选项无关紧要。
选项 B:
In Account A, set the S3 bucket policy to the following:
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::AccountABucketName/*"
}
分析:
- 此策略的确允许对桶的操作,但它未指定允许的
Principal
,因此无法将权限授予User_DataProcessor
。 - 桶策略必须包含
Principal
字段,以明确授予哪些账户或用户权限。 此选项不完整,无法解决问题。
选项 C:
In Account A, set the S3 bucket policy to the following:
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB:user/User_DataProcessor"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::AccountABucketName/*"
}
分析:
- 桶策略允许来自 Account B 的
User_DataProcessor
对 S3 文件执行读取操作(s3:GetObject
)以及对桶执行列出操作(s3:ListBucket
)。 Principal
字段指定了 Account B 的用户User_DataProcessor
,符合跨账户权限的要求。 此选项是解决问题的正确步骤之一。
选项 D:
In Account B, set the permissions of User_DataProcessor to the following:
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::AccountABucketName/*"
}
分析:
- 该策略授予 Account B 中的用户
User_DataProcessor
对 Account A 的 S3 资源的访问权限。 - 虽然这是在 Account B 中配置的用户策略,但 Account A 必须在其桶策略中显式授予权限(如选项 C 所述)。 此选项是解决问题的正确步骤之一。
选项 E:
In Account B, set the permissions of User_DataProcessor to the following:
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountB:user/User_DataProcessor"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::AccountABucketName/*"
]
}
分析:
Principal
字段不能在用户策略中使用。它仅适用于 S3 桶策略或 IAM 角色信任策略。- 用户策略应仅包含
Action
和Resource
,而不应包含Principal
。 此选项语法错误,不正确。
最佳答案 (Correct Answer)
答案:C 和 D
- C: 在 Account A 中设置 S3 桶策略,明确允许 Account B 的用户
User_DataProcessor
访问 S3 文件。 - D: 在 Account B 中为
User_DataProcessor
配置用户权限策略,允许其访问 Account A 的 S3 文件。
完整解决方案 (Comprehensive Explanation)
- 跨账户访问的机制:
- S3 桶属于 Account A,但
User_DataProcessor
是 Account B 中的用户。 - 这种情况下,跨账户访问需要两部分权限:
- 桶所有者(Account A)的 桶策略 必须授予 Account B 用户对桶的访问权限(选项 C)。
- Account B 用户自己的 用户策略 必须允许其访问 Account A 的桶(选项 D)。
- S3 桶属于 Account A,但
- 实现步骤:
- 在 Account A 设置桶策略(选项 C),授予跨账户访问权限。
- 在 Account B 设置用户策略(选项 D),授予
User_DataProcessor
所需权限。
- 为什么不能仅配置一个账户的策略?
- 如果只有桶策略而没有用户策略,Account B 的用户无法主动发起访问请求。
- 如果只有用户策略而没有桶策略,Account A 的桶会拒绝跨账户访问。
总结 (Summary)
答案:C 和 D 是正确的组合,能够确保 User_DataProcessor
成功访问 S3 桶中的文件,同时满足跨账户访问的安全性要求。