Update: add Prolog translation, 4A system design, Mermaid, Hextra partials & blog articles
This commit is contained in:
@@ -0,0 +1,532 @@
|
||||
# 应用资源管理中心 + 系统资源管理中心(含堡垒集群)
|
||||
|
||||
> 本文件涵盖2个中心的设计,考虑到它们共享权限模型和SSO机制,合并在同一份文档中。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:应用资源管理中心
|
||||
|
||||
## 1. 总体定位
|
||||
|
||||
应用资源管理中心负责企业内**业务应用的单点登录接入和权限管理**。核心职责:
|
||||
|
||||
- 提供统一SSO网关,对接各类业务系统(B/S架构为主)
|
||||
- 管理应用注册、元数据、接入配置
|
||||
- 提供权限模型和授权规则引擎
|
||||
- 参考亚信安全接口规范(IAM/SSO相关)
|
||||
|
||||
---
|
||||
|
||||
## 2. SSO网关设计
|
||||
|
||||
### 2.1 支持的协议
|
||||
|
||||
| 协议 | 成熟度 | 适用场景 | 优先级 |
|
||||
|------|--------|---------|--------|
|
||||
| OAuth2.0 + OIDC | 高 | 现代应用(RESTful API) | P0 |
|
||||
| SAML 2.0 | 高 | 传统企业应用、ERP系统 | P0 |
|
||||
| CAS | 中 | 部分遗留Java应用 | P1 |
|
||||
| 自定义Token透传 | 低 | 老系统改造过渡 | P2 |
|
||||
|
||||
### 2.2 SSO流程(OIDC Authorization Code)
|
||||
|
||||
```
|
||||
┌──────┐ ┌──────────┐ ┌──────────────┐ ┌──────────┐
|
||||
│ 用户 │ │ 业务应用 │ │ 认证身份中心 │ │SSO网关 │
|
||||
│ │ │ (Client) │ │ (Auth Server) │ │ │
|
||||
└──┬───┘ └─────┬────┘ └──────┬───────┘ └─────┬────┘
|
||||
│ │ │ │
|
||||
│ 访问应用 │ │ │
|
||||
│───────────────>│ │ │
|
||||
│ │ 未登录,跳转SSO │ │
|
||||
│<───────────────│ │ │
|
||||
│ 302重定向 │ │ │
|
||||
│──────────────────────────────────>│ │
|
||||
│ │ │ SSO网关代收 │
|
||||
│ │ │ 认证请求,返回 │
|
||||
│ 登录页 │ │ 授权码 │
|
||||
│<──────────────────────────────────│ │
|
||||
│ │ │ │
|
||||
│ 提交凭证 │ │ │
|
||||
│──────────────────────────────────>│ │
|
||||
│ │ │ 验证通过 │
|
||||
│ │ │ 返回授权码 │
|
||||
│<──────────────────────────────────│ │
|
||||
│ │ │ │
|
||||
│ 携带授权码回调 │ │ │
|
||||
│──────────────────────────────────────────────> │
|
||||
│ │ │ SSO网关 │
|
||||
│ │ │ 校验+与身份中心 │
|
||||
│ │ │ 交换AccessToken │
|
||||
│ │ <───────────────────────────────────│
|
||||
│ │ │ │
|
||||
│ 登录成功 │ │ │
|
||||
│<───────────────│ │ │
|
||||
```
|
||||
|
||||
### 2.3 应用注册模型
|
||||
|
||||
```sql
|
||||
CREATE TABLE T_APP (
|
||||
app_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
app_name VARCHAR(128) NOT NULL COMMENT '应用名称',
|
||||
app_key VARCHAR(64) NOT NULL UNIQUE COMMENT '应用唯一标识',
|
||||
app_secret VARCHAR(256) NOT NULL COMMENT '应用密钥(加密存储)',
|
||||
app_type TINYINT NOT NULL DEFAULT 1 COMMENT '应用类型:1-B/S 2-C/S 3-API 4-移动端',
|
||||
-- SSO配置
|
||||
sso_protocol VARCHAR(16) NOT NULL DEFAULT 'oidc' COMMENT 'SSO协议:oidc/saml/cas',
|
||||
callback_urls JSON NOT NULL COMMENT '允许的回调URL列表',
|
||||
logout_url VARCHAR(512) COMMENT '登出回调URL',
|
||||
token_endpoint_auth_method VARCHAR(32) DEFAULT 'client_secret_basic',
|
||||
-- 应用访问控制
|
||||
access_level TINYINT NOT NULL DEFAULT 1 COMMENT '访问等级:1-普通 2-敏感 3-高敏感',
|
||||
require_mfa TINYINT NOT NULL DEFAULT 0 COMMENT '是否需要MFA',
|
||||
allowed_ips JSON COMMENT 'IP白名单',
|
||||
allowed_domains JSON COMMENT '域名白名单',
|
||||
-- 权限模型
|
||||
permission_mode VARCHAR(16) DEFAULT 'rbac' COMMENT '权限模式:rbac/abac/hybrid',
|
||||
-- 状态
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-停用 1-启用',
|
||||
-- 审计
|
||||
created_by VARCHAR(64) NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted TINYINT NOT NULL DEFAULT 0,
|
||||
|
||||
INDEX idx_app_key (app_key),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用注册表';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 权限模型(参考亚信接口规范)
|
||||
|
||||
### 3.1 RBAC + ABAC 混合模型
|
||||
|
||||
```
|
||||
┌──────────┐
|
||||
│ 用户 │
|
||||
│ (User) │
|
||||
└────┬─────┘
|
||||
│
|
||||
┌─────────┼─────────┐
|
||||
│ │ │
|
||||
┌─────▼──┐ ┌────▼───┐ ┌────▼───┐
|
||||
│ 组织(Org)│ │ 角色 │ │ 属性 │
|
||||
│ (ABAC) │ │ (Role) │ │(Attr) │
|
||||
└────┬───┘ └────┬───┘ └────┬───┘
|
||||
│ │ │
|
||||
│ ┌─────▼──────┐ │
|
||||
│ │ 权限集 │ │
|
||||
└────┤ (Permission)├──┘
|
||||
│ +策略规则 │
|
||||
└─────┬──────┘
|
||||
│
|
||||
┌─────▼──────┐
|
||||
│ 资源实例 │
|
||||
│ (Resource) │
|
||||
└────────────┘
|
||||
```
|
||||
|
||||
**权限判定引擎流程**:
|
||||
|
||||
```
|
||||
输入: 用户U, 应用A, 操作OP, 资源R, 上下文C
|
||||
|
||||
1. 检查U是否在A的应用白名单中(组织级) → 否→拒绝
|
||||
2. 获取U在A中的角色列表 → 获取角色对应的权限集
|
||||
3. 检查权限集是否包含 (OP, R) → 是→允许
|
||||
4. ABAC规则评估:检查上下文C(时间/IP/设备/MFA等级)
|
||||
→ ABAC规则不满足 → 降级/拒绝
|
||||
5. 返回判定结果
|
||||
```
|
||||
|
||||
### 3.2 核心权限表结构
|
||||
|
||||
```sql
|
||||
-- 角色表
|
||||
CREATE TABLE T_ROLE (
|
||||
role_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
app_id BIGINT NOT NULL COMMENT '所属应用',
|
||||
role_name VARCHAR(64) NOT NULL COMMENT '角色名',
|
||||
role_code VARCHAR(64) NOT NULL COMMENT '角色编码(应用内唯一)',
|
||||
description VARCHAR(256),
|
||||
is_system TINYINT NOT NULL DEFAULT 0 COMMENT '系统预置角色',
|
||||
status TINYINT NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_app_role (app_id, role_code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
||||
|
||||
-- 权限资源表
|
||||
CREATE TABLE T_PERMISSION (
|
||||
perm_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
app_id BIGINT NOT NULL COMMENT '所属应用',
|
||||
resource VARCHAR(128) NOT NULL COMMENT '资源标识: menu:/user/list',
|
||||
action VARCHAR(32) NOT NULL COMMENT '操作: read/write/delete/admin',
|
||||
description VARCHAR(256),
|
||||
status TINYINT NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_app_resource_action (app_id, resource, action)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限资源表';
|
||||
|
||||
-- 角色-权限关联
|
||||
CREATE TABLE T_ROLE_PERMISSION (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
role_id BIGINT NOT NULL,
|
||||
perm_id BIGINT NOT NULL,
|
||||
effect TINYINT NOT NULL DEFAULT 1 COMMENT '1-允许 0-拒绝',
|
||||
UNIQUE KEY uk_role_perm (role_id, perm_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表';
|
||||
|
||||
-- 用户-应用角色分配
|
||||
CREATE TABLE T_USER_APP_ROLE (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
account_id BIGINT NOT NULL COMMENT '用户账号ID',
|
||||
app_id BIGINT NOT NULL COMMENT '应用ID',
|
||||
role_id BIGINT NOT NULL COMMENT '角色ID',
|
||||
grant_type VARCHAR(16) DEFAULT 'direct' COMMENT 'direct-直接分配 org-继承',
|
||||
start_date DATETIME,
|
||||
end_date DATETIME COMMENT '有效期',
|
||||
granted_by VARCHAR(64),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_account_app_role (account_id, app_id, role_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户应用角色分配表';
|
||||
|
||||
-- ABAC策略规则表
|
||||
CREATE TABLE T_ABAC_POLICY (
|
||||
policy_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
app_id BIGINT NOT NULL,
|
||||
policy_name VARCHAR(128) NOT NULL,
|
||||
policy_type VARCHAR(16) NOT NULL COMMENT 'allow/deny',
|
||||
subject_attr JSON COMMENT '主体属性条件',
|
||||
resource_attr JSON COMMENT '资源属性条件',
|
||||
action_cond JSON COMMENT '操作条件',
|
||||
context_cond JSON COMMENT '上下文条件(时间/IP/设备等)',
|
||||
priority INT NOT NULL DEFAULT 0 COMMENT '优先级(数字越大越优先)',
|
||||
status TINYINT NOT NULL DEFAULT 1,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ABAC策略规则表';
|
||||
```
|
||||
|
||||
### 3.3 与应用系统的权限接口规范
|
||||
|
||||
参考亚信安全接口规范,提供以下核心接口供业务系统对接:
|
||||
|
||||
```yaml
|
||||
授权查询接口:
|
||||
GET /api/v1/authorization/check
|
||||
参数:
|
||||
- app_key: 应用标识
|
||||
- uid: 用户ID
|
||||
- resource: 资源路径
|
||||
- action: 操作
|
||||
- context: 上下文(可选JSON)
|
||||
返回: { allowed: true/false, reason: "xxx" }
|
||||
|
||||
用户角色列表:
|
||||
GET /api/v1/apps/{app_key}/users/{uid}/roles
|
||||
返回: [{role_id, role_code, role_name, grant_type, valid_until}]
|
||||
|
||||
用户权限列表:
|
||||
GET /api/v1/apps/{app_key}/users/{uid}/permissions
|
||||
返回: [{resource, action, effect}]
|
||||
|
||||
权限批量校验:
|
||||
POST /api/v1/authorization/batch-check
|
||||
请求体: [{app_key, uid, resource, action, context}, ...]
|
||||
返回: [{allowed, reason}, ...]
|
||||
|
||||
权限同步通知(服务端推送):
|
||||
POST /webhook/app/{app_key}/permission-sync
|
||||
请求体: {event_type: "role_assign"|"role_revoke"|"perm_change",
|
||||
uid, changed_roles, timestamp}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 授权流程
|
||||
|
||||
```
|
||||
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
|
||||
│ 资源申请者 │ │ 审批人 │ │ 权限中心 │ │ 业务应用 │
|
||||
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘
|
||||
│ │ │ │
|
||||
│ 提交权限申请 │ │ │
|
||||
│────────────────>│ │ │
|
||||
│ │ │ │
|
||||
│ 审批通过/拒绝 │ │
|
||||
│ │────────────────>│ │
|
||||
│ │ │ 分配角色 │
|
||||
│ │ │────────────────>│
|
||||
│ │ │ (授权生效通知) │
|
||||
│ 申请结果通知 │ │ │
|
||||
│<───────────────────────────────────────────────────│
|
||||
│ │ │ │
|
||||
│ 使用授权 │ │ │
|
||||
│───────────────────────────────────────────────────>│
|
||||
│ │ │ 鉴权校验 │
|
||||
│<───────────────────────────────────────────────────│
|
||||
```
|
||||
|
||||
**授权模式**支持:
|
||||
1. **手动分配**:管理员为指定用户分配角色
|
||||
2. **申请审批**:用户提交申请 → 上级/安全管理员审批 → 自动生效
|
||||
3. **组织继承**:自动继承所属组织的默认角色集
|
||||
4. **临时授权**:设定生效时间窗口,到期自动回收
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:系统资源管理中心(含堡垒集群)
|
||||
|
||||
## 5. 总体定位
|
||||
|
||||
系统资源管理中心负责**服务器、网络设备、数据库等基础设施资源的权限管理**,包含堡垒机集群集成。核心职责:
|
||||
|
||||
- 管理系统资源的访问权限(SSH/RDP/数据库连接)
|
||||
- 提供堡垒机单点登录和会话录制
|
||||
- 参考泰岳管理模型(反推库结构和接口)
|
||||
- 管理登录凭证、密钥、授权策略
|
||||
|
||||
---
|
||||
|
||||
## 6. 参考泰岳管理模型 - 反推策略
|
||||
|
||||
### 6.1 泰岳系统资源管理模型推断
|
||||
|
||||
基于现网泰岳版4A的运维经验和操作界面观察,反推其数据模型:
|
||||
|
||||
```sql
|
||||
-- 推断的泰岳资产表结构
|
||||
-- T_ASSET
|
||||
-- asset_id BIGINT PK
|
||||
-- asset_name VARCHAR(128) 资产名称
|
||||
-- asset_ip VARCHAR(64) 管理IP
|
||||
-- asset_type TINYINT 资产类型:1-Linux 2-Windows 3-网络设备 4-数据库
|
||||
-- asset_group VARCHAR(128) 所属资产组
|
||||
-- protocol VARCHAR(16) 管理协议:ssh/rdp/telnet
|
||||
-- port INT 端口
|
||||
-- account_auto TINYINT 1-纳管账号 0-手动密码
|
||||
-- auth_mode TINYINT 1-密码 2-密钥 3-双因子
|
||||
-- status TINYINT
|
||||
|
||||
-- 推断的泰岳授权表
|
||||
-- T_ASSET_AUTH
|
||||
-- auth_id BIGINT PK
|
||||
-- asset_id BIGINT FK -> T_ASSET
|
||||
-- account_id BIGINT FK (泰岳内部账号)
|
||||
-- system_account VARCHAR(64) 目标系统账号(root/oracle/...)
|
||||
-- access_level TINYINT 权限等级:1-普通 2-运维 3-管理员
|
||||
-- start_time DATETIME 授权开始
|
||||
-- end_time DATETIME 授权结束
|
||||
-- approver VARCHAR(64)
|
||||
```
|
||||
|
||||
**反推方法论**:
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────┐
|
||||
│ 反推方法 │
|
||||
│ │
|
||||
│ 1. 界面观察法 │
|
||||
│ - 录屏泰岳操作界面,记录所有字段名和排列顺序 │
|
||||
│ - 观察搜索/筛选条件字段(通常映射到DB索引字段) │
|
||||
│ - 导出功能里的列名(CSV/xls导出列名常等于DB列名) │
|
||||
│ │
|
||||
│ 2. API嗅探法 │
|
||||
│ - 浏览器开发者工具抓取泰岳管理的API请求/响应JSON │
|
||||
│ - 关注字段名映射(下划线命名 vs 驼峰命名规律) │
|
||||
│ - 分页参数(limit/offset习惯暗示底层DB) │
|
||||
│ │
|
||||
│ 3. 日志分析法 │
|
||||
│ - 查看泰岳版的操作日志/审计日志字段定义 │
|
||||
│ - 从报错信息中提取表名和字段名(典型:Constraint violation) │
|
||||
│ │
|
||||
│ 4. 行为验证法 │
|
||||
│ - 设置特定值 → 观察界面呈现 → 推断字段类型/约束 │
|
||||
│ - 创建/修改/删除操作 → 推断关联关系和约束条件 │
|
||||
└──────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 6.2 自研系统资源模型
|
||||
|
||||
```sql
|
||||
-- 资产主表
|
||||
CREATE TABLE T_SYSTEM_ASSET (
|
||||
asset_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
asset_name VARCHAR(128) NOT NULL COMMENT '资产名称',
|
||||
asset_ip VARCHAR(64) NOT NULL COMMENT '管理IP',
|
||||
asset_type TINYINT NOT NULL COMMENT '1-Linux 2-Windows 3-网络设备 4-数据库 5-中间件',
|
||||
asset_group_id BIGINT COMMENT '所属资产组',
|
||||
-- 连接信息
|
||||
protocol VARCHAR(16) NOT NULL DEFAULT 'ssh' COMMENT '管理协议:ssh/rdp/telnet/mysql/oracle',
|
||||
port INT NOT NULL DEFAULT 22,
|
||||
-- 凭据管理
|
||||
credential_mode TINYINT NOT NULL DEFAULT 1 COMMENT '1-纳管密码 2-纳管密钥 3-手动输入 4-动态令牌',
|
||||
-- 纳管账号(系统层面的账号,非4A用户账号)
|
||||
managed_account VARCHAR(64) COMMENT '纳管系统账号(root/oracle等)',
|
||||
managed_password_enc VARCHAR(512) COMMENT '纳管密码(AES-256加密)',
|
||||
managed_key_enc TEXT COMMENT '纳管私钥(AES-256加密)',
|
||||
-- 访问控制
|
||||
access_level TINYINT NOT NULL DEFAULT 2 COMMENT '访问等级:1-低 2-中 3-高',
|
||||
allowed_users JSON COMMENT '允许操作的白名单用户列表',
|
||||
-- 堡垒机集成
|
||||
bastion_enabled TINYINT NOT NULL DEFAULT 1 COMMENT '是否通过堡垒机接入',
|
||||
-- 状态
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '0-停用 1-启用 2-维护',
|
||||
-- 元数据
|
||||
department VARCHAR(128) COMMENT '所属部门',
|
||||
location VARCHAR(128) COMMENT '物理位置',
|
||||
vendor VARCHAR(64) COMMENT '厂商',
|
||||
model VARCHAR(64) COMMENT '型号',
|
||||
os_version VARCHAR(64) COMMENT '操作系统版本',
|
||||
remark TEXT,
|
||||
-- 审计
|
||||
created_by VARCHAR(64),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted TINYINT NOT NULL DEFAULT 0,
|
||||
|
||||
INDEX idx_asset_ip (asset_ip),
|
||||
INDEX idx_asset_type (asset_type),
|
||||
INDEX idx_group (asset_group_id),
|
||||
INDEX idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统资产表';
|
||||
|
||||
-- 资产授权表
|
||||
CREATE TABLE T_ASSET_AUTHORIZATION (
|
||||
auth_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
asset_id BIGINT NOT NULL,
|
||||
account_id BIGINT NOT NULL COMMENT '4A用户ID',
|
||||
-- 目标系统身份
|
||||
target_username VARCHAR(64) NOT NULL COMMENT '目标系统账号(root/appuser)',
|
||||
-- 授权信息
|
||||
access_level TINYINT NOT NULL DEFAULT 1 COMMENT '1-只读查看 2-普通操作 3-管理员操作',
|
||||
-- 时间窗口
|
||||
grant_type VARCHAR(16) NOT NULL DEFAULT 'permanent' COMMENT 'permanent-永久 temporary-临时',
|
||||
valid_from DATETIME NOT NULL,
|
||||
valid_until DATETIME,
|
||||
-- 审批信息
|
||||
approval_status TINYINT NOT NULL DEFAULT 0 COMMENT '0-待审批 1-已批准 2-已拒绝 3-已回收',
|
||||
approver_id BIGINT,
|
||||
approved_at DATETIME,
|
||||
-- 行为约束
|
||||
command_filter TEXT COMMENT '允许执行的命令白名单(正则)',
|
||||
file_transfer TINYINT NOT NULL DEFAULT 0 COMMENT '0-禁止 1-允许上传 2-允许下载 3-双向',
|
||||
-- 审计
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
revoked_at DATETIME,
|
||||
revoked_by BIGINT,
|
||||
|
||||
INDEX idx_asset (asset_id),
|
||||
INDEX idx_account (account_id),
|
||||
INDEX idx_valid (valid_from, valid_until),
|
||||
INDEX idx_status (approval_status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产授权表';
|
||||
|
||||
-- 资产组表
|
||||
CREATE TABLE T_ASSET_GROUP (
|
||||
group_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
group_name VARCHAR(128) NOT NULL,
|
||||
parent_id BIGINT,
|
||||
org_code VARCHAR(64) COMMENT '所属组织',
|
||||
description VARCHAR(256),
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产组表';
|
||||
|
||||
-- 账号密码自动轮换配置
|
||||
CREATE TABLE T_CREDENTIAL_ROTATION (
|
||||
rotation_id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
asset_id BIGINT NOT NULL,
|
||||
target_account VARCHAR(64) NOT NULL COMMENT '目标系统账号',
|
||||
rotation_schedule VARCHAR(32) NOT NULL DEFAULT '30d' COMMENT '轮换周期:7d/14d/30d/90d',
|
||||
password_rule JSON COMMENT '密码生成规则',
|
||||
last_rotation DATETIME,
|
||||
next_rotation DATETIME,
|
||||
auto_execute TINYINT NOT NULL DEFAULT 1 COMMENT '是否自动执行',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_asset_account (asset_id, target_account)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='密码轮换配置表';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 堡垒集群集成方案
|
||||
|
||||
### 7.1 架构选择
|
||||
|
||||
采用**代理模式**(非网关代理,而是独立部署堡垒机节点转发流量):
|
||||
|
||||
```
|
||||
┌──────────────┐
|
||||
│ 4A管控平台 │
|
||||
│ (认证+授权) │
|
||||
└──────┬───────┘
|
||||
│ API
|
||||
┌──────────────┼──────────────┐
|
||||
│ │ │
|
||||
┌────────▼───┐ ┌──────▼──────┐ ┌────▼────────┐
|
||||
│ 堡垒节点1 │ │ 堡垒节点2 │ │ 堡垒节点3 │
|
||||
│ (区域A) │ │ (区域B) │ │ (区域C) │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │SSH/RDP │ │ │ │SSH/RDP │ │ │ │SSH/RDP │ │
|
||||
│ │代理 │ │ │ │代理 │ │ │ │代理 │ │
|
||||
│ └────────┘ │ │ └────────┘ │ │ └────────┘ │
|
||||
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
|
||||
│ │ │
|
||||
│ (网络隔离,策略控制) │
|
||||
│ │ │
|
||||
┌──────▼──────┐ ┌─────▼───────┐ ┌────▼──────┐
|
||||
│ 目标服务器1 │ │ 目标服务器2 │ │ 目标服务器3 │
|
||||
│ 10.0.1.10 │ │ 10.0.2.20 │ │ 10.0.3.30 │
|
||||
└─────────────┘ └─────────────┘ └───────────┘
|
||||
```
|
||||
|
||||
### 7.2 堡垒机核心功能
|
||||
|
||||
| 功能 | 说明 | 实现方案 |
|
||||
|------|------|---------|
|
||||
| **SSO登录** | 用户从4A平台认证后直接跳转堡垒机,无需再次认证 | JWT令牌 → 堡垒节点验证 → 建立会话 |
|
||||
| **会话录制** | 记录所有操作步骤(键盘输入 + 屏幕输出) | ttyrec/cast 格式录制,定期归档至对象存储 |
|
||||
| **命令审计** | 记录执行命令,匹配高危命令规则 | 实时监控bash/windows shell日志 |
|
||||
| **文件传输审计** | 追踪SCP/SFTP传输的文件名、大小、路径 | 代理层拦截审计 |
|
||||
| **命令拦截** | 高危命令(rm -rf /, shutdown等)实时阻断 | 自定义shell profile + 命令过滤器 |
|
||||
| **会话同步** | 多人同时监控同一会话 | WebSocket实时同步 |
|
||||
| **事后回放** | 回放录制的会话 | 基于录制文件+时间轴播放器 |
|
||||
|
||||
### 7.3 堡垒节点技术选型
|
||||
|
||||
| 组件 | 推荐 | 备选 |
|
||||
|------|------|------|
|
||||
| 代理核心 | Apache Guacamole(已支持SSH/RDP/VNC) | teleport/ssh-proxy 自研 |
|
||||
| 会话录制 | asciinema (ttyrec格式) | script + scriptreplay |
|
||||
| 命令拦截 | 自定义shell profile (bash_prompt wrapper) | pam_exec模块钩子 |
|
||||
| 文件传输审计 | SFTP proxy (在openssh中集成ForceCommand) | rssh/scponly |
|
||||
| 会话存储 | 本地文件 → 定时上传至MinIO | Ceph RGW |
|
||||
| 会话回放 | asciinema player 前端组件 | 自研播放器组件 |
|
||||
|
||||
### 7.4 堡垒机SSO流程
|
||||
|
||||
```
|
||||
1. 用户从4A平台认证 → 获取JWT (payload含allowed_assets)
|
||||
2. 用户选择目标资产 → 4A平台验证授权
|
||||
3. 4A平台生成一次性堡垒令牌(有效期60秒,含用户+资产+目标账号)
|
||||
4. 用户浏览器跳转至堡垒节点URL(带令牌)
|
||||
5. 堡垒节点验证令牌 → 获取目标账号的真实密码/密钥(加密传输)
|
||||
6. 堡垒节点建立SSH/RDP连接目标资产
|
||||
7. 代理层开始录制和审计
|
||||
8. 会话结束后录制上传至对象存储
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 与泰岳版比对关注点
|
||||
|
||||
| 项 | 自研方案 | 泰岳方案(推测) | 验证方法 |
|
||||
|----|---------|-----------------|---------|
|
||||
| 资产模型 | 通用资产表+扩展属性 | 可能按类型分多表 | 创建各类型资产对比信息完整度 |
|
||||
| 授权粒度 | 命令级黑白名单+时间窗口+文件传输控制 | 类似 | 设置复杂授权策略对比生效情况 |
|
||||
| 堡垒节点 | 基于开源组件(Guacamole) | 自研代理 | 并发连接数对比 |
|
||||
| 密码轮换 | 定时间隔+自动执行 | 类似 | 轮换成功率+时间对比 |
|
||||
| 会话录制 | asciinema格式 | 未知格式 | 存储空间占用+回放体验对比 |
|
||||
| 命令拦截 | shell profile级 | 代理级更底层 | 高危命令漏报率对比 |
|
||||
Reference in New Issue
Block a user