V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guoguobaba
V2EX  ›  程序员

小团队开发测试环境怎么解决

  •  
  •   guoguobaba · 42 天前 · 6595 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小团队,没有专门的 it 人员,分散在各地,测试环境,生产环境都有。生产环境还好,测试环境,各地的开发人员习惯直接把测试数据库端口映射到公网,然后自己对接上去,还有些 ssh 能登录的环境,也都是 root 登录,总之挺混乱的。

    现在主要是某些人离职后,想禁止他在访问测试环境,就得把所有密码再改一遍。ssh 这块还好说,基本上都是删除公钥的防止禁止他再访问。但是数据库每次改密码就很麻烦。

    有什么好的解决方案吗?

    第 1 条附言  ·  42 天前
    这里有几个问题,说一下:

    1 、硬件环境有云服务器和私有的物理服务器,因为用的是共享办公环境,所以私有的物理服务器通过 frpc/frps 在云服务器上暴露端口;云服务器主要担当跳板环境。

    2 、软件环境包括 ssh 服务,数据库服务,以及应用服务器,应用服务器主要是些 java 应用,也是可以公网访问的,通过 frpc+k8s+ingress ,使用不同的域名访问不同的应用。测试用户的账号密码我看了一下,很简单,这个也准备收归到内网,然后使用权限管控。
    第 2 条附言  ·  39 天前
    1. 目前的方案,设置一个跳板机,自动从 gitlab 同步用户的 key ,只有添加到 dev 组的用户才可以使用跳板机 ssh 登录,然后访问内部的数据库。

    2 、测试的应用系统还没有改造,准备使用 wireguard ,同样,自动从 gitlab 同步用户的 key ,等 wireguard 连接后,手动设置域名访问测试的应用系统。
    第 3 条附言  ·  20 天前

    目前的方案:

    网络访问控制(WireGuard VPN)

    • 构建 WireGuard Server,作为统一的内网访问入口。
    • 所有开发人员设备必须配置 WireGuard Client 才能访问测试与内部资源。
    • WireGuard 配置:
      • 私网 IP 段:10.99.0.0/16
      • 仅 VPN 内可访问数据库、SSH、应用测试环境。
      • 在 WireGuard 服务器上设置 iptables/nftables,限制 VPN 客户端可访问的内网服务范围(最小权限原则)。

    GitLab 集成自动化管理

    1. 在 GitLab 创建 dev 组。
    2. 每个成员建立仓库 <user>/<user>-key,其中存放 wg-key 文件(WireGuard Private Key)。
      • 每人可维护多个 key(最多 5 个),支持多设备。
    3. WireGuard 服务器运行定时任务:
      • 定时(如每 5 分钟)调用 GitLab API 拉取 dev 组成员的 key 文件。
      • 计算对应的 Public Key
      • 更新 /etc/wireguard/wg0.conf 并自动 wg sync
    4. 禁用成员时:
      • GitLab 中移除该成员 → 自动脚本检测不到 key → 从 wg0.conf 删除 → 立即断开连接。

    Web 自助服务平台

    • 提供一个基于 FastAPI 的管理页面:
      1. 生成 Private Key(调用 wg genkey)。
      2. 生成 Public Key(echo <private_key> | wg pubkey)。
      3. 提供客户端 wg0.conf 下载(内含服务器公钥、Endpoint、AllowedIPs、DNS 配置)。
    • 用户流程:
      • 登录 Web → 生成私钥 → 上传至 GitLab 项目 → 等待服务端同步 → 下载完整配置文件 → 连接 WireGuard。

    内网 DNS 管理(dnsmasq)

    • WireGuard Server 安装 dnsmasq,维护内网常用服务解析。

    • /etc/dnsmasq.hosts.d/custom_hosts

      10.99.1.10   db.test.local
      10.99.1.11   app1.test.local
      10.99.1.12   git.test.local
      
    • WireGuard 配置中推送 DNS = 10.99.0.1,确保 VPN 内域名解析正确。


    51 条回复    2025-07-26 18:40:34 +08:00
    infun
        1
    infun  
       42 天前
    MySQL 我记得是可以创建独立用户的吧,而且可以针对用户分配权限
    入职分配用户名,离职直接删除对应用户就可以了
    guoguobaba
        2
    guoguobaba  
    OP
       42 天前
    @infun 就是有 n 个 ssh 环境,m 个数据库环境,每个环境设账号密码,离职的时候还要手动删除,这个就很麻烦。
    ronen
        3
    ronen  
       42 天前 via Android   ❤️ 3
    人教人,教不會,事教人,一教就會。
    先把 vpn 搞好,禁了公網訪問吧。
    brianinzz
        4
    brianinzz  
       42 天前   ❤️ 1
    能上 vpn 上 vpn
    没法上 vpn 就只开 ssh 的端口出去,每个人一个账号,访问其他应用都让他们走 ssh 隧道.
    用的时候他们本地启动一个隧道转发就行了 xshell mobaxterm 这些都支持
    最不济 cmd/terminel 直接一行命令 ssh -N -L 本地端口:127.0.0.1:服务端口 root@外网 ip -p ssh 外网端口
    最最不济你把这行命令搞到 bat 里封个脚本让他们一键启动
    这样就只需要到管理 服务器账号 就行了
    lyusantu
        5
    lyusantu  
       42 天前
    给测试环境/生产环境的数据库端口设置 IP 白名单
    infun
        6
    infun  
       42 天前
    @guoguobaba
    不用手动吧, 系统管理员用脚本跑呢?
    javalaw2010
        7
    javalaw2010  
       42 天前
    用 zerotier 之类的工具虚拟组网。
    infun
        8
    infun  
       42 天前
    当然最好是上 VPN
    lumen
        9
    lumen  
       42 天前   ❤️ 8
    企业里面很多事情看似是技术问题,其实不是
    这种事情你做了不费力不讨好
    只有等真的出事故了老板才会重视起来
    所以你唯一要做的就是,等着出事故:-)
    ropon
        10
    ropon  
       42 天前
    各地 比如借助 OA 动态添加 IP 白名单,白名单有时效;或者 VPN
    YangQingLin
        11
    YangQingLin  
       42 天前
    我们公司是使用自部署的一个堡垒机([JumpServer]( https://jumpserver.org/))服务作为统一的访问入口的。

    每个人入职会分配一个堡垒机账号,每个账号能访问哪些资源(服务器 ssh 、数据库等)都是可以配置的。

    想要连接拥有的那些资源,可以直接通过堡垒机网站连接,或者点击获取一个临时的账号密码(堡垒机实时生成)然后放到软件里面,体验上和直连没什么区别;而且权限配置操作是图形化的,使用起来很方便。

    个人也可以把自己电脑的公钥放到堡垒机上,这样连接某些资源就不再需要每次输密码了。

    不过连接了服务器之后也还是可以手动把公钥写进去的,而且连接之后会展示一些欢迎信息,其中包含了跳转地址的 IP ,所以如果你比较注重资产安全的话最好把堡垒机服务部署在可以内网连接其它资源的地方,只把堡垒机的公网 IP 暴露出来。
    huangsen365
        12
    huangsen365  
       42 天前
    你们这种情况缺运维,我是专门做运维很清楚。
    你需要找个会运维的朋友咨询一下专业做法,多少涉及网络安全领域了
    oneisall8955
        13
    oneisall8955  
    PRO
       42 天前
    至少要搞个 VPN ,测试环境被渗透,搞到公司内网就 G 了
    duanxianze
        14
    duanxianze  
       42 天前
    管他呢,出了事再说
    pota
        15
    pota  
       42 天前
    配置个 vpn 所有环境必须走 VPN 才能连接。必须要开放服务器 ssh 的上堡垒机 这样的话只需要管理 vpn 和堡垒机账号就行了
    brom111
        16
    brom111  
       42 天前
    最简单就是 服务器环境搞白名单算了。。
    guanyujia5444
        17
    guanyujia5444  
       42 天前
    VPN+堡垒机,Jumpserver+anylink 这两个开源产品就可以实现,而且很优秀
    EastLord
        18
    EastLord  
       42 天前
    你如果不是领导就不管
    guanyujia5444
        19
    guanyujia5444  
       42 天前
    人员权限管控,就用域账户接入 Jumpserver+anylink ,离职人员直接禁用域账户,就解决了
    la2la
        20
    la2la  
       42 天前
    不是领导管这个干啥
    记得使用 root 权限谨慎一点,不要给自己惹麻烦
    xuxuxu123
        21
    xuxuxu123  
       42 天前
    建议使用 jumpserver
    项目管理、代码开发、环境部署 可以考虑阿里云云效
    Vegetable
        22
    Vegetable  
       42 天前
    vpn / jumpserver 都行。
    kcccc
        23
    kcccc  
       42 天前
    感觉不是解决方案的问题,是没有人想管,也没有人管的问题。
    不管用了啥方案,都还得是有人要专门管理的,要不也一样觉得麻烦。
    yiyiniu
        24
    yiyiniu  
       42 天前
    @guoguobaba https://www.v2ex.com/t/1145352#reply0 这个就是专门为 IT 团队,管理每个人数据库的工具。可以给每个团队员工分配用户账号,连接哪个数据库,他们使用代理,在 MySQL 客户端配置上直接连就行。 后面等项目解散了,你这边统一取消员工的关联资产(数据库) 目前我们在使用中,可以给申请个授权试试。
    yiyiniu
        25
    yiyiniu  
       42 天前
    @guoguobaba 你给他们分配的是代理连接账号,根据不需要 SSH 、Root 等信息。
    linzyjx
        26
    linzyjx  
       42 天前
    至少搞个 vpn 吧。wireguard 或者 openVPN 啥的部署很简单。
    非对外服务不要暴露到公网,统一走 vpn 访问。
    离职的话把 vpn 公钥或者配置文件吊销就可以了。

    再高级点上零信任,或者买个 waf 对公网 web 做统一接入(雷池现在有这功能)
    lhsakudsgdsik
        27
    lhsakudsgdsik  
       42 天前
    你的意思是服务数据库都在本地的私有服务器,云服务器只是搭 frp 起到转发的作用吗?如果是这样的话,核心就是云平台权限控制了,只要不给云服务器账号密码,云服务器设置白名单只允许指定 IP 访问就行了,人员离职后知道数据库密码也访问不了啊
    chfight
        28
    chfight  
       42 天前
    可以从路由器上连通多个内网,不需要开发人员任何额外的操作
    chendl111
        29
    chendl111  
       42 天前
    收回权限,vpn 控制
    linuxsir2020
        30
    linuxsir2020  
       42 天前
    Jump Server .... 另外鼓励基于 Role 分配权限, 尽量不要给单独账号赋权....
    cumt21g
        31
    cumt21g  
       42 天前
    ldap, vpn, jumpserver
    谁特么私自搞隧道,vpn 的一律开除
    3dward
        32
    3dward  
       42 天前 via Android
    试试 teleport ,有一点点学习门槛
    guanzhangzhang
        33
    guanzhangzhang  
       42 天前
    先办公网 vpn ,让人能在家办公,这样解决了 frpc 啥的,其次再堡垒机或者 acl 审计 vpn 网络访问策略
    alexsz
        34
    alexsz  
       42 天前
    如楼上 V 友所说,根据你目前的状态,启用云服务器的安全组 IP 白名单 是简单有效的方案
    对于开发人员使用动态 IP 的情况,可以使用通过云服务平台的 API 接口自动增删 IP 白名单,不用登录云服务器控制台修改
    LitterGopher
        35
    LitterGopher  
       42 天前
    最简单的办法: 不要在测试环境放任何有价值的东西,
    LitterGopher
        36
    LitterGopher  
       42 天前
    1. 不要在测试环境放任何有价值的东西, 崩了就崩了.
    2. 隔绝测试环境和生产环境, 不要让测试环境成为生产环境的跳板.
    3. 除非你是负责人, 否者不要费力两头不讨好.
    salmon5
        37
    salmon5  
       42 天前
    vpn ,所有测试环境,s2s vpn 到一个内网,离职后,回收 vpn 权限
    collery
        38
    collery  
       42 天前
    vpn 跳板机
    icecoffee531
        39
    icecoffee531  
       42 天前
    最根本解决方案还是 VPN 走内网,数据库暴露公网本身就不是什么安全的方式
    如果 k8s 本身能访问数据库可以考虑用 kt-connect 直接跟 k8s 网络打通。这样也可以不用部署 vpn 了
    MXMIS
        40
    MXMIS  
       42 天前
    堡垒机或者 VPN 是比较合适的方案,成本也不高
    zhuangzhuang1988
        41
    zhuangzhuang1988  
       41 天前
    easytier 简简单单。
    22too
        42
    22too  
       41 天前
    最简单的方案,就是 vpn 。 有效,安全,可以快速革除历史问题。

    然后继续细化堡垒机等等策略。
    lcsoul
        43
    lcsoul  
       41 天前
    公安报备下 VPN 然后用 VPN 吧 我之前公司就是非公司网络 使用 VPN 访问内部环境
    xubeiyou
        44
    xubeiyou  
       41 天前
    VPN
    duzhuo
        45
    duzhuo  
       41 天前
    映射到公网,怎么想出来的
    kaedea
        46
    kaedea  
       41 天前 via Android
    是不是对大团队的测试环境 & 框架工具有什么误解?
    yiyiniu
        47
    yiyiniu  
       41 天前
    @guoguobaba 我们测试环境和你的类似,可以给你沟通下管理策略,可以留个 V
    lm930129
        48
    lm930129  
       41 天前
    可以用堡垒机( jumpserver 之类的)做内网资源访问,frp 这种东西,就应该禁用。然后对于内网的访问,大部分情况应该使用 sd-wan 技术来打通内网,开源可以考虑 tailscale 或 easytier ,这东西使用你的网络就可以直接访问内网资源。
    然后网段也可以分一下
    mm2x
        49
    mm2x  
       41 天前
    frp 映射有插件 支持多用户还有面板。你到时候直接禁止了不就好了
    smallparking
        50
    smallparking  
       40 天前 via Android
    或者使用统一认证的软件 比如都用 ldap 认证?
    bingfengfeifei
        51
    bingfengfeifei  
       39 天前
    肯定要 VPN 啊,如果没有公网 IP 的话,至少也是自建 planet zerotier 这种穿透的 VPN 方案。
    这种暴露端口的,你们如果不是专门的网络安全人员,没有一些基本的安全意识,很可能会被搞的。除非 IPv6
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5430 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:00 · PVG 15:00 · LAX 00:00 · JFK 03:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.