---
source: ../../../core/environment-standards.md
source_version: 1.0.0
translation_version: 1.0.0
last_synced: 2026-04-10
status: current
---

# 环境管理标准

> 版本: 1.0.0 | 最后更新: 2026-04-01

## 概述

本文档定义应用程序环境在整个生命周期中的管理标准——从本地开发到生产部署。涵盖环境层级、配置管理、环境一致性、密钥处理及验证程序。

## 1. 环境层级

### 标准层级（必要）

| 层级 | 用途 | 对象 | 数据 |
|------|------|------|------|
| **Local** | 个人开发工作站 | 单一开发者 | 合成/种子数据 |
| **Dev** | 共享开发与集成 | 开发团队 | 合成测试数据 |
| **Staging** | 上线前验证与 QA | QA 团队、利益相关者 | 匿名化的类生产数据 |
| **Production** | 服务终端用户的正式系统 | 终端用户 | 真实用户数据 |

### 可选层级

| 层级 | 用途 |
|------|------|
| **Preview** | 每个 PR 的临时环境，PR 合并后自动清理 |
| **Sandbox** | 隔离的实验环境 |
| **DR** | 灾难恢复环境 |

## 2. 配置优先层级

配置值依以下优先顺序解析（由高到低）：

| 优先顺序 | 来源 | 示例 |
|---------|------|------|
| 1（最高） | 环境变量 | `DATABASE_URL=postgres://...` |
| 2 | 命令行参数 | `--port 3000` |
| 3 | 环境配置文件 | `.env.staging`, `config/staging.yaml` |
| 4 | 应用配置文件 | `config/default.yaml` |
| 5（最低） | 硬编码默认值 | `const PORT = config.port ?? 3000` |

## 3. 环境一致性

| 方面 | 要求 |
|------|------|
| 技术栈 | **必须**相同 |
| 架构拓扑 | **应该**相同 |
| 配置结构 | **必须**相同（值可不同） |
| 数据结构 | **必须**相同 |
| 规模 | **可以**不同 |
| 数据内容 | **必须**不同（非生产环境使用匿名化数据） |

## 4. 密钥管理

### 五大核心原则

1. **不入版控**：密钥绝不提交到版本控制
2. **模板化**：提供 `.env.example` 模板文件
3. **集中管理**：使用集中式密钥管理器（Vault、AWS Secrets Manager 等）
4. **最小权限**：每个服务只获取所需的密钥
5. **定期轮替**：API Key 每 90 天、TLS 证书到期前自动更新

### 轮替频率

| 密钥类型 | 轮替频率 |
|---------|---------|
| API Keys | 每 90 天 |
| 数据库密码 | 每 90 天 |
| TLS 证书 | 到期前（以 ACME 自动化） |
| 服务账户密钥 | 每 180 天 |

## 5. .gitignore 规则

必要规则：
```gitignore
.env
.env.local
.env.*.local
*.pem
*.key
credentials.json
service-account.json
```

## 6. 环境验证检查表

| # | 类别 | 检查项目 |
|---|------|---------|
| 1 | 连接性 | 数据库连接、API 端点、消息队列 |
| 2 | 认证 | SSO/OAuth、API Key 有效性 |
| 3 | 数据 | Schema Migration、种子数据 |
| 4 | 监控 | 指标收集、日志聚合、告警规则 |
| 5 | 安全 | TLS、CORS、速率限制 |
| 6 | 访问 | 团队权限、部署凭证 |
| 7 | 备份 | 备份计划、恢复程序 |
| 8 | DNS | 域名记录、SSL 证书、CDN |

## 7. IaC 六大核心原则

1. **声明式优先**：描述期望的最终状态
2. **幂等性**：重复应用产生相同结果
3. **版本控制**：所有 IaC 代码存于 Git
4. **模块化**：使用可重用模块
5. **环境参数化**：以变量注入环境特定值
6. **不可变基础设施**：更新时替换而非就地修改

### IaC Code Review 检查清单

PR 包含 IaC 变更时，审查者必须评估以下四个方面：

| # | 方面 | 检查项目 |
|---|------|----------|
| 1 | **安全性** | 最小权限、无硬编码 Secret、IAM 范围正确、网络暴露最小化 |
| 2 | **成本影响** | 新资源已识别、实例大小合理、预估每月成本变化已记录 |
| 3 | **回滚可行性** | 变更可逆、破坏性操作已标记、有状态资源备份策略 |
| 4 | **环境一致性** | 变更维持各层级一致、环境特定覆写已记录、无配置漂移 |

### Drift Detection（漂移检测）

基础设施漂移指实际状态与 IaC 定义状态产生偏差（例如通过控制台手动变更）：

**检测：**
- 定期执行漂移扫描（如 `terraform plan`、`pulumi preview`），建议 Production 每日执行
- 将漂移检查集成至 CI/CD pipeline

**通知：**
- 检测到漂移必须通知负责团队（Slack、email 或告警系统）

**修复：**
- **更新 IaC**：若手动变更为有意为之，更新 IaC 代码
- **还原基础设施**：若为未授权或意外变更，还原至 IaC 定义状态

---

**相关标准：**
- [日志标准](logging-standards.md)
- [部署标准](deployment-standards.md)
- [安全标准](security-standards.md)

---

## 授权

本标准以 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 授权发布。
