527 lines
22 KiB
Markdown
527 lines
22 KiB
Markdown
# Writech ICT 服务平台规划设计及实施方案
|
||
|
||
## 一、概述
|
||
|
||
### 1.1 目标
|
||
|
||
基于公司现有 IT 服务资源(详见 [IT服务资源](../IT资源/IT服务资源.md)),构建面向 **2E(企业员工)、2B(合作伙伴)、2C(最终消费者)** 三类用户的统一 ICT 服务平台,实现:
|
||
|
||
- 企业员工全线上办公
|
||
- 全部基础系统与业务系统统一登录,采用**免密码秘钥认证**
|
||
- 视频之外的全部业务上 SSL 安全保障
|
||
- 应用服务器可按需弹性扩缩
|
||
- 核心数据安全自主可控
|
||
|
||
### 1.2 基础设施概况
|
||
|
||
| 服务器 | 云平台 | 服务区 | IP | 绑定域名 | 定位 |
|
||
|--------|--------|--------|-----|---------|------|
|
||
| 腾讯云应用服务器 | 腾讯云 | 广州 | 106.55.191.177 | writech.cn | 大陆数据服务,面向国内用户 |
|
||
| 阿里云应用服务器 | 阿里云 | 新加坡 | 47.84.109.13 | writech.ai | 品牌站点与海外服务 |
|
||
| 私有云应用服务器 | 私有云 | 企业 | 118.141.37.23 | — | 数据源站、用户账户信息源 |
|
||
|
||
### 1.3 核心架构原则
|
||
|
||
- **私有云不直面终端用户**:私有云仅对应用服务器提供数据支撑(数据库、文件存储、身份源),不直接面向 2B / 2C / 2E 用户
|
||
- **公有云承载互联网服务**:员工在线工作系统、AI 客服、商城、客户支持等全部运行在腾讯云/阿里云应用服务器上
|
||
- **弹性扩缩**:应用服务器及其上应用可按需增减,平台架构须适应服务器动态变化
|
||
|
||
---
|
||
|
||
## 二、文档与资料管理体系
|
||
|
||
### 2.1 Git 仓库统一管理
|
||
|
||
企业全部文档资料均基于 Git 仓库管理和存放,涵盖以下类别:
|
||
|
||
| 类别 | 说明 | 典型仓库示例 |
|
||
|------|------|------------|
|
||
| 原始资料 | 产品需求、技术方案、会议纪要 | docs、project-plan |
|
||
| 证件资料 | 企业证照、商标、专利、软著 | certificates、IP-doc |
|
||
| 媒体宣传资料 | 品牌素材、产品图片、宣传视频脚本 | web-doc、media-assets |
|
||
| 软件源代码 | 产品代码、固件代码、SDK 代码 | 各产品独立仓库 |
|
||
| 软件开发工具 | 构建脚本、CI/CD 配置、开发环境配置 | devtools、ci-config |
|
||
|
||
### 2.2 Git 服务部署
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────┐
|
||
│ Git 服务 (Gitea) │
|
||
│ 运行于:互联网应用服务器 │
|
||
│ │
|
||
│ · SSH (22/tcp) — 代码推拉(SSH 秘钥认证) │
|
||
│ · HTTPS (443/tcp) — Web UI(SSO 秘钥登录) │
|
||
│ · 仓库数据存储 — 私有云 NFS/Samba 挂载 │
|
||
└─────────────────────────────────────────────────┘
|
||
```
|
||
|
||
- **Git 服务**(推荐 Gitea 轻量自托管)运行在互联网应用服务器上,面向员工提供服务
|
||
- **仓库数据**实际存储于私有云大容量存储,通过内网挂载
|
||
- 所有 Git 操作均通过 **SSH 秘钥认证**,无密码
|
||
|
||
---
|
||
|
||
## 三、统一登录与秘钥认证体系
|
||
|
||
### 3.1 设计目标
|
||
|
||
所有企业基础系统与业务应用必须实现**统一登录**,且全部采用**免密码秘钥登录**,杜绝密码泄露风险。在手机/移动场景下,支持**微信扫码登录**作为秘钥认证的等价替代——微信扫码本质上仍是秘钥认证,手机端微信持有用户凭证(OpenID),相当于手机即秘钥载体。
|
||
|
||
需纳入统一登录的系统清单:
|
||
|
||
| 分类 | 系统 | 认证方式 |
|
||
|------|------|---------|
|
||
| 基础设施 | Git (Gitea) | SSH 秘钥 + Web SSO |
|
||
| 基础设施 | Samba 文件共享 | Kerberos + 秘钥 |
|
||
| 基础设施 | 数据库应用 | 客户端证书 |
|
||
| 通信协作 | 腾讯企业邮箱 | SAML SSO 对接 |
|
||
| 开发工具 | 编译管理 (Jenkins/Drone) | Web SSO |
|
||
| 开发工具 | 项目管理 (Redmine/Plane) | Web SSO |
|
||
| 开发工具 | 测试管理 | Web SSO |
|
||
| 业务系统 | 技术论坛 | Web SSO |
|
||
| 业务系统 | 客户支持系统 | Web SSO |
|
||
| 业务系统 | 商城系统 | Web SSO |
|
||
| 业务系统 | AI 在线客服 | Web SSO |
|
||
|
||
### 3.2 认证架构
|
||
|
||
```plantuml
|
||
@startuml
|
||
skinparam componentStyle rectangle
|
||
title 统一认证架构
|
||
|
||
node "私有云 (身份源)" as PCloud {
|
||
database "OpenLDAP\n用户目录" as LDAP
|
||
database "SSH 公钥库" as SSHKeys
|
||
}
|
||
|
||
node "互联网应用服务器" as AppServer {
|
||
component "Keycloak\nSSO 认证中心" as KC
|
||
component "Nginx\n反向代理" as Nginx
|
||
component "Git / CI / 项目管理\n论坛 / 商城 / 客服" as Apps
|
||
}
|
||
|
||
cloud "微信开放平台" as WX
|
||
|
||
actor "员工 / 合作伙伴 / 消费者" as User
|
||
|
||
User -down-> Nginx : HTTPS 访问
|
||
Nginx -down-> KC : 认证请求
|
||
KC -down-> LDAP : 用户验证
|
||
KC -right-> Apps : OIDC Token
|
||
KC -left-> WX : 微信扫码认证\n(Social IdP)
|
||
User -down-> Apps : SSH 秘钥访问 (Git)
|
||
Apps -down-> SSHKeys : 公钥校验
|
||
@enduml
|
||
```
|
||
|
||
### 3.3 技术方案
|
||
|
||
#### 身份目录:OpenLDAP
|
||
|
||
- 部署于**私有云**,作为全局唯一的用户身份源
|
||
- 存储员工基本信息、组织架构、角色权限
|
||
- 存储每个用户的 SSH 公钥(`sshPublicKey` 属性)
|
||
- 所有系统通过 LDAP 协议查询用户信息
|
||
|
||
#### SSO 认证中心:Keycloak
|
||
|
||
- 部署于**互联网应用服务器**,面向所有用户提供认证服务
|
||
- 对接 OpenLDAP 作为用户联邦(User Federation)
|
||
- 支持 OIDC / SAML 协议,所有 Web 应用通过标准协议接入
|
||
- **免密码登录实现**:Keycloak 配置 WebAuthn(硬件安全秘钥/系统指纹)作为首选认证方式,禁用密码登录
|
||
- **微信扫码登录**:Keycloak 配置微信开放平台作为 Social Identity Provider,支持扫码登录作为秘钥认证的移动端替代
|
||
|
||
#### 免密码秘钥登录的三种场景
|
||
|
||
| 场景 | 方式 | 秘钥载体 | 说明 |
|
||
|------|------|---------|------|
|
||
| **SSH 类服务**(Git 推拉、服务器运维) | SSH 秘钥对(Ed25519) | 电脑本地 `~/.ssh/` | 用户本地生成秘钥对,公钥注册到 LDAP,私钥留在本地 |
|
||
| **Web 类服务 — 电脑端** | WebAuthn 硬件秘钥 / 系统生物识别 | 硬件秘钥 / 电脑 | 用户注册硬件秘钥(如 YubiKey)或系统指纹/面容到 Keycloak |
|
||
| **Web 类服务 — 移动端** | 微信扫码登录 | 手机微信 | 手机扫描 Keycloak 登录页二维码,微信 OpenID 映射到 LDAP 用户 |
|
||
|
||
> **设计要点**:三种方式本质均为秘钥认证——SSH 秘钥存于电脑、WebAuthn 秘钥存于硬件/系统、微信凭证存于手机。三者绑定到同一 LDAP 身份,互为替代,用户按使用场景选择最便捷的方式。
|
||
|
||
#### 微信扫码登录与秘钥认证的绑定关系
|
||
|
||
微信扫码登录并非独立的认证体系,而是秘钥认证在移动场景下的延伸:
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────┐
|
||
│ 同一 LDAP 身份 │
|
||
│ (zhangsan@writech.cn / DN) │
|
||
│ │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ SSH 秘钥 │ │ WebAuthn │ │ 微信扫码 │ │
|
||
│ │ Ed25519 │ │ FIDO2 秘钥 │ │ OpenID 绑定 │ │
|
||
│ │ │ │ │ │ │ │
|
||
│ │ 载体:电脑 │ │ 载体:硬件 │ │ 载体:手机 │ │
|
||
│ │ 场景:CLI │ │ 场景:PC浏览器│ │ 场景:移动端 │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||
│ │
|
||
│ 三种秘钥绑定在同一身份上,禁用 LDAP 账户后全部失效 │
|
||
└──────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**技术实现**:
|
||
|
||
1. **Keycloak 配置微信 Social IdP**:在 Keycloak 管理后台添加「微信开放平台」作为 Identity Provider,配置 AppID 和 AppSecret
|
||
2. **OpenID 绑定**:员工首次使用时,先通过 WebAuthn 登录 Keycloak,在账户设置中「关联社交账号 → 微信」,扫码完成绑定。此后微信 OpenID 与 Keycloak 用户(即 LDAP 身份)建立 1:1 映射
|
||
3. **登录流程**:Keycloak 登录页显示「微信扫码登录」按钮 → 用户手机微信扫码 → 微信返回 OpenID → Keycloak 查找绑定的 LDAP 用户 → 校验 LDAP 账户状态(未禁用)→ 签发 OIDC Token → 登录成功
|
||
4. **安全保障**:LDAP 账户一旦禁用,即使微信 OpenID 绑定仍存在,Keycloak 在 Token 签发前会验证 LDAP 状态,登录请求将被拒绝
|
||
|
||
#### 腾讯企业邮箱对接
|
||
|
||
- 企业邮箱域名:`@writech.cn`
|
||
- 通过 Keycloak SAML IdP 对接腾讯企业邮箱的 SSO 登录
|
||
- 员工在 Keycloak 完成秘钥认证后,自动获得企业邮箱访问权
|
||
|
||
---
|
||
|
||
## 四、SSL 安全策略
|
||
|
||
### 4.1 覆盖范围
|
||
|
||
| 服务类型 | SSL 策略 | 说明 |
|
||
|---------|---------|------|
|
||
| Web 应用(全部) | **强制 HTTPS** | 包括 Git Web UI、SSO、论坛、商城、客服等 |
|
||
| API 接口(全部) | **强制 HTTPS** | 所有 RESTful / WebSocket / MQTT-over-WSS |
|
||
| SSH 服务 | SSH 协议自带加密 | Git 推拉、服务器运维 |
|
||
| 邮件服务 | TLS 加密 | 腾讯企业邮箱原生支持 |
|
||
| 视频流服务 | **豁免** | 实时视频流对延迟敏感,按需采用 SRTP 或不加密 |
|
||
|
||
### 4.2 证书方案:ZeroSSL + acme.sh 自动续期
|
||
|
||
全部服务器的 SSL 证书统一采用 **ZeroSSL 免费通配符证书**,由 writech.hk 服务器集中管理:
|
||
|
||
- **签发工具**:acme.sh + ZeroSSL ACME 接口
|
||
- **证书类型**:DV 通配符(`*.writech.cn`、`*.yink.ai`、`*.writech.ai`、`*.writech.hk`)
|
||
- **DNS 验证**:.ai / .hk 域名通过阿里云 DNS API(dns_ali),.cn 域名通过腾讯云 DNSPod API(dns_dp)
|
||
- **自动续期**:cron 每日检查,到期前 30 天自动续期
|
||
- **自动分发**:续期后通过 SCP 推送至全部应用服务器,自动 reload Nginx
|
||
|
||
### 4.3 新增应用服务器的证书部署
|
||
|
||
当按需新增应用服务器时,证书部署流程:
|
||
|
||
1. 在 writech.hk 的分发脚本(`deploy_certs.sh`)中添加新服务器地址
|
||
2. 配置 writech.hk 到新服务器的 SSH 免密登录(`ssh-copy-id`)
|
||
3. 手动触发一次分发或等待下次 cron 自动续期时同步
|
||
4. 新服务器 Nginx 配置引用标准证书路径(`/etc/ssl/certs/`、`/etc/ssl/private/`)
|
||
|
||
---
|
||
|
||
## 五、业务应用系统规划
|
||
|
||
### 5.1 系统部署总览
|
||
|
||
全部业务应用运行于**互联网应用服务器**(腾讯云 / 阿里云),私有云仅提供数据后端支撑:
|
||
|
||
| 系统 | 用户群体 | 部署位置 | 说明 |
|
||
|------|---------|---------|------|
|
||
| Git 代码托管 (Gitea) | 2E | 互联网应用服务器 | 企业文档与代码管理 |
|
||
| SSO 认证中心 (Keycloak) | 2E / 2B / 2C | 互联网应用服务器 | 全局统一登录 |
|
||
| 编译管理 (CI/CD) | 2E | 互联网应用服务器 | 自动构建、自动部署 |
|
||
| 项目管理 | 2E | 互联网应用服务器 | 任务跟踪、迭代管理 |
|
||
| 测试管理 | 2E | 互联网应用服务器 | 测试用例、缺陷跟踪 |
|
||
| 技术论坛 | 2E / 2B | 互联网应用服务器 | 技术交流、知识沉淀 |
|
||
| Samba 文件共享 | 2E | 互联网应用服务器 | 公共文件共享(VPN 接入) |
|
||
| 企业邮箱 | 2E | 腾讯企业邮箱 (SaaS) | @writech.cn 统一邮箱 |
|
||
| AI 在线客服 | 2B / 2C | 互联网应用服务器 | 基于 AI 基础能力的智能客服 |
|
||
| 客户支持系统 | 2B / 2C | 互联网应用服务器 | 工单、FAQ、文档中心 |
|
||
| 商城系统 | 2C | 互联网应用服务器 | 产品展示、在线购买 |
|
||
|
||
### 5.2 AI 在线客服
|
||
|
||
- 部署于互联网应用服务器,直接面向 2B / 2C 用户
|
||
- 基于云平台 AI 算力 API(腾讯云/阿里云 NLP、大模型接口)构建
|
||
- 功能:智能问答、产品咨询、售后引导、工单自动分派
|
||
- 知识库数据存储于私有云,AI 服务通过内网调取
|
||
|
||
### 5.3 员工在线工作系统
|
||
|
||
员工全线上办公,核心工具链均运行在互联网应用服务器上:
|
||
|
||
```
|
||
员工日常工作流
|
||
├─ Git — 文档编写、代码开发、版本管理
|
||
├─ CI/CD — 代码编译、自动测试、自动部署
|
||
├─ 项目管理 — 任务分派、进度跟踪、迭代规划
|
||
├─ 测试管理 — 用例编写、测试执行、缺陷跟踪
|
||
├─ 论坛 — 技术讨论、方案评审、知识分享
|
||
├─ 邮箱 — 对外沟通、商务协作
|
||
└─ Samba — 共享大文件(设计稿、固件包等)
|
||
```
|
||
|
||
---
|
||
|
||
## 六、弹性扩缩策略
|
||
|
||
### 6.1 应用服务器动态管理
|
||
|
||
应用服务器及其上部署的应用会按需增减,平台设计须适应此动态变化:
|
||
|
||
#### 新增服务器流程
|
||
|
||
1. **资源开通**:在腾讯云/阿里云开通新云服务器实例
|
||
2. **基础配置**:安装 Nginx、Docker 等基础环境
|
||
3. **接入认证**:配置 Keycloak OIDC 客户端,接入统一登录
|
||
4. **证书部署**:在 writech.hk 分发脚本中添加新服务器,同步 SSL 证书
|
||
5. **DNS 解析**:按需添加子域名解析记录
|
||
6. **应用部署**:部署业务应用容器
|
||
7. **Nginx 反代**:配置反向代理和 SSL 终止
|
||
8. **注册到 LDAP**:如有新服务角色,在 LDAP 中添加对应服务条目
|
||
|
||
#### 缩减服务器流程
|
||
|
||
1. **业务迁移**:将应用和数据迁移至其他服务器
|
||
2. **DNS 摘除**:删除或更新相关 DNS 记录
|
||
3. **证书脚本清理**:从 `deploy_certs.sh` 中移除该服务器
|
||
4. **Keycloak 清理**:删除对应 OIDC 客户端配置
|
||
5. **资源释放**:销毁云服务器实例
|
||
|
||
### 6.2 配置即代码
|
||
|
||
所有服务器配置、部署脚本、Nginx 配置均纳入 Git 仓库管理,确保:
|
||
|
||
- 新服务器可通过脚本快速初始化
|
||
- 配置变更有版本记录,可回溯可审计
|
||
- 服务器增减时只需修改配置文件并执行部署脚本
|
||
|
||
---
|
||
|
||
## 七、账户生命周期管理
|
||
|
||
### 7.1 员工入职 — 开通账户
|
||
|
||
```plantuml
|
||
@startuml
|
||
skinparam componentStyle rectangle
|
||
title 员工入职账户开通流程
|
||
|
||
start
|
||
:IT管理员在 OpenLDAP 创建用户账户;
|
||
note right: 填写姓名、邮箱、部门、角色
|
||
:分配 @writech.cn 企业邮箱;
|
||
note right: 腾讯企业邮箱后台创建
|
||
|
||
:员工在个人电脑生成 SSH 秘钥对;
|
||
note right
|
||
ssh-keygen -t ed25519 -C "name@writech.cn"
|
||
生成 ~/.ssh/id_ed25519 (私钥)
|
||
和 ~/.ssh/id_ed25519.pub (公钥)
|
||
end note
|
||
|
||
:员工将公钥提交给 IT 管理员;
|
||
note right: 通过企业邮箱发送或内部系统上传
|
||
|
||
:IT管理员将公钥注册到 LDAP;
|
||
note right: 写入用户的 sshPublicKey 属性
|
||
|
||
:员工注册 WebAuthn 硬件秘钥/生物识别;
|
||
note right
|
||
登录 Keycloak 自助注册页面
|
||
插入 YubiKey 或使用系统指纹/面容
|
||
完成 WebAuthn 绑定
|
||
end note
|
||
|
||
:员工绑定微信扫码登录;
|
||
note right
|
||
在 Keycloak 账户设置中
|
||
选择 "关联社交账号 - 微信"
|
||
手机微信扫码完成 OpenID 绑定
|
||
此后可用微信扫码替代 WebAuthn 登录
|
||
end note
|
||
|
||
:账户开通完成;
|
||
note right
|
||
可访问:Git、CI/CD、项目管理、
|
||
测试管理、论坛、邮箱、Samba
|
||
认证方式:SSH秘钥 / WebAuthn / 微信扫码
|
||
end note
|
||
stop
|
||
@enduml
|
||
```
|
||
|
||
### 7.2 SSH 秘钥管理规范
|
||
|
||
#### 秘钥生成要求
|
||
|
||
| 项目 | 要求 |
|
||
|------|------|
|
||
| 算法 | Ed25519(推荐)或 RSA 4096 |
|
||
| 口令保护 | 私钥**必须**设置本地口令(passphrase) |
|
||
| 存储位置 | 私钥仅存于员工本人电脑 `~/.ssh/` 目录 |
|
||
| 备份 | 私钥禁止上传到云盘或共享目录;建议加密备份到个人 U 盘 |
|
||
|
||
#### 公钥注册流程
|
||
|
||
1. 员工本地执行 `ssh-keygen -t ed25519 -C "name@writech.cn"` 生成秘钥对
|
||
2. 将 `~/.ssh/id_ed25519.pub` 内容通过安全渠道提交给 IT 管理员
|
||
3. IT 管理员通过 LDAP 管理工具将公钥写入该用户条目
|
||
4. 写入后,员工即可通过 SSH 秘钥访问 Git、服务器等全部 SSH 类服务
|
||
5. 员工登录 Keycloak 自助页面,注册 WebAuthn 设备用于 Web 类服务
|
||
6. 员工在 Keycloak 账户设置中关联微信账号(扫码绑定 OpenID),作为移动端登录的替代方式
|
||
|
||
### 7.3 员工电脑更换 — 秘钥迁移
|
||
|
||
#### 推荐方案:生成新秘钥
|
||
|
||
1. 在新电脑上**重新生成**新的 SSH 秘钥对
|
||
2. 将新公钥提交给 IT 管理员
|
||
3. IT 管理员在 LDAP 中**追加**新公钥(保留旧公钥,过渡期并存)
|
||
4. 员工在新电脑验证全部系统可正常访问
|
||
5. IT 管理员**删除**旧公钥
|
||
6. 在 Keycloak 中注册新电脑的 WebAuthn 设备
|
||
|
||
> **注意**:微信扫码登录绑定与电脑无关(绑定在手机微信上),更换电脑不影响微信扫码登录。
|
||
|
||
#### 紧急方案:迁移旧秘钥
|
||
|
||
若需立即使用且来不及走流程:
|
||
|
||
1. 通过加密 U 盘将旧电脑 `~/.ssh/` 目录中的私钥文件拷贝到新电脑
|
||
2. 确认拷贝后,**立即安全擦除** U 盘中的秘钥文件
|
||
3. 在新电脑验证连接正常
|
||
4. **建议后续仍重新生成秘钥**并替换,降低私钥泄露风险
|
||
|
||
### 7.4 员工离职 — 权限回收
|
||
|
||
离职权限回收必须在**员工最后工作日当天完成**,流程如下:
|
||
|
||
```plantuml
|
||
@startuml
|
||
skinparam componentStyle rectangle
|
||
title 员工离职权限回收流程
|
||
|
||
start
|
||
:HR 通知 IT 管理员离职日期;
|
||
|
||
:IT管理员禁用 LDAP 账户;
|
||
note right
|
||
禁用后即时生效:
|
||
· SSH 秘钥认证失败(公钥已不可用)
|
||
· Web SSO 登录失败(LDAP 拒绝验证)
|
||
· 全部系统同步失效
|
||
end note
|
||
|
||
:删除 Keycloak 中该用户的 WebAuthn 设备
|
||
及微信 OpenID 绑定;
|
||
|
||
:在腾讯企业邮箱后台停用邮箱;
|
||
note right: 邮箱数据保留 90 天备查后删除
|
||
|
||
:回收企业设备(如有 YubiKey);
|
||
|
||
:从 LDAP 中删除用户公钥;
|
||
|
||
if (该员工有服务器 root/sudo 权限?) then (是)
|
||
:检查并轮换相关服务器的 deploy key;
|
||
:审计该员工最近操作日志;
|
||
endif
|
||
|
||
:归档离职员工资料;
|
||
:权限回收完成;
|
||
stop
|
||
@enduml
|
||
```
|
||
|
||
#### 关键要点
|
||
|
||
- **LDAP 禁用即全局失效**:由于所有系统的认证源都是 LDAP,禁用 LDAP 账户后,该员工立即无法访问任何系统,无需逐个系统处理
|
||
- **企业邮箱独立处理**:腾讯企业邮箱为 SaaS 服务,需在腾讯后台单独停用
|
||
- **秘钥残留无害**:即使离职员工仍持有私钥,由于公钥已从 LDAP 删除,私钥无法通过任何系统验证
|
||
- **微信绑定同步失效**:LDAP 账户禁用后,Keycloak 在微信扫码回调时会校验 LDAP 状态,拒绝签发 Token,无需单独解绑微信(但建议清理绑定记录)
|
||
- **特权账户审计**:对拥有 root/sudo 权限的离职员工,需额外审计操作记录并轮换相关 deploy key
|
||
|
||
---
|
||
|
||
## 八、系统部署拓扑
|
||
|
||
```plantuml
|
||
@startuml
|
||
skinparam componentStyle rectangle
|
||
title ICT 服务平台部署拓扑
|
||
|
||
node "阿里云 [新加坡]\nwritech.ai · 47.84.109.13" as ACloud {
|
||
component "Nginx + SSL" as ANginx
|
||
component "品牌官网" as Web
|
||
component "海外业务服务" as Overseas
|
||
}
|
||
|
||
cloud "互联网用户" as Users {
|
||
actor "2E 企业员工" as E
|
||
actor "2B 合作伙伴" as B
|
||
actor "2C 最终消费者" as C
|
||
}
|
||
|
||
node "腾讯云 [广州]\nwritech.cn · 106.55.191.177" as TCloud {
|
||
component "Nginx + SSL" as TNginx
|
||
component "Keycloak SSO" as SSO
|
||
|
||
package "员工工作系统" {
|
||
component "Git (Gitea)" as Git
|
||
component "CI/CD" as CICD
|
||
component "项目管理" as PM
|
||
}
|
||
|
||
package "对外业务系统" {
|
||
component "AI 在线客服" as AICust
|
||
component "商城 / 客户支持" as Biz
|
||
}
|
||
}
|
||
|
||
node "私有云 [数据后端]\n118.141.37.23" as PCloud {
|
||
database "OpenLDAP\n身份目录" as LDAP
|
||
database "SSH 公钥库" as Keys
|
||
database "核心数据库" as DB
|
||
storage "Git 仓库存储\nSamba 文件存储" as Store
|
||
}
|
||
|
||
node "writech.hk · 证书管理中心" as HK {
|
||
component "acme.sh + ZeroSSL" as ACME
|
||
}
|
||
|
||
' == 用户 → 阿里云(向上) ==
|
||
C -up-> ACloud : HTTPS
|
||
E -up-> ACloud
|
||
|
||
' == 用户 → 腾讯云(向下) ==
|
||
E -down-> TCloud : SSH / WebAuthn / 微信扫码
|
||
B -down-> TCloud : WebAuthn / 微信扫码 / API
|
||
C -down-> TCloud : WebAuthn / 微信扫码
|
||
|
||
' == 应用 → 数据后端 ==
|
||
SSO -down-> LDAP : 用户认证
|
||
Git -down-> Keys : 公钥校验
|
||
Git -down-> Store : 仓库数据
|
||
CICD -down-> Store
|
||
AICust -down-> DB : 知识库
|
||
Biz -down-> DB : 业务数据
|
||
|
||
' == 证书分发(虚线) ==
|
||
ACME ..> TNginx : 证书分发
|
||
ACME ..> ANginx : 证书分发
|
||
@enduml
|
||
```
|
||
|
||
---
|
||
|
||
## 九、实施路线图
|
||
|
||
| 阶段 | 任务 | 预计周期 |
|
||
|------|------|---------|
|
||
| **第一阶段:基础设施** | 私有云部署 OpenLDAP,建立用户目录 | 第 1 周 |
|
||
| **第一阶段** | 互联网服务器部署 Keycloak,对接 LDAP | 第 1-2 周 |
|
||
| **第一阶段** | SSL 证书全覆盖(ZeroSSL + acme.sh 已就绪) | 第 1 周 |
|
||
| **第一阶段** | 部署 Git (Gitea),配置 SSH 秘钥认证 + SSO | 第 2 周 |
|
||
| **第二阶段:核心系统** | 部署 CI/CD、项目管理、测试管理,接入 SSO | 第 3-4 周 |
|
||
| **第二阶段** | 部署 Samba 文件共享,对接 LDAP 认证 | 第 3 周 |
|
||
| **第二阶段** | 腾讯企业邮箱 SAML SSO 对接 | 第 3 周 |
|
||
| **第二阶段** | 制定并发布员工秘钥管理规范 | 第 3 周 |
|
||
| **第三阶段:业务系统** | 部署技术论坛、客户支持系统,接入 SSO | 第 5-6 周 |
|
||
| **第三阶段** | 部署商城系统,接入 SSO | 第 5-6 周 |
|
||
| **第三阶段** | 部署 AI 在线客服,对接云平台 AI API | 第 6-8 周 |
|
||
| **第四阶段:运营优化** | 弹性扩缩自动化脚本开发 | 按需 |
|
||
| **第四阶段** | 全系统安全审计与渗透测试 | 按需 |
|