安全架构 - 架构师面试题库
安全不是事后打补丁,而是架构设计的第一要素。本模块覆盖认证授权、API安全、零信任架构、密钥管理、安全开发生命周期、数据合规等核心主题,考察架构师在设计系统时是否将安全内建到架构中,而非作为附加组件。
难度标记
- 🔵 高级(Senior):8-10年经验应该能答好
- 🔴 专家(Expert):需要深入的实战经验和思考
- ⚫ 大师(Master):开放性设计题,考察架构哲学和权衡能力
一、认证与授权体系(1-15题)
1. 🔵 OAuth 2.0的四种授权模式分别适用什么场景?为什么不推荐隐式模式?
答:OAuth 2.0 定义了四种获取Access Token的方式。
四种授权模式:
授权码模式(Authorization Code):
- 流程:用户授权→获取code→用code换token
- 适用:有后端的Web应用(最安全,推荐)
- Token不暴露给浏览器
授权码+PKCE(Proof Key for Code Exchange):
- 在授权码基础上增加code_verifier/code_challenge
- 适用:移动App、SPA(替代隐式模式)
- 防止授权码被截获后滥用
客户端凭证模式(Client Credentials):
- 流程:客户端直接用client_id+client_secret换token
- 适用:服务间调用(M2M,无用户参与)
- 不涉及用户授权
隐式模式(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虽然方便,但使用不当会引入严重安全风险。
常见攻击:
- 算法混淆攻击:将alg从RS256改为HS256,用公钥作HMAC密钥。防御:服务端硬编码验证算法
- None算法攻击:将alg设为none,移除签名。防御:禁用none算法
- 密钥爆破:HS256密钥较短时可暴力破解。防御:>=256bit密钥或用RS256
- 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安全漏洞及架构层面防御?
答:
- SQL注入:参数化查询,禁止拼接SQL
- XSS:输出编码 + CSP
- CSRF:CSRF Token + SameSite Cookie
- SSRF:URL白名单、禁止内网访问
- 越权:每个API校验数据归属
- 敏感数据泄露: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。