AWS安全基础与IAM高频面试问题

IAM(Identity and Access Management)是 AWS 安全体系的基石。面试中围绕 IAM 策略结构、评估逻辑、角色信任、权限边界 四大核心展开。以下先给出策略评估的决策流程,再通过 3 个高频问答掌握回答框架。

请求上下文 Principal / Action / Resource 显式 Deny? 任何策略匹配 → Deny 显式 Allow? 身份/资源/权限边界 默认 Deny 隐式拒绝 决策输出 Allow / Deny 否 是 否

图: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 等跨账户访问必须显式指定 PrincipalS3 Bucket Policy 公开特定目录
信任策略(Trust Policy)IAM Role(仅)定义谁可以 AssumeRole跨账户角色、EC2 实例角色
权限边界(Permissions Boundary)IAM 用户或角色设定有效权限的上限(交集)委托管理、开发环境隔离

公司侧重点速查:

  • 电商/金融(安全合规要求高): 偏好权限边界 + SCP 多层隔离,常追问跨账户角色审计方法。
  • SaaS/创业公司(敏捷开发): 重视最小权限与自动化策略生成,常见 CI/CD 中动态注入 IAM 角色。
  • 大厂基础架构团队: 更关注策略评估性能(Condition 的字符串匹配成本)和复杂条件(多值键)。