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

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

  •  1
     
  •   followyourheart · 2021-08-18 15:05:19 +08:00 · 9519 次点击
    这是一个创建于 953 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    我们就是这样操作的
    shellic
        55
    shellic  
       2021-08-19 09:43:29 +08:00
    跳板机
    raptor
        56
    raptor  
       2021-08-19 09:48:42 +08:00
    数据库开放外网访问的吗?

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

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

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