Files
Hugo/4a-system-design/resource-centers.md
T

27 KiB
Raw Blame History

应用资源管理中心 + 系统资源管理中心(含堡垒集群)

本文件涵盖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 应用注册模型

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 核心权限表结构

-- 角色表
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 与应用系统的权限接口规范

参考亚信安全接口规范,提供以下核心接口供业务系统对接:

授权查询接口:
  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的运维经验和操作界面观察,反推其数据模型:

-- 推断的泰岳资产表结构
-- 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 自研系统资源模型

-- 资产主表
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级 代理级更底层 高危命令漏报率对比