iac_modules/docs/landingzone/alicloud-landingzone-mvp-single-account.md
2025-09-26 14:39:11 +08:00

8.0 KiB
Raw Blame History

阿里云最小化 Landing ZoneMVP 单账号版)规划

1. 设计目标

  • 面向个人/学习场景,优先使用免费或基础版服务,控制成本。
  • 满足身份安全、操作留痕、安全基线、网络隔离、费用管控与自动化等基础能力。
  • 采用 PulumiPython与 GitHub Actions 自动化 IaC 流程,便于后续扩展到多账号/组织。

2. 总体架构概览

┌────────────────────────────────────────────────────────────┐
│ 阿里云主账号(个人)                                       │
│  ├─ 身份安全RAM 用户 + MFA                               │
│  ├─ 日志审计ActionTrail -> OSSIA 级别)                │
│  ├─ 配置合规Cloud Config 基础规则                        │
│  ├─ 安全检测:云安全中心(基础版)                         │
│  ├─ 网络1 个 VPCProd/Test 各 1 个专有网络交换机        │
│  ├─ IaCPulumi Python 项目 + OSS Backend可选          │
│  └─ DevOpsGitHub Actions + Pulumi Automation API         │
└────────────────────────────────────────────────────────────┘

3. 身份与访问控制

  • 主账号安全
    • 启用多因素认证MFA绑定虚拟 MFA 设备。
    • 为 IaC 运维创建专用 RAM 用户 ops-automation,授予最小权限策略(如 AliyunOSSFullAccessAliyunVPCFullAccessAliyunConfigFullAccess 等),并强制 MFA。
    • 创建只读监控 RAM 用户 audit-viewer,授予只读策略(ReadOnlyAccess)以便审计。
  • 访问密钥管理
    • GitHub Actions 使用 ops-automation 的访问密钥,通过 GitHub Secrets 管理。
    • 对个人 CLI 使用临时安全令牌STS或 RAM 用户专用访问密钥,周期性轮换。

4. 操作留痕与日志归档

  • 开启 ActionTrail(跟踪所有全局事件),日志投递到同区域 OSS Bucket。
    • Bucket 命名建议:lz-mvp-actiontrail-logs开启版本控制与生命周期180 天转低频、365 天归档)。
    • 为 GitHub Actions 拉取状态文件时也可共享该 OSS 作为 Pulumi backend可选
  • 针对 VPC 网络流量,可择机启用 流日志(需按量计费,学习场景可在需要时手动开启)。

5. 安全基线

  • Cloud Config:启用基础合规包(免费),包含身份、网络、存储公共规则。
  • 云安全中心:启用基础版(免费),获取基础漏洞、病毒、基线检测告警。
  • 行为审计ActionTrail 日志结合 Security Center 事件统一归档。

6. 网络隔离与资源命名

  • 创建单个 VPCCIDR 例:10.10.0.0/16)。
  • 创建两个交换机(子网):
    • lz-prod-subnet10.10.1.0/24
    • lz-test-subnet10.10.2.0/24
  • 创建默认安全组 lz-base-sg,默认仅放行出站、限制入站,按需为 Prod/Test 单独创建更精细安全组。
  • 预留弹性公网 IP/SLB 暂不创建,按实验需要手动启用。

7. 费用与资源标记

  • 所有资源统一添加标签:
    • env=prod|test
    • project=landingzone-mvp
    • owner=<GitHub handle>
  • 在费用中心创建预算告警(按需启用)。个人学习场景可设置总预算 10-20 USD/月,告警方式为邮件/短信。
  • 使用资源目录命名规范,便于后续扩展:lz-<env>-<service>-<purpose>

8. 基础自动化实现路线Pulumi + Python

8.1 代码结构建议

landingzone/
 ├─ Pulumi.yaml                     # 项目信息(名称、运行时 python
 ├─ Pulumi.<stack>.yaml             # Stack 配置region、RAM 用户、标签)
 ├─ __main__.py                     # 主入口,定义资源
 ├─ config/__init__.py              # 配置解析与常量
 ├─ modules/                        # 可选资源模块化
 └─ requirements.txt                # Pulumi 依赖pulumi>=3, pulumi-alicloud

8.2 核心资源清单

资源 Pulumi 资源类型 关键配置 备注
RAM 用户 ops-automation alicloud.ram.User login_profileMFA enforced 初始需手工绑定 MFA
RAM 用户 audit-viewer alicloud.ram.User password reset required
RAM 用户组与策略 alicloud.ram.Group, alicloud.ram.Attachment 最小权限
OSS Bucket alicloud.oss.Bucket, BucketLogging versioning/lifecycle ActionTrail + Pulumi backend
ActionTrail alicloud.actiontrail.Trail event RW=All, oss_bucket_name
Cloud Config 合规包 alicloud.config.ConfigurationRecorder + DeliveryChannel + Rule 启动基础规则 免费
VPC 与交换机 alicloud.vpc.Network, alicloud.vpc.Switch CIDR, tags
安全组 alicloud.ecs.SecurityGroup 默认拒绝入站

说明RAM 用户及 MFA 部分需结合控制台操作完成绑定。Pulumi 负责用户与策略创建。

8.3 Pulumi 后端与状态存储

  • 初始可使用 Pulumi Service免费层管理状态。
  • 若需完全自管,配置 Pulumi Backend 指向 OSS例如 pulumi login oss://lz-mvp-actiontrail-logs/pulumi-state)。

9. GitHub Actions 流水线

9.1 Secrets 管理

  • ALICLOUD_ACCESS_KEY_IDALICLOUD_ACCESS_KEY_SECRETops-automation RAM 用户密钥。
  • PULUMI_ACCESS_TOKEN:使用 Pulumi Service 时需要。

9.2 Workflow 示例

name: Deploy Landing Zone

on:
  push:
    paths:
      - "landingzone/**"
  workflow_dispatch:

jobs:
  preview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pulumi/actions@v4
        with:
          command: preview
          stack-name: personal/dev
        env:
          ALICLOUD_ACCESS_KEY_ID: ${{ secrets.ALICLOUD_ACCESS_KEY_ID }}
          ALICLOUD_ACCESS_KEY_SECRET: ${{ secrets.ALICLOUD_ACCESS_KEY_SECRET }}
          PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
  up:
    needs: preview
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - uses: pulumi/actions@v4
        with:
          command: up
          stack-name: personal/prod
          work-dir: landingzone
        env:
          ALICLOUD_ACCESS_KEY_ID: ${{ secrets.ALICLOUD_ACCESS_KEY_ID }}
          ALICLOUD_ACCESS_KEY_SECRET: ${{ secrets.ALICLOUD_ACCESS_KEY_SECRET }}
          PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}

9.3 扩展建议

  • 引入 pulumi/actionsrefresh 步骤周期对齐实际资源。
  • 加入 pulumi destroy 手动触发 workflow 以清理环境。
  • 将 Stack 配置拆分为 personal/dev(测试)与 personal/prod(实际),通过 Pulumi config 存储 region、标签等。

10. 运维与监控

  • 配置 CloudMonitor 告警联系人(免费),监控 ActionTrail 投递失败、OSS 存储量、预算告警等。
  • 使用 Open-Source 方案(如 Loki/Grafana处理导出的日志可部署在 Test 子网内。
  • 定期通过 Pulumi pulumi stack outputs 导出关键信息,并存档到 Git 仓库的环境文档中。

11. 后续扩展路线

  1. 多账号/组织接入阿里云资源目录Resource Directory创建成员账号将基础设施逐步下放。
  2. 网络增强:引入专有网络连接(如 VPN Gateway、CEN实现混合云Prod/Test 细分更多子网。
  3. 安全加固升级云安全中心专业版接入访问控制RAM Policy细化到资源级启用日志审计高级特性。
  4. CI/CD 集成:结合 GitHub Environments + Pulumi Stack References实现多环境审批与依赖管理。
  5. 成本优化:自动化导出账单到 OSS + QuickSight/QuickBI 分析,结合 Function Compute 周期性扫描闲置资源。

本规划覆盖单账号最小可行阿里云 Landing Zone满足基本安全、合规、成本与自动化需求并预留多账号、网络与安全扩展空间。