AWS安全基础与IAM高频面试问题
IAM(Identity and Access Management)是 AWS 安全体系的基石。面试中围绕 IAM 策略结构、评估逻辑、角色信任、权限边界 四大核心展开。以下先给出策略评估的决策流程,再通过 3 个高频问答掌握回答框架。
图:IAM 策略评估三阶段——显式 Deny 优先,显式 Allow 其次,默认隐式拒绝
面试问答卡片
1. IAM 策略的基本结构是怎样的?如何编写一条只允许启动 EC2 实例的策略?
- 考察点: 是否掌握 JSON 策略的六大元素(Version、Effect、Action、Resource、Condition、Sid),以及最小权限原则的落地。
- 回答框架: 先说明策略类型(身份策略/资源策略),再按 Effect→Action→Resource→Condition 依次阐述,最后举简洁例子。
- 示例回答: “策略 JSON 包含 Version、Statement 数组。例如允许 StartInstances 的 Identity Policy:Effect Allow、Action ec2:StartInstances、Resource arn:aws:ec2:region:account:instance/*。同时用 Condition 限制标签或 VPC,实现最小权限。”
- 可能追问: “Condition 的 StringEquals 和 ArnLike 有什么区别?”“资源策略和身份策略的评估顺序?”
- 避坑提醒: 不要遗漏 Version 字段(当前推荐 2012-10-17)或写错 Resource 通配符;注意 ec2:StartInstances 是 API 操作,不是控制台操作。
2. 角色信任策略(Trust Policy)与权限策略的区别是什么?如何设计跨账户角色访问?
- 考察点: 是否理解 IAM Role 的双策略体系(信任策略定义谁能 AssumeRole,权限策略定义该角色能做什么)。
- 回答框架: 先区分两种策略的用途,再阐述跨账户原理:在目标账户创建 Role 并附加 Trust Policy(指定源账户 ARN),源账户用户附加 sts:AssumeRole 权限。
- 示例回答: “信任策略指定 Principal(如 AWS 账户 ID),仅允许特定主体调用 AssumeRole。权限策略则授予角色 S3 等操作。跨账户时目标角色 Trust Policy 放行源账户,源用户通过 AssumeRole 获取临时凭证。”
- 可能追问: “如何防止混淆代理人攻击?”“使用 ExternalId 的条件是什么?”“角色最大会话时长如何设置?”
- 避坑提醒: 信任策略中不要写成 Principal: " * " 除非是服务角色;跨账户务必添加 Condition(如 aws:SourceAccount)防止混淆代理人。
3. 什么是权限边界(Permissions Boundary)?它如何与身份策略共同控制最终权限?
- 考察点: 是否理解权限边界作为“最高上限”的机制,以及它与身份策略、SCP 的叠加关系。
- 回答框架: 先定义权限边界(用托管策略限制用户/角色的最大权限),再说明评估顺序:边界策略 ∩ 身份策略 = 有效权限;边界外的操作即使显式 Allow 也会被拒绝。
- 示例回答: “权限边界是一种高级访问限制,附加在 IAM 实体上。例如允许 S3 全部操作,但边界仅允许 ListBucket,则最终只能 ListBucket。边界必须与身份策略同时使用,不可单独生效。”
- 可能追问: “权限边界和 SCP(服务控制策略)的区别是什么?”“边界可以跨账户使用吗?”“如何用边界实现委托管理?”
- 避坑提醒: 容易混淆边界与 SCP:SCP 作用于 OU/账户,边界作用于具体实体;边界不会覆盖显式 Deny(Deny 始终优先)。
知识结构对比表:IAM 策略类型与生效范围
| 策略类型 | 绑定的实体 | 生效逻辑 | 典型使用场景 |
|---|---|---|---|
| 身份策略(Identity Policy) | 用户、组、角色 | 附加在主体上,Allow/Deny 直接控制 | 开发者权限、只读权限 |
| 资源策略(Resource Policy) | S3 Bucket、KMS Key、SQS 等 | 跨账户访问必须显式指定 Principal | S3 Bucket Policy 公开特定目录 |
| 信任策略(Trust Policy) | IAM Role(仅) | 定义谁可以 AssumeRole | 跨账户角色、EC2 实例角色 |
| 权限边界(Permissions Boundary) | IAM 用户或角色 | 设定有效权限的上限(交集) | 委托管理、开发环境隔离 |
公司侧重点速查:
- 电商/金融(安全合规要求高): 偏好权限边界 + SCP 多层隔离,常追问跨账户角色审计方法。
- SaaS/创业公司(敏捷开发): 重视最小权限与自动化策略生成,常见 CI/CD 中动态注入 IAM 角色。
- 大厂基础架构团队: 更关注策略评估性能(Condition 的字符串匹配成本)和复杂条件(多值键)。