尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

JumpServer 开源特权访问管理(PAM)平台深度解析:架构组件、快速部署与核心配置指南

JumpServer 开源特权访问管理(PAM)平台深度解析:架构组件、快速部署与核心配置指南 JumpServer 开源特权访问管理PAM平台深度解析架构组件、快速部署与核心配置指南【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserverJumpServer 是一个开源的特权访问管理PAM平台即堡垒主机本文以仓库根目录 README.md 为主体结合 config_example.yml、entrypoint.sh、jms、Dockerfile 等仓库文件系统讲解 JumpServer 的定位、快速部署方式、组件架构、核心模块划分与关键配置项帮助读者快速上手并理解其底层实现。什么是 JumpServerJumpServer 是一个开源的特权访问管理PAM平台为 DevOps 和 IT 团队提供按需、安全的访问能力覆盖 SSH、RDP、Kubernetes、数据库Database和 RemoteApp 端点所有访问均通过网页浏览器完成无需在客户端安装专用软件。作为堡垒主机其核心价值在于集中化入口所有运维与开发人员的特权访问统一经由 JumpServer 代理资产口令不再直接暴露给终端用户细粒度授权通过用户、资产、权限规则Perms的交叉控制实现谁、在什么时间、能访问哪些资产、执行哪些操作的管控全程审计对字符协议SSH、图形协议RDP/VNC会话进行录像与命令记录形成可追溯的审计证据。从仓库源码看这一能力由 apps 下的多个 Django 应用协同实现包括assets资产管理、accounts账号与自动化、terminal会话与连接、audits审计、perms授权等后文会展开说明。快速入门一条命令完成部署README 给出了开箱即用的快速部署方式。准备一台干净的 64 位 Linux 服务器配置不低于 4 核 8G 4c8g执行官方快速启动脚本即可拉起整套环境curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash部署完成后在浏览器中访问http://your-jumpserver-ip/使用默认凭据登录用户名admin密码ChangeMe安全提示登录后应立即修改默认密码。生产环境务必配置独立的SECRET_KEY与BOOTSTRAP_TOKEN详见下文配置章节。从源码运行与容器运行除一键脚本外本仓库同时支持两种主流运行方式1. 容器化运行官方推荐Dockerfile 定义了核心镜像的构建方式基于jumpserver/core-base构建产物安装cron、postgresql-client、openssh-client、sshpass、bubblewrap、docker-cli等运行时依赖并通过VOLUME /opt/jumpserver/data持久化数据。镜像的启动入口为 entrypoint.sh默认命令为start all即启动全部核心服务ENTRYPOINT [./entrypoint.sh] EXPOSE 8080 8088 CMD [start, all]entrypoint.sh 在启动前会清理临时 PID 文件并支持三种运行模式bash/sh进入交互式 Shell 排障sleep容器保持存活例如等待外部数据库就绪其他启动 cron 后转交python jms执行实际动作。2. 源码直接运行仓库根目录的 jms 是 JumpServer 的服务控制工具支持以下动作python jms start all -d # 后台启动全部服务web / task / ai python jms start web # 仅启动 Web 服务 python jms status # 查看服务状态 python jms restart all # 重启 python jms upgrade_db # 升级数据库collectstatic migrate python jms collect_static # 收集静态文件其内部启动流程对应 jms 中的prepare()依次执行检查数据库连接最多重试 60 次每次间隔 1 秒失败则以退出码 10 终止升级数据库执行collectstatic与 Djangomigrate过期缓存清理调用expire_caches管理命令下载 IP 库自动下载 GeoIP/ipip 离线 IP 定位库GeoLite2-City.mmdb、ipipfree.ipdb安装内置 Applets并初始化 OAuth2 Provider。首次运行前需要先准备配置文件cp config_example.yml config.ymljms 在找不到配置时会明确提示该命令。组件架构JumpServer 的功能骨架JumpServer 由多个关键组件共同构成其功能框架为用户提供全面的操作管理和安全控制能力。下表完整列出 README 声明的全部组件组件描述LinaJumpServer Web UI网页控制台LunaJumpServer Web Terminal网页终端KoKoJumpServer 字符协议连接器SSH 等字符会话LionJumpServer 图形协议连接器RDP 等图形会话ChenJumpServer Web 数据库网页数据库客户端ClientJumpServer 客户端TinkerJumpServer 远程应用连接器WindowsPandaJumpServer EE 远程应用连接器LinuxRazorJumpServer EE RDP 代理连接器MagnusJumpServer EE 数据库代理连接器NecJumpServer EE VNC 代理连接器FaceliveJumpServer EE 面部识别组件协作关系可以理解为控制面LinaWeb UI与 JumpServer Core本仓库Django 后端负责资产管理、账号托管、授权策略、审计记录与配置下发数据面KoKo字符、Lion图形、Chen数据库、Tinker/Panda远程应用等连接器负责建立到目标资产的真实会话通道并将会话录像/命令回传核心企业扩展RazorRDP 代理、Magnus数据库代理、NecVNC 代理、Facelive人脸识别属于 EE企业版组件在社区版中不可用。其中Tinker、Panda、Razor、Magnus、Nec、Facelive在 README 中标注为release: private属于企业版私有仓库组件社区开源版主要包含 Lina、Luna、KoKo、Lion、Chen、Client 与 Core 本身。源码视角核心目录与后端能力本仓库即 JumpServer 的Core核心服务基于 Python Django 框架实现。从 apps 目录结构可以看出其主要功能域目录职责apps/assets资产管理主机/数据库/云资产、节点树、平台与协议、网域、自动化ping、采集apps/accounts账号管理账号统一纳管、改密/推拉/采集/校验等自动化、Vault 凭据托管apps/terminal会话与连接会话生命周期、连接方法、Applets、后端WebSocket 等apps/perms授权策略资产授权、应用授权、授权树apps/acls访问控制登录 ACL、命令过滤、数据脱敏、剪贴板控制、连接方式控制apps/audits审计登录日志、操作日志、FTP/会话日志支持 DB 与 ES 后端apps/authentication认证本地/SSO/LDAP/OIDC/CAS/SAML2/Radius/Passkey/UK 等多种认证方式apps/users用户体系用户、用户组、MFA、SSH Key 等apps/orgs多组织组织隔离与跨组织授权apps/rbac基于角色的访问控制RBACapps/tickets工单流申请、审批、授权联动apps/settings系统设置平台配置的 API 与序列化层当前仓库版本号定义在 apps/jumpserver/const.pyVERSION 2.0.0并在启动时通过ConfigManager.load_user_config()加载用户配置文件config.yml。核心配置详解JumpServer 的配置以 config_example.yml 为模板复制为config.yml后按需修改。配置加载与敏感项加密由 apps/jumpserver/conf.py 实现。以下为关键配置项的分类说明。基础与安全配置项说明SECRET_KEYDjango 加密密钥。生产环境必须改为随机字符串并保密可用cat /dev/urandom \| tr -dc A-Za-z0-9 \| head -c 49;echo生成BOOTSTRAP_TOKEN预共享 TokenKoKo、Guacamole 等连接器用于注册服务账号DEBUG开发调试开关开启后错误时显示完整堆栈生产环境应关闭LOG_LEVEL日志级别DEBUG / INFO / WARNING / ERROR / CRITICALSESSION_COOKIE_AGE浏览器 Session 过期时间默认 3600 秒1 小时SESSION_EXPIRE_AT_BROWSER_CLOSE浏览器关闭页面后会话是否过期默认 False安全实现细节conf.py 中的ConfigCrypto使用国密SM4ECB 模式对SECRET_KEY、DB_PASSWORD、REDIS_PASSWORD等敏感配置进行加解密密钥来源于环境变量SECRET_ENCRYPT_KEY实现配置文件的落盘保护。数据库与 Redis# SQLite单文件数据库 # DB_ENGINE: sqlite3 # DB_NAME: # PostgreSQL DB_ENGINE: postgresql DB_HOST: 127.0.0.1 DB_PORT: 5432 DB_USER: jumpserver DB_PASSWORD: DB_NAME: jumpserver # RedisCelery 消息代理与 WebSocket 共享 REDIS_HOST: 127.0.0.1 REDIS_PORT: 6379 # REDIS_PASSWORD: # REDIS_DB_CELERY: 3 # REDIS_DB_CACHE: 4从 conf.py 的默认值可见代码默认DB_ENGINE为mysql示例配置则给出 PostgreSQL 写法且 Redis 默认按用途分库Celery3、Cache4另有 Session5、WS6。还支持 Redis SentinelREDIS_SENTINEL_HOSTS与 SSL 连接等高级选项。服务监听地址HTTP_BIND_HOST: 0.0.0.0 HTTP_LISTEN_PORT: 8080 WS_LISTEN_PORT: 8070对应 Djangorunserver绑定端口与 WebSocket 监听端口容器镜像额外暴露 8088 端口见 Dockerfile。凭据保险库Vault / OpenBao# VAULT_ENABLED: true # VAULT_BACKEND: openbao # VAULT_OPENBAO_ADDR: http://openbao:8200 # VAULT_OPENBAO_MOUNT_POINT: pam # VAULT_OPENBAO_TOKEN: # VAULT_OPENBAO_TIMEOUT: 10开启后默认使用内置OpenBao作为 Vault 后端托管账号密钥等敏感凭据启用前需先完成 OpenBao Server 的初始化与授权。仓库中 apps/accounts/backends/openbao 即该后端的实现。此外还支持OpenBao SSH CASSH 证书签名能力可独立配置地址、Token 与挂载点为 SSH 登录签发短期证书# SSH_CA_ENABLED: false # SSH_CA_OPENBAO_ADDR: http://openbao:8200 # SSH_CA_OPENBAO_ROLE: jumpserver # SSH_CA_OPENBAO_TTL: 300自动化任务与大规模改密超时config_example.yml 针对 Ansible 自动化如批量改密给出了非常详尽的超时模型是生产调优的重点ANSIBLE_RUNNER_JOB_TIMEOUT单个 80 资产批次的总时长上限默认建议 1800 秒它不是整个任务的超时不要因资产总量大而盲目调大ANSIBLE_RUNNER_IDLE_TIMEOUT单批连续无 Ansible 事件输出即视为卡死并终止默认建议 900 秒ANSIBLE_STALL_LOG_INTERVAL记录仍在执行 task 的主机的时间间隔只记录、不终止ANSIBLE_AUTOMATION_TASK_TIMEOUT每台主机执行单个 Ansible task 的默认最长时间playbook 显式设置时以 playbook 为准ANSIBLE_AUTOMATION_TOTAL_TIMEOUT整个自动化任务含准备、全部批次、写结果的最长时间大规模改密主要调整此项SSH_GATEWAY_CONNECT_TIMEOUT单次网关建隧道超时DNS/TCP/SSH 握手/认证总等待。README 配置注释中给出的容量估算公式ceil(资产总数 / 80) * 单批 P95 耗时秒 * 1.3。例如 1 万资产、2 万账号约 125 批若单批 P95 为 3 分钟建议TOTAL_TIMEOUT至少 32400 秒9 小时为 5 分钟则建议 54000 秒15 小时。注意TOTAL_TIMEOUT设为 0 会关闭整任务安全时限此时改密账号锁最长保留 24 小时生产环境通常不建议如此配置。认证与安全策略# LDAP / AD # AUTH_LDAP_SEARCH_PAGED_SIZE: 1000 # AUTH_LDAP_SYNC_IS_PERIODIC: True # AUTH_LDAP_SYNC_INTERVAL: 12 # 同步间隔小时 # AUTH_LDAP_SYNC_CRONTAB: * 6 * * * # 或 Crontab 表达式 # OTP / MFA # OTP_VALID_WINDOW: 0 # OTP_ISSUER_NAME: JumpServer # 会话与登录策略 # ONLY_ALLOW_AUTH_FROM_SOURCE: False # 仅允许用户从来源处登录 # ONLY_ALLOW_EXIST_USER_AUTH: False # 禁止第三方认证后自动创建用户 # SECURITY_WATERMARK_ENABLED: False # Luna 水印开关 # PERIOD_TASK_ENABLED: True # 启用定时任务人脸识别可选人脸识别默认关闭需先下载模型再显式开启详见 requirements/download_face_models.py# uv run python requirements/download_face_models.py # FACE_RECOGNITION_ENABLED: false # FACE_RECOGNITION_COSINE_THRESHOLD: 0.45 # FACE_RECOGNITION_DEVICE: auto # auto, cpu, gpu # FACE_LIVENESS_MODE: motion # off, motion, onnx, hybrid许可与贡献JumpServer 遵循GNU GPLv3开源协议Copyright (c) 2014-2026 FIT2CLOUD代码以 AS IS 方式分发。社区贡献请参考 CONTRIBUTING.md欢迎以 PR 形式参与。总结本文以 README.md 为核心系统梳理了 JumpServer 作为开源 PAM 平台的定位、一条命令的快速部署方式、由 12 个组件构成的功能骨架并结合 config_example.yml、jms、entrypoint.sh、Dockerfile 与 apps/jumpserver/conf.py 等仓库源码深入讲解了配置加载机制含 SM4 敏感信息加密、数据库/Redis/OpenBao 选型以及大规模改密的 Ansible 超时模型。对于需要落地堡垒机/特权访问管理能力的团队可按先快速启动验证 → 再按规模调优超时与高可用 → 最后接入 LDAP/OIDC 与 Vault的路径逐步演进。【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表