入口、云资源与安全
用户打开一个网站时,请求会经过域名解析、网络连接、加密协商、边缘节点、负载均衡、反向代理,最后才到应用。云平台把这些环节拆成许多可配置资源。配置错误往往不会表现为“代码异常”,而是超时、证书错误、403、502、跨区延迟或悄悄公开的数据。
1. 一次外部请求的路径
跳转到“1. 一次外部请求的路径”浏览器 → DNS → 公网 IP / Anycast 边缘 → TLS 终止 → WAF / CDN → 负载均衡 → 反向代理 / API 网关 → 应用服务 → 数据库 / 缓存 / 对象存储每一层都可以健康,同时整条链路失败。排查时先确定请求停在哪里,不要从最底层代码开始猜。
2. DNS
跳转到“2. DNS”DNS 把域名解析为 IP 或其他记录。常见记录:
| 记录 | 作用 |
|---|---|
| A | 域名到 IPv4 地址 |
| AAAA | 域名到 IPv6 地址 |
| CNAME | 域名别名到另一个域名 |
| MX | 邮件服务器 |
| TXT | 验证、SPF、DKIM 等文本信息 |
| NS | 该域由哪些名称服务器负责 |
2.1 递归解析
跳转到“2.1 递归解析”浏览器/系统缓存 → 本地递归解析器 → 根服务器 → 顶级域服务器 → 权威名称服务器 → 返回记录并缓存TTL 决定缓存多久。修改记录后,旧值可能在 TTL 到期前继续存在。迁移服务时可以先降低 TTL,切换后再恢复。不要假设“保存 DNS 后全世界立刻生效”。
2.2 常见故障
跳转到“2.2 常见故障”- 记录值错误或缺少末尾的点。
- CNAME 与其他记录冲突。
- 域名过期、NS 配置错误。
- 混合 IPv4/IPv6,客户端选到不可用路径。
- 内网解析与公网解析不同。
- 证书覆盖的域名与解析目标不一致。
3. HTTPS 与 TLS
跳转到“3. HTTPS 与 TLS”TLS 解决三件事:确认服务器身份、协商密钥、加密传输。HTTPS 是 HTTP over TLS。
3.1 证书
跳转到“3.1 证书”证书由受信任的证书颁发机构签发,把域名与公钥绑定。客户端验证:
- 证书是否在有效期内。
- 域名是否匹配。
- 证书链是否能追溯到受信任根证书。
- 签名是否正确。
- 证书是否被吊销或存在其他策略问题。
证书过期、链不完整和域名不匹配是常见故障。自动续期和到期告警应纳入运维,不要等到浏览器报错。
3.2 TLS 握手
跳转到“3.2 TLS 握手”现代 TLS 通常包含:
- 客户端与服务端协商协议版本和加密套件。
- 服务端提供证书。
- 客户端验证证书。
- 双方建立共享密钥。
- 后续应用数据加密传输。
TLS 1.3 简化了握手并默认更强的安全属性。旧协议和弱套件可能被合规或浏览器拒绝。证书可通过 SNI 为不同域名提供不同配置。
3.3 TLS 终止位置
跳转到“3.3 TLS 终止位置”可以在 CDN、负载均衡、网关或应用终止 TLS。终止后内部可能仍使用 HTTP,需确保网络隔离和可信链路。若应用需要原始协议、客户端 IP 或端到端加密,要正确处理转发头或做二次加密。
4. 反向代理、负载均衡与网关
跳转到“4. 反向代理、负载均衡与网关”4.1 反向代理
跳转到“4.1 反向代理”反向代理代表服务器接收客户端请求,常见能力:
- 路由到不同后端。
- 终止 TLS。
- 压缩、缓存、重写路径和头部。
- 限制请求体、超时和并发。
- 隐藏内部拓扑。
代理配置中的路径前缀、尾部斜杠和重写规则很容易出错。转发时还要保留或设置 Host、X-Forwarded-For、X-Forwarded-Proto 和请求 ID,并只信任来自已知代理的头部。
4.2 负载均衡
跳转到“4.2 负载均衡”| 层 | 依据 | 特点 |
|---|---|---|
| L4 | IP、端口、连接 | 快,不理解 HTTP,适合 TCP/UDP |
| L7 | 路径、头部、Cookie | 路由灵活,可做灰度与内容分流 |
常见算法:
- 轮询:依次分配。
- 加权轮询:按实例能力分配。
- 最少连接:给当前连接较少的实例。
- 一致性哈希:同一 key 尽量落到同一实例。
健康检查决定实例是否进入流量。检查太宽松会把流量送给故障实例,太严格会在依赖抖动时把所有实例摘掉。会话粘滞能简化有状态应用,但会降低均衡效果并增加故障影响。
4.3 API 网关与 WAF
跳转到“4.3 API 网关与 WAF”API 网关集中处理认证、限流、路由、协议转换、日志和配额。它不应变成所有业务逻辑的堆积处。WAF 过滤常见 Web 攻击,但不能替代输入校验、权限和代码安全。
CDN 缓存静态内容并靠近用户。动态内容、个性化响应和敏感数据要谨慎缓存,缓存键必须包含语言、租户和身份相关维度。
5. 云平台的基本资源模型
跳转到“5. 云平台的基本资源模型”| 资源 | 作用 | 关键问题 |
|---|---|---|
| 虚拟机 | 完整操作系统实例 | 补丁、扩缩容、启动时间 |
| 容器服务 | 运行和管理容器 | 网络、镜像、编排、权限 |
| 无服务器函数 | 按事件执行代码 | 冷启动、时长、连接、供应商绑定 |
| 托管数据库 | 数据库运维由平台承担 | 连接、备份、参数、版本、成本 |
| 对象存储 | 保存文件和静态资源 | 访问策略、生命周期、一致性 |
| 块存储 | 挂载给实例的磁盘 | 容量、IOPS、快照、可用区 |
| 消息队列 | 异步通信 | 重复、顺序、保留和积压 |
| 密钥服务 | 保存密钥和证书 | 权限、轮换、审计 |
5.1 区域与可用区
跳转到“5.1 区域与可用区”区域是地理范围,可用区是区域内相对独立的设施。多可用区提高单机房故障容忍,多区域提高区域级容灾,但会带来跨区延迟、数据复制和成本。
不要把“部署在两个可用区”误解为“自动全局一致”。数据库、对象存储和缓存各有复制模型,需要分别确认。
5.2 共享责任
跳转到“5.2 共享责任”云厂商负责物理设施、虚拟化层和部分托管服务的安全;用户负责身份、配置、数据、应用和访问策略。托管数据库不会自动替你设置最小权限,对象存储也不会因为“在云上”就默认安全。
6. VPC 与网络隔离
跳转到“6. VPC 与网络隔离”虚拟私有云(VPC)提供隔离的地址空间。子网划分可用区与路由,安全组和网络 ACL 控制流量。
常见结构:
公网 → 公网子网:负载均衡/入口 → 私网子网:应用服务 → 私有子网:数据库、缓存、内部服务原则:
- 数据库和缓存不直接暴露公网。
- 只有必要的入口子网拥有公网路由。
- 出站访问通过 NAT 或代理并受审计。
- 管理端口通过堡垒机、VPN 或私有连接访问。
- 安全组按最小端口和来源开放,不使用
0.0.0.0/0图省事。 - 内网服务之间也应有身份认证和授权,不能把“内网”当安全边界。
私有端点可以把托管服务接入 VPC,减少公网暴露。跨 VPC、跨账号和本地数据中心连接需要明确路由、DNS 和信任关系。
7. IAM:身份与权限
跳转到“7. IAM:身份与权限”IAM(身份与访问管理)管理“谁可以对什么资源做什么操作”。核心概念通常包括:
- 主体:用户、组、服务角色、外部身份。
- 策略:允许或拒绝哪些操作。
- 资源:被访问的存储桶、数据库、队列等。
- 角色:可被临时承担的权限集合。
7.1 最小权限
跳转到“7.1 最小权限”最小权限不是“只给只读”,而是根据任务给刚好需要的操作和资源范围。常见错误:
- 应用使用管理员账号。
- 开发和生产共用同一组凭据。
- 密钥写进代码或镜像。
- 权限策略使用通配符资源。
- 离职或项目结束后权限不回收。
服务应使用工作负载身份或短期凭据,而不是长期静态密钥。角色权限按环境和任务拆分;敏感操作要求更严格的审批与审计。
7.2 策略判断
跳转到“7.2 策略判断”云 IAM 往往同时存在账号级策略、资源策略、权限边界、组织策略和会话策略。最终权限不是只看一处。排查 403 时要确认:
- 调用者身份是否正确。
- 操作的准确名称是什么。
- 资源 ARN/路径是否匹配。
- 是否有显式拒绝。
- 是否缺少 KMS 解密、日志写入或跨服务授权。
- 临时凭据是否过期。
8. 对象存储与 CDN 安全
跳转到“8. 对象存储与 CDN 安全”对象存储适合大文件和静态资源,但错误配置可能导致公开泄露。
检查项:
- 默认阻止公共访问是否开启。
- 桶策略是否只允许必要主体和操作。
- 上传对象的所有者与 ACL 是否明确。
- 静态网站托管是否误暴露私有文件。
- 预签名 URL 是否有短有效期和最小权限。
- 是否开启服务端加密、版本控制和访问日志。
- 生命周期是否清理临时文件和旧版本。
CDN 缓存公开内容时,要防止把带身份信息的响应缓存给其他用户。缓存键、Vary、Cache-Control 和源站认证必须一起设计。
9. 基础设施即代码
跳转到“9. 基础设施即代码”IaC 用代码描述云资源,常见工具包括 Terraform、CloudFormation、Pulumi 和 Kubernetes manifest。
好处:
- 变更有版本、可审查、可回滚。
- 环境可重复创建。
- 资源关系能被工具分析。
- 减少控制台手工漂移。
风险:
- state 文件包含敏感信息和资源映射,必须加密和限制访问。
- 手工修改会造成 drift,需要检测和收敛。
plan与真实环境不符时可能误删资源。- provider 或模块升级可能改变行为。
- 代码合并不等于资源已经安全应用。
代码修改 → 格式/校验 → plan → 审查差异 → 应用 → 验证 → 记录状态与变更生产环境应限制谁能应用变更,使用审批和审计。密钥、证书和数据库密码应通过密钥管理引用,不直接写在 state 或代码里。
10. 常见故障定位
跳转到“10. 常见故障定位”| 现象 | 优先检查 |
|---|---|
| 域名无法解析 | DNS 记录、NS、TTL、解析器缓存 |
| 证书错误 | 有效期、域名、证书链、SNI |
| 连接超时 | 安全组、路由、NAT、目标端口、健康检查 |
| 403 | 身份、策略、资源策略、显式拒绝、KMS 权限 |
| 404 | 路由、路径重写、后端前缀、对象键 |
| 502/504 | 后端不可达、应用崩溃、超时、代理缓冲 |
| CDN 返回旧内容 | TTL、缓存键、刷新、源站缓存头 |
| 内网可访问但公网不行 | 子网路由、公网 IP、负载均衡监听 |
检查清单
跳转到“检查清单”- DNS 记录、TTL、IPv4/IPv6 与证书是否匹配。
- TLS 证书是否自动续期,证书链和协议版本是否符合要求。
- 代理与负载均衡是否正确传递主机、协议、客户端 IP 和请求 ID。
- 健康检查是否能识别真实不可用,又不会因依赖抖动全量摘除。
- 数据库、缓存和管理端口是否限制在私网。
- 安全组是否最小开放,出站访问是否受控。
- 应用是否使用短期身份和最小权限,而非管理员长期密钥。
- 对象存储是否阻止公开访问,预签名 URL 是否短期有效。
- IaC state 是否加密、锁定和限制访问,是否检测 drift。
- 关键云资源是否有日志、告警、备份和恢复流程。