安全架构 - 架构师面试题库

安全不是事后打补丁,而是架构设计的第一要素。本模块覆盖认证授权、API安全、零信任架构、密钥管理、安全开发生命周期、数据合规等核心主题,考察架构师在设计系统时是否将安全内建到架构中,而非作为附加组件。


难度标记

  • 🔵 高级(Senior):8-10年经验应该能答好
  • 🔴 专家(Expert):需要深入的实战经验和思考
  • ⚫ 大师(Master):开放性设计题,考察架构哲学和权衡能力

一、认证与授权体系(1-15题)

1. 🔵 OAuth 2.0的四种授权模式分别适用什么场景?为什么不推荐隐式模式?

答:OAuth 2.0 定义了四种获取Access Token的方式。

四种授权模式:

  1. 授权码模式(Authorization Code)

    • 流程:用户授权→获取code→用code换token
    • 适用:有后端的Web应用(最安全,推荐)
    • Token不暴露给浏览器
  2. 授权码+PKCE(Proof Key for Code Exchange)

    • 在授权码基础上增加code_verifier/code_challenge
    • 适用:移动App、SPA(替代隐式模式)
    • 防止授权码被截获后滥用
  3. 客户端凭证模式(Client Credentials)

    • 流程:客户端直接用client_id+client_secret换token
    • 适用:服务间调用(M2M,无用户参与)
    • 不涉及用户授权
  4. 隐式模式(Implicit) ——已不推荐:

    • 流程:授权后直接在URL fragment中返回token
    • 问题:token暴露在浏览器历史和Referer中,容易被截获
    • 替代方案:授权码+PKCE

为什么隐式模式不安全:

  • Access Token在URL中传输,可能被浏览器历史记录、HTTP Referer泄露
  • 无法使用Refresh Token(浏览器无法安全存储client_secret)
  • 无法验证token是否是返回给当前客户端的(token替换攻击)

2. 🔴 OIDC和OAuth 2.0的关系?ID Token和Access Token有什么区别?

答:OIDC是建立在OAuth 2.0之上的身份认证协议。

关系:

  • OAuth 2.0解决授权(Authorization):应用能访问你的哪些资源
  • OIDC解决认证(Authentication):你是谁
  • OIDC = OAuth 2.0 + ID Token + UserInfo Endpoint

ID Token vs Access Token:

维度 ID Token Access Token
用途 证明用户身份 访问资源
格式 必须是JWT 可以是任意格式
受众 客户端应用 资源服务器
内容 用户信息(sub/name/email) 权限范围(scope)

3. 🔴 JWT的安全风险有哪些?如何防御?

答:JWT虽然方便,但使用不当会引入严重安全风险。

常见攻击:

  1. 算法混淆攻击:将alg从RS256改为HS256,用公钥作HMAC密钥。防御:服务端硬编码验证算法
  2. None算法攻击:将alg设为none,移除签名。防御:禁用none算法
  3. 密钥爆破:HS256密钥较短时可暴力破解。防御:>=256bit密钥或用RS256
  4. Token泄露:JWT一旦签发无法撤销。防御:短过期+Refresh Token轮换+黑名单

最佳实践:

  • Access Token 15分钟过期,Refresh Token 7天
  • Refresh Token轮换(每次使用后颁发新的)
  • 使用RS256非对称算法
  • 不在JWT Payload中存储敏感信息

4. 🔵 SSO单点登录的实现方案有哪些?

答:SSO让用户在多个系统间只需登录一次。

方案 原理 适用场景
CAS 基于Ticket的重定向验证 传统企业内部系统
OIDC 基于Token的标准协议 现代微服务、跨域
SAML 2.0 基于XML断言 企业间联邦认证

5. 🔴 如何设计支持多租户的权限系统?RBAC和ABAC如何结合?

答:粗粒度用RBAC(用户→角色→权限),细粒度用ABAC(基于属性的动态策略)。数据权限实现:行级SQL过滤、列级脱敏、PostgreSQL RLS。


二、API安全与攻防(6-15题)

6. 🔵 常见Web安全漏洞及架构层面防御?

答:

  1. SQL注入:参数化查询,禁止拼接SQL
  2. XSS:输出编码 + CSP
  3. CSRF:CSRF Token + SameSite Cookie
  4. SSRF:URL白名单、禁止内网访问
  5. 越权:每个API校验数据归属
  6. 敏感数据泄露:HTTPS + 日志脱敏

7. 🔴 SSRF在微服务架构中为什么特别危险?

答:微服务在同一内网,服务间通常无需认证。SSRF可访问元数据服务(获取IAM凭证)、内部API、扫描内网。防御:URL白名单、禁止内网IP、DNS重绑定防护、出网代理、IMDSv2。

8. 🔴 API限流如何从安全角度设计?如何防御CC攻击和爬虫?

答:

  • 多维度限流:IP级、用户级、接口级、全局级
  • 行为分析:请求频率异常、UA特征、访问路径模式
  • 人机验证:验证码、滑块、设备指纹
  • WAF规则:基于规则和AI的恶意请求识别
  • 蜜罐API:设置诱饵接口检测爬虫

三、零信任架构(9-12题)

9. 🔴 什么是零信任架构?和传统边界安全有什么区别?

答:核心原则是”永不信任,始终验证”。传统安全假设内网可信,零信任假设所有网络都不可信。

核心组件:身份验证(mTLS/JWT)、设备信任、最小权限、微隔离(NetworkPolicy)、持续监控。

落地方案:Istio mTLS + AuthorizationPolicy、BeyondCorp模型、SPIFFE/SPIRE。

10. 🔴 mTLS如何保证微服务间通信安全?

答:mTLS要求通信双方都出示证书。Istio中istiod内置CA自动签发短期证书(24小时),Envoy自动完成握手,应用无感知。证书管理用cert-manager或Vault PKI。


四、密钥管理与数据安全(13-15题)

11. 🔴 如何设计密钥管理方案?什么是信封加密?

答:信封加密模型:Master Key(KMS中不导出)→ 加密 DEK → DEK加密实际数据。优势:Master Key不泄露、DEK轮换不需重加密数据、性能好。

12. 🔵 数据脱敏方案?静态脱敏和动态脱敏的区别?

答:静态脱敏替换后存储(测试环境),动态脱敏查询时实时处理(原始数据不变)。实现层次:数据库视图、中间件(ShardingSphere)、应用注解、网关层。


五、安全开发与合规(13-15题)

13. 🔴 SDL如何在CI/CD中落地?

答:各阶段集成:SAST扫描(SonarQube)→ SCA扫描(Snyk)→ 镜像扫描(Trivy)→ DAST扫描(ZAP)→ RASP运行时防护。

14. 🔴 SAST/DAST/SCA分别能发现什么漏洞?

答:SAST分析源码(注入、硬编码密钥)、DAST黑盒攻击运行应用(运行时漏洞)、SCA分析依赖(已知CVE、License)。

15. 🔴 GDPR/个保法对架构设计的影响?

答:数据最小化、存储限制(TTL)、用户删除权(含备份)、数据本地化(多区域部署)、同意管理、72小时泄露通知、Privacy by Design。