Scanopy 企业级部署:多用户管理与权限控制完整指南
2026/8/23 14:32:36 网站建设 项目流程

Scanopy 企业级部署:多用户管理与权限控制完整指南

【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopy

Scanopy 是一款能自动绘制并持续更新网络拓扑图的开源平台,它取代手工绘制的静态网络架构图,让企业基础设施模型始终反映真实运行状态。本文面向需要企业级部署的团队,讲解如何完成多用户接入、四级角色权限控制、网络级访问隔离与对外安全分享,帮助你快速建立一套可控、可审计的网络文档体系。

Scanopy 企业级部署概览

Scanopy 由服务端 + 分布式扫描代理(Daemon)+ Web UI三部分组成:

  • 服务端:存储拓扑数据、管理组织与权限,Docker Compose 一键拉起,UI 默认运行在http://<服务器IP>:60072
  • 扫描代理:部署在各个网段,负责 SNMP/LLDP/ARP 扫描与容器发现,多站点、多 VLAN 环境可部署多个代理,实现分布式扫描;
  • Web UI:提供 L2(物理)、L3(逻辑)、工作负载、应用依赖四种视图,支持导出 SVG、Mermaid 与 Confluence 格式。

💡 企业部署的最小起点:使用 docker-compose.yml 拉起服务端,按站点部署扫描代理即可。商业部署可用 docker-compose.commercial.yml。

一键部署:从 Docker Compose 到多站点扫描

第一步:部署服务端

# 拉取仓库后 docker compose up -d

第二步:创建组织与账号

访问 UI 创建账号,第一个账号将成为组织Owner。团队成员通过邀请邮件加入同一组织。

第三步:部署扫描代理覆盖全网点

跨站点或跨 VLAN 环境时,在每个网段部署一个 Daemon,由服务端统一调度扫描。代理支持 Linux/FreeBSD/macOS/Windows 多平台安装脚本,安装逻辑见 backend/src/daemon/install/。

一次扫描即可生成四种视图,这是 Scanopy 权限管理的"数据底座":

视图内容
L2 物理视图交换机、端口、链路
L3 逻辑视图子网与跨子网主机连接
工作负载视图裸机、虚拟机、容器
应用视图服务与应用依赖关系

Scanopy 四级角色权限详解(RBAC)

Scanopy 内置组织级 RBAC,共 4 个角色,定义在 backend/src/server/users/impl/permissions.rs:

角色能做什么典型用户
Owner全部权限,唯一能任命 Admin 的角色平台负责人
Admin管理成员、网络、扫描配置;可创建 Member/Viewer运维主管
Member创建与维护拓扑内容网络工程师
Viewer只读浏览,默认角色管理层、外部协作

🔐 权限继承规则很关键:用户只能授予不高于自己角色的权限grantable_user_permissions),只有 Owner 能创建 Admin,Admin 只能创建 Member 和 Viewer。这套"最小授权"设计天然防止权限膨胀。

后端通过 backend/src/server/auth/middleware/permissions.rs 的PermissionRequirement中间件对每个 API 路由强制校验角色,Viewer 请求写操作会被直接拦截,无需前端兜底。

如何为不同团队分配角色

推荐做法:

  1. Owner 只留 1~2 人,避免权限集中;
  2. 每个网段/团队指定 1 名 Admin 做日常运维;
  3. 网络、安全、开发团队按职责给 Member 或 Viewer;
  4. 离职时直接移除成员,其创建的内容保留在组织中。

网络级访问控制:按网段隔离数据

企业最常见的需求是"网络团队看核心网,云团队只看云网"。Scanopy 支持组织内的网络级隔离:用户的network_ids字段记录其可访问的网络范围,见 backend/migrations/20251123232748_network-permissions.sql。

配置方法(最佳实践):

  • 按物理站点或业务域划分 Network(如HQ-CoreBranch-EastCloud);
  • 在每个 Network 下分别部署 Daemon 扫描;
  • 将用户只绑定到其负责的网络,Viewer 角色 + 限定网络 = 最安全的对外可见方案。

API 密钥与最小权限原则

自动化场景(CI 巡检、脚本接入)请使用API 密钥而非个人账号,密钥同样绑定角色等级(见 backend/migrations/20251228010000_user_api_keys.sql):

  • 用户只能签发不高于自身角色的密钥(grantable_api_key_permissions);
  • 给 CI 机器人签发 Viewer 只读密钥,泄露时爆炸半径最小;
  • Daemon 使用独立的 API Key 通道,与服务端通信链路分离(见 backend/src/server/daemon_api_keys/)。

安全分享:把活的网络地图给外部干系人

需要向客户、供应商展示网络而不开放账号?Scanopy 的Share(分享)功能专为这个场景设计,字段定义见 backend/src/server/shares/impl/base.rs:

控制项说明
过期时间expires_at,到期链接自动失效
访问密码密码以哈希存储,接口永不下发明文
嵌入域名白名单allowed_domains,限制只能内嵌到指定网站
界面裁剪可隐藏检查面板、缩放控件、导出按钮、小地图
视图限定enabled_views只开放指定视图,如仅展示 L3 逻辑图
一键禁用关闭后链接直接返回 404

外部分享最佳实践:Viewer 视角 + 只开放 L3 视图 + 7 天过期 + 密码保护 + 嵌入白名单,即可安全地把"活地图"放进 Confluence 或客户门户。

开启 SSO 单点登录(OIDC)

企业统一身份接入:Scanopy 支持OIDC 单点登录(迁移脚本见 backend/migrations/20251107222650_oidc-auth.sql,参考配置 oidc.toml.example):

  1. 在 IdP(如 Keycloak、Entra ID)创建应用回调指向 Scanopy;
  2. 服务端配置 OIDC 参数后,成员可用企业账号直接登录;
  3. 登录态由会话纪元(session epoch)机制管理,异常时可批量下线全部会话(见 backend/migrations/20260705120000_add_user_session_epoch.sql)。

配合邮箱验证与邀请流程(backend/src/server/auth/handlers/verification.rs),可杜绝未经验证的邮箱进入组织。

企业部署权限控制清单 ✅

场景推荐配置
组织治理1 个 Owner + 若干 Admin,角色授予走最小权限
跨团队Network 级隔离,用户只绑定所属网络
自动化只读 API Key,不用个人账号跑脚本
外部协作Share 链接:密码 + 过期 + 视图限定 + 域名白名单
身份OIDC SSO + 邮箱验证
多站点每站点一个 Daemon,服务端统一调度

总结

Scanopy 的企业级部署核心是三件事:用四级角色管好"人",用网络级隔离管好"数据",用受限分享管好"出口"。从 Docker Compose 一键部署,到 OIDC 单点登录与最小权限 API 密钥,整套机制都内置在服务端,无需二次开发。团队规模再大,网络文档也能始终"自己更新、权限分明"。

【免费下载链接】scanopyNetwork diagrams that update themselves项目地址: https://gitcode.com/gh_mirrors/ne/scanopy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询