V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
followyourheart
V2EX  ›  程序员

关于开发人员离职 服务器和数据库密码修改问题

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

    服务器和数据密码都是写在代码的配置文件里的,开发人员离职需要重新修改一遍,比较麻烦,有没有比较好的解决方案不需要修改?

    79 条回复    2021-08-27 16:09:09 +08:00
    v2Mark
        1
    v2Mark   59 天前   ❤️ 5
    rm -rf *
    zoharSoul
        2
    zoharSoul   59 天前
    不修改.
    他离职了又连不上, 有啥好改的
    JKeita
        3
    JKeita   59 天前
    线上配置脱离代码库呗
    followyourheart
        4
    followyourheart   59 天前   ❤️ 1
    @zoharSoul #2 都在阿里云上
    JaaaaackZheng
        5
    JaaaaackZheng   59 天前   ❤️ 1
    没有堡垒机么,加一层堡垒机可解
    zoharSoul
        6
    zoharSoul   59 天前
    @followyourheart #4 没懂你意思, 在阿里云咋了
    abigeater
        7
    abigeater   59 天前
    不修改吧
    发现职场氛围越好的公司对这些越不在意(可能我待的是小公司的问题)
    yanzhiling2001
        8
    yanzhiling2001   59 天前
    服务器的数据库密码都是绑定在内网的,仅允许内网 VPN 登陆
    feitxue
        9
    feitxue   59 天前
    数据库哪里都可以连?没有白名单吗?
    wqhui
        10
    wqhui   59 天前
    一般员工都不知道服务器以及数据库密码,通过 ssh 免密或者堡垒机登陆,离职后直接把员工对应的密钥或者账号禁用就行
    @abigeater 跟氛围没什么关系,虽然很少有人会搞前公司,但要真遇上了就损失很大
    ila
        11
    ila   59 天前 via Android
    config.cfg,env
    Patrick95
        12
    Patrick95   59 天前
    限制线上数据库的接入 IP,阿里云的数据库有白名单可以设置的。你们公司不会是外网直接就能连生产数据库吧?阿里云有 DMS 。

    线上数据库限制为只能生产服务器连,这个问题就解决了。
    jakehu
        13
    jakehu   59 天前
    居然能直连数据库,我们连运维都进不去,只有 DBA
    followyourheart
        14
    followyourheart   59 天前
    @Patrick95 #12 应该是没有设置,我在家也可以连,阿里云账户都是领导管理的,就是每次员工离职 都要修改一遍,所有挺烦的 就是想知道大家都是咋做的
    Patrick95
        15
    Patrick95   59 天前   ❤️ 10
    楼主问这个问题,想必是个小公司了,可以按回复里的方案改造一下,不然以后有人离职就改下密码,多麻烦。

    1 、服务器统一使用堡垒机控制员工登入,阿里云有现成方案,支持 2FA,安全性很好。有员工离职,移除对应密钥即可。
    2 、数据库使用白名单关闭外网接入,限制为仅生产服务器接入。员工需要增删改查,使用阿里云的 DMS 。这样就不必考虑修改密码的问题了。
    lakehylia
        16
    lakehylia   59 天前
    登录应该用令牌吧,每个员工一个令牌,离职了就把令牌失效就可以了
    Light3
        17
    Light3   59 天前   ❤️ 1
    阿里云吗..
    小公司大多数都是直接密码给了员工 自己登陆不是
    其实阿里云有很多管理操作系统的 比如 DMS ip 限制 白名单 等等 如果你都不会用可以做个堡垒机
    然后来一个人给个密钥 人走了删了就行..
    tabris17
        18
    tabris17   59 天前
    开发为什么会有生产环境密码?
    wolfie
        19
    wolfie   59 天前
    IP 白名单
    xuanbg
        20
    xuanbg   59 天前
    不能远程直连就行了,密码万年不变,还很简单。数据库的安全还真不能靠密码。
    sohunjug
        21
    sohunjug   59 天前
    个人感觉 最好的还是 全部 kerberos+ldap 吧 freeipa
    snuglove
        22
    snuglove   59 天前
    我这里也是不改,毕竟有国法和保密协议🤣🤣
    zpf124
        23
    zpf124   59 天前
    我们的方案很粗糙很简单,除了主要几个人其他人不知道生产服务器密码,测试服务器密码就知道了。

    生产配置文件不在 git 里存在 jenkins 里,
    每次发版时候有权限那几个人肉眼核对配置文件的修改,然后去 jenkins 里修改对应生产配置文件。
    superrichman
        24
    superrichman   59 天前
    搭个堡垒机,限制连接 ip,完事
    echo1937
        25
    echo1937   59 天前
    常见的做法是,人是不可以直接掌握密码的,掌握的只是权限,人走了取消权限即可,

    比如我们有个操作平台 /堡垒机,你的操作都是登录平台 /主机来操作,这也是常说的“白屏化”。
    Felldeadbird
        26
    Felldeadbird   59 天前
    楼主公司应该没配置好开发和管理规范吧。 要不就加一层代理才可以链接服务器。要么一个一个改。然后参考上面大佬们的方法。以后就可以一劳永逸了。
    DinnyXu
        27
    DinnyXu   59 天前
    如果经常性有员工离职的话,可以给服务器设置用户组,给数据库设置用户组。比如在职人员的用户组有哪些权限,离职后把该权限撤销即可。
    WebKit
        28
    WebKit   59 天前
    写个配置文件应该不难吧
    aino
        29
    aino   59 天前
    一般这些库都是内网环境访问的,都得挂 vpn,离职了就把 vpn 账号删除就行
    zdt3476
        30
    zdt3476   59 天前
    数据库开公网端口真不怕出事啊?改成内网访问就好了,就不用关心密码的问题了。然后记得配 VPC 保证只有自己的产品才能互相访问
    fengpan567
        31
    fengpan567   59 天前
    你们数据库还能从外网直连?
    guyueyiren
        32
    guyueyiren   59 天前
    把配置文件抽出来放在服务器里面,部署的时候进行替换就好了
    pkoukk
        33
    pkoukk   59 天前
    数据库开公网端口,看样子你们是没被勒索软件盯上过
    coderfuns
        34
    coderfuns   59 天前
    这么好的表现机会就这么浪费了?一顿权限操作然后周报、绩效总结里猛夸不就漂漂亮亮的。
    wangbenjun5
        35
    wangbenjun5   59 天前
    小公司都是这么干的,数据库账号密码写在项目配置文件里面,加上用的云服务,公网也可以访问很正常。

    通常来说,为了安全,这些密码一般定期会修改一次,比如 3 个月一次。

    再者,不改也没事,谁会离职了还想着搞破坏,那得多大仇啊,平时多处理好员工关系吧!这种损人不利己的事情,搞不好还要坐牢的事情不到万不得已没人敢干。

    堡垒机这种办法确实是个好办法,但是也得花点时间去弄,我觉得吧,小公司就用最简单最粗暴的方法,定时改密码,或者某些高风险人物离职之后主动改密码。。。
    Routeros
        36
    Routeros   58 天前 via Android
    堡垒机
    Joker123456789
        37
    Joker123456789   58 天前
    线上库一般只有特定的机器 才能连接, 并不是向全网开放的。

    如果你们没有堡垒机的话,可以添加 IP 白名单,阿里云 RDS 有这功能。
    sprite82
        38
    sprite82   58 天前
    迷惑行为
    1 、线上数据库密码写在代码的配置文件里,你们拿生产数据库开发测试的?
    2 、线上数据库居然可以外网访问
    3 、外网可以访问也就算了,起码来个 ssh 跳板,并且加 ip 限制吧,离职了把 ssh 公钥删掉,并且人不在公司也连不上服务器
    sprite82
        39
    sprite82   58 天前
    @wangbenjun5 小公司也不能这么搞,公司再没钱 买台公司内部的开发测试服务器的钱总有的吧,怎么能直接连线上的,而且带宽也是问题。改密码也不是改数据库的,一改所有服务都要重启。
    jorneyr
        40
    jorneyr   58 天前
    看使用的框架,SpringBoot 的话,可以从命令行参数或者系统环境变量里设置密码,会覆盖配置文件里设置的密码。
    huangzxx
        41
    huangzxx   58 天前
    天啊,贵司没有运维吧。最起码搞一台跳板机,限制 IP 吧。
    swulling
        42
    swulling   58 天前
    所有的服务不对公网暴露,泄露了也没什么。

    公网只能访问到 LB 这一层~
    akira
        43
    akira   58 天前
    对于你们来说,比较现实的方案应该是,由一个人控制密码,其他人不给接触密码 就好了
    lasuar
        44
    lasuar   58 天前
    IP 限制
    lrvinye
        45
    lrvinye   58 天前 via iPhone
    建议参考 mybatis-plus 文档中的数据安全章节
    Quarter
        46
    Quarter   58 天前 via iPhone
    @sprite82 @wangbenjun5 @zpf124  @Patrick95
    同样有这样的疑惑:
    1 、如果禁止外网连接,在项目的快速迭代期,数据库需要不停的设计修改,或者倒入一些清洗好的数据,如何才能方便的进行操作
    2 、如果使用堡垒机,特定的 IP 可以连接,那本地的机器就不行了,毕竟公司的机器肯定是一个或者几个出口,多台机器都可以登录,如果当令一台公网的堡垒机,是不是就会增加成本,需要一只放一台 windows 服务器( Linux 操作起来可能比较麻烦,不如图形化的方便)
    3 、单人配置密钥,我觉得这个还是的基于堡垒机,不然光有密钥,可以登录服务器,但是无法直接访问操作数据库( navicat 之类),还是比较麻烦
    4 、使用 Jenkins 自动部署,这是一个比较好的方法,但是有一定的学习成本,还没学会怎么用呢

    那请教一下还有啥方便又比较安全的实现思路呢(主要是没钱,堡垒机、买服务估计比较艰难)
    k9982874
        47
    k9982874   58 天前
    你们线上数据库端口暴露给了公网?不是吧?不是吧?
    notejava
        48
    notejava   58 天前
    ip 白名单
    wangyzj
        49
    wangyzj   58 天前
    网络隔离做的不对
    nicebird
        50
    nicebird   58 天前
    公司 ip 才能登录
    指定机器登录
    dyxLike
        51
    dyxLike   58 天前
    阿里云可以设置 IP 白名单, 想直连就向公司的管理员申请
    Unclev21x
        52
    Unclev21x   58 天前
    你们都担心这个啊。我离职了,如果有人还问我密码的问题,我一概说不知道。我早就删的一干二净了。免得惹麻烦。
    joyhub2140
        53
    joyhub2140   58 天前
    1.springboot 直接引用外部 yaml,生产环境密码不放代码里面
    2.数据库采取白名单 IP
    3.除了 springboot 等业务系统可以直连,其他一律走堡垒机的 ssh 通道
    4.人员离职,直接删掉其 ssh 公钥
    janda
        54
    janda   58 天前
    服务器( esc 、ssh )等这些账号密码:
    密码管理器(如 enpaas 、keepass )离线或通过 webdav 同步,多个开发人员可共享出来

    项目链接账号密码( mysql 、redis )等:
    配置中心(如 nacos ),或存在密码管理器中


    交接之后离职、交付对应的 [密码管理器、配置中心] 的账密就行了然后改密、或者账号中踢出离职人员账号

    前提是你可以决定或者推荐对方可采用这些管理方法!

    我们就是这样操作的
    shellic
        55
    shellic   58 天前
    跳板机
    raptor
        56
    raptor   58 天前
    数据库开放外网访问的吗?

    正常不是应该限内网,然后 SSH 隧道过去,离职就把他的 SSH KEY 删除就好了。
    IvanLi127
        57
    IvanLi127   58 天前 via Android
    还是换密码吧。。。
    wangbenjun5
        58
    wangbenjun5   58 天前 via Android
    @sprite82 很正常啊,一般项目都是整 3 个配置文件,dev,pre,prod,不同的环境启动使用不同的配置。不写配置文件难道整个配置中心啊,那不又是更麻烦……
    salmon5
        59
    salmon5   58 天前
    难道最佳实践不是每天把密码修改一遍吗?🤣
    intmax2147483647
        60
    intmax2147483647   58 天前
    我司都是将秘钥放在 LastPass 上
    wellsc
        61
    wellsc   58 天前
    内外网隔离啊
    NilChan
        62
    NilChan   58 天前 via Android
    你们公司没有 AAA 系统的吗?
    Seymer
        63
    Seymer   58 天前   ❤️ 1
    不同公司有不同做法,这里有体量不同和对安全重视不同。下面说说我知道的各种解决方案:
    1. 首先,像数据库这类比较敏感的服务是绝不应该暴露到公网上的,并且一般仅设置为相关业务 ip 内网网段访问,甚至 127.0.0.1 本地访问。其次,一般公司都有 VPN,堡垒机或跳板机,数据库这类服务一般也都放到子网网段内。这样能一定程度杜绝直连问题,但也有人通过 SSH 隧道等方式去连接绕过这种限制。当员工离职后,失去内部网络访问权,即使知道密码也无法连进去。问题是很多人为了图方便,或者借口不得已而为之。将这类服务暴露到公网上,出了问题其实也没啥可说的。
    2. 说到正题,将密码写到配置文件,这种情况很多。配置文件一般也分环境,像开发环境测试环境的密码,为了开发方便,有时候会和项目仓库放在一起。生产环境配置文件单独放在一个仓库,仅在发布或打包时会自动打成镜像。当然这里也需要 DBA 搞网段隔离限制访问。但是这样也仅是一定程度避免了密钥泄漏。你还需要最小权限原则,例如线上的机器不能谁都可以访问,那个放生产环境配置文件同理。但是,谁也保不准线上机器或镜像不泄漏密钥。
    3. 还有,你也可以为每个用户建立一个账号,有一个地方统一管理这些 token 或凭证,当离职后直接删除掉即可。
    4. 密码策略,不定期更改。
    5. 你也可以利用 zk 或配置中心,动态调用或下发。
    6. 还有你可以使用一些诸如 vault 这类的密码保护方案。
    7. 当然这都是比较「术」的东西,要理解,安全绝不止是这些东西。更重要的是人的管理,坚决不行方便之门。
    ltruntu
        64
    ltruntu   58 天前
    数据库只开放内网访问 如果要用可视化工具 就在能连接的服务器 ssh 过去就好了 有人离职 改一下 ssh 密码就好了
    auh
        65
    auh   58 天前
    弱小又小气
    libook
        66
    libook   58 天前
    阿里云好解决,按步骤做:
    1. 使用 RAM 访问控制,让每个需要访问阿里云资源的人用自己的子账号,并配置相应权限,相关设备仅由授权了的子账号可以访问,此时各个设备的密码就是个形式了,有密码没有权限也访问不了。
    2. 使用堡垒机,要求各个子账号必须通过堡垒机登录(一些地区的等保要求必须这么做)。
    3. 数据库账号用途分离,应用程序用独立账号,且限制应用服务器的 IP ;人员一人一号。

    人员离职操作流程:
    1. 删除其 RAM 子账号。
    2. 删除其数据库账号。
    msg7086
        67
    msg7086   58 天前
    我司,给普通人的开发机只有公司内网可以访问。
    我在家办公,每天开电脑第一件事就是连 V○N,然后才连我的虚拟机。
    别的不说,给服务器的防火墙限制一下只有公司 IP 能访问就行了吧,最简单了。
    离职了自然就失去访问权限了。
    wooyuntest
        68
    wooyuntest   58 天前
    给员工发 yubikey,yubikey 里面创建不可导出的密钥对,其余的认证都基于 yubikey 来做 比如 ssh 、gpg 、fido2 、ga 等等。 离职的时候收回 yubikey 硬件就可以了。
    newmlp
        69
    newmlp   58 天前
    数据库不是只能内网连吗,知道也没啥事吧
    guo4224
        70
    guo4224   58 天前
    二楼说的很明白了
    simonlu9
        71
    simonlu9   58 天前
    说下我的做法
    用了 springcloud-config,配置独立,可以是加密的,返回的都是加密串,但是如果有心思还是能看到了,但是里面的地址都是内网的,外网基本访问不了,主要是 appkey,appscert,这一块,一定要加密,生产和测试一定要分开,测试泄漏了没什么问题,但是生产泄漏了,就危险了

    数据库访问直接走 ssh,人走了直接删公钥,公钥是和用户绑定的,没什么问题
    hejw19970413
        72
    hejw19970413   58 天前
    你建个测试库,然后就没有然后了
    sprite82
        73
    sprite82   58 天前
    @wangbenjun5 我们 prod 是从不写在代码里,而且就算要写 也应该是内网地址
    wangbenjun5
        74
    wangbenjun5   58 天前
    @sprite82 核心项目的一些核心配置肯定也是不写在配置文件里面的,但是大部分时候那些项目的安全性要求并没有那么高,也没人专门去维护这些配置,图省事肯定是开发人员开发的时候弄了。。。小公司哪有内网这个说法,都是买的阿里云服务器、阿里云数据库。。。有时候为了图省事还要直接连线上数据库查看数据啊等等。没你们想象那么严格。
    GoodRui
        75
    GoodRui   57 天前 via iPhone
    @zpf124 然后就那知道密码的人离职了,然后呢?
    myCupOfTea
        76
    myCupOfTea   57 天前
    配置中心
    zpf124
        77
    zpf124   57 天前
    @GoodRui 那就改呗,其实不改也无所谓,有 ssh 密钥还知道生产内网数据库密码的就那么两三个人,而且离职率也不高,就你离职了然后公司的生产环境就被黑了那不是找死么...
    我离职的时候是直接把我电脑格式化了,密钥和电脑里记密码的笔记都一起格式化了,我也不想知道。
    BQsummer
        78
    BQsummer   57 天前
    vault
    xinJang
        79
    xinJang   50 天前
    楼上说白名单的应该没待过小公司,这里特指很小很小很小的公司。
    公司网络都是动态公网(不清楚白名单能不能直接动态域名,反正单纯想配置 ip 白名单不现实)
    然后云服务器还是买的 windows !不清楚是为了 sqlserver 还是前开发不会 linux,3389 还算是弱密,1433 绝对的弱密(在我任职不出事就行了,我管不了)
    而且也不会有什么工号、ssh 各种可以鉴权的玩意,特么就一个开发!!!!!
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2122 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.