Q32 — AWS SAA-C03 第17章
第 32/89 题 | ← 返回第17章
Q1332. 一家公司在 AWS 账户 A 中使用 AWS Lambda 函数。该公司在 AWS 账户 B 中管理一个 Amazon S3 存储桶。账户 A 中的 Lambda 函数需要从账户 B 中的 S3 存储桶读取对象。
- A. 解决方案架构师需要设计一个安全的跨账户访问解决方案,并遵循最小权限原则。哪种解决方案能够满足这些要求? ✓
- B. 在账户 B 中创建一个 IAM 角色,该角色具有必要的 S3 权限,并与账户 A 建立信任关系。配置 Lambda 函数以承担此 IAM 角色。
- C. 在账户 A 中创建一个 IAM 角色,该角色具有必要的 S3 权限,并与账户 B 建立信任关系。在账户 B 中创建一个 IAM 用户,该用户有权担任此 IAM 角色。配置 Lambda 函数以使用此 IAM 用户。
- D. 在账户 B 中创建一个 IAM 用户,该用户具有必要的 S3 权限,并与账户 A 建立信任关系。在账户 A 中创建一个 IAM 用户,该用户有权接管账户 B 的用户。配置 Lambda 函数以使用帐户 A 用户。
- E. 在账户 B 中创建一个 IAM 角色,该角色具有必要的 S3 权限,并与账户 A 建立信任关系。在账户 A 中创建一个 IAM 用户,该用户有权担任此 IAM 角色。配置 Lambda 函数以使用此 IAM 用户。
正确答案: A. 解决方案架构师需要设计一个安全的跨账户访问解决方案,并遵循最小权限原则。哪种解决方案能够满足这些要求?
解析
正确答案:A在账户 B 中创建一个具有必要 S3 权限并与账户 A 建立信任关系的 IAM 角色。配置 Lambda 函数以承担此 IAM 角色。为什么这个方案是最佳选择?这种方法遵循最小权限原则,同时为账户 A 中的 Lambda 函数提供安全的跨账户 S3 访问。原因如下:账户 B(资源账户)中的 IAM 角色该角色在拥有 S3 存储桶的帐户(帐户 B)中创建,从而确保对权限进行精细控制。该角色仅被授予必要的 S3 权限(例如,s3:GetObject、s3:ListBucket)。与账户A的信任关系该角色的信任策略明确允许账户 A(或账户 A 中的 Lambda 函数执行角色)承担该角色。信任策略示例:JSON{“版本”:“2012-10-17”,“陈述”:[{“效果”:“允许”,"Principal": {"AWS": "arn:aws:iam::ACCOUNT_A_ID:role/LambdaExecutionRole"}, "Action": "sts:AssumeRole"}]}Lambda 函数承担角色账户 A 中的 Lambda 函数配置为使用 AWS 安全令牌服务 (STS) 在账户 B 中承担跨账户角色。Lambda 的执行角色必须有权限调用 sts:AssumeRole 来获取跨账户角色。Lambda 执行角色权限示例:JSON{“版本”:“2012-10-17”,“陈述”:[{“效果”:“允许”,"操作": "sts:AssumeRole","资源": "arn:aws:iam::ACCOUNT_B_ID:role/CrossAccountS3AccessRole" }]}安全与最小权限原则无硬编码凭证——IAM 角色使用临时安全令牌。权限极少——只有账户 A 中的 Lambda 函数才能担任该角色,且仅限于 S3 访问权限。可审计性——所有跨账户访问都会记录在 AWS CloudTrail 中。为什么其他选项不正确?B. 账户 A 中的 IAM 角色对账户 B 具有信任 + 账户 B 中的 IAM 用户 信任方向错误:该角色应该在账户 B(S3 存储桶所在的账户)中,而不是账户 A 中。不必要的 IAM 用户:使用 IAM 用户会引入长期凭证,违反最小权限原则。C. 两个账户中具有交叉假设的 IAM 用户IAM 用户不安全:IAM 用户拥有长期凭证,增加了风险。过于复杂:需要手动管理凭证,违反了最小权限原则。D. 在账户 B 中使用 IAM 角色 + 在账户 A 中使用 IAM 用户来承担角色:不必要的 IAM 用户:Lambda 函数应该使用其执行角色来承担跨账户角色,而不是使用 IAM 用户。额外复杂性:无服务器工作流不需要 IAM 用户。最终建议选项 A 是跨账户 S3 访问最安全、可扩展且 AWS 原生的解决方案。实施步骤在账户 B(S3 存储桶所有者)中:创建一个具有 S3 权限(s3:GetObject、s3:ListBucket)的 IAM 角色(CrossAccountS3AccessRole)。添加信任策略,允许账户 A 的 Lambda 执行角色接管该角色。在账户 A(Lambda 所有者)中:确保 Lambda 执行角色拥有跨账户角色的 sts:AssumeRole 权限。配置 Lambda 函数在访问 S3 时使用跨账户角色。测试权限:在 Lambda 函数中,调用 sts:AssumeRole 获取临时凭证。使用这些凭证从账户 B 中的 S3 存储桶读取数据。这样可以确保安全、权限最小的跨账户访问,而无需硬编码凭证。