服务器和数据密码都是写在代码的配置文件里的,开发人员离职需要重新修改一遍,比较麻烦,有没有比较好的解决方案不需要修改?
1
v2Mark 2021-08-18 15:06:47 +08:00 5
rm -rf *
|
2
zoharSoul 2021-08-18 15:09:47 +08:00
不修改.
他离职了又连不上, 有啥好改的 |
3
JKeita 2021-08-18 15:10:21 +08:00
线上配置脱离代码库呗
|
4
followyourheart OP @zoharSoul #2 都在阿里云上
|
5
JaaaaackZheng 2021-08-18 15:11:53 +08:00 1
没有堡垒机么,加一层堡垒机可解
|
6
zoharSoul 2021-08-18 15:13:40 +08:00
@followyourheart #4 没懂你意思, 在阿里云咋了
|
7
abigeater 2021-08-18 15:13:54 +08:00
不修改吧
发现职场氛围越好的公司对这些越不在意(可能我待的是小公司的问题) |
8
40EaE5uJO3Xt1VVa 2021-08-18 15:14:51 +08:00
服务器的数据库密码都是绑定在内网的,仅允许内网 VPN 登陆
|
9
feitxue 2021-08-18 15:14:54 +08:00
数据库哪里都可以连?没有白名单吗?
|
10
wqhui 2021-08-18 15:17:30 +08:00
一般员工都不知道服务器以及数据库密码,通过 ssh 免密或者堡垒机登陆,离职后直接把员工对应的密钥或者账号禁用就行
@abigeater 跟氛围没什么关系,虽然很少有人会搞前公司,但要真遇上了就损失很大 |
11
ila 2021-08-18 15:17:57 +08:00 via Android
config.cfg,env
|
12
Patrick95 2021-08-18 15:22:33 +08:00
限制线上数据库的接入 IP,阿里云的数据库有白名单可以设置的。你们公司不会是外网直接就能连生产数据库吧?阿里云有 DMS 。
线上数据库限制为只能生产服务器连,这个问题就解决了。 |
13
jakehu 2021-08-18 15:26:21 +08:00
居然能直连数据库,我们连运维都进不去,只有 DBA
|
14
followyourheart OP @Patrick95 #12 应该是没有设置,我在家也可以连,阿里云账户都是领导管理的,就是每次员工离职 都要修改一遍,所有挺烦的 就是想知道大家都是咋做的
|
15
Patrick95 2021-08-18 15:31:25 +08:00 10
楼主问这个问题,想必是个小公司了,可以按回复里的方案改造一下,不然以后有人离职就改下密码,多麻烦。
1 、服务器统一使用堡垒机控制员工登入,阿里云有现成方案,支持 2FA,安全性很好。有员工离职,移除对应密钥即可。 2 、数据库使用白名单关闭外网接入,限制为仅生产服务器接入。员工需要增删改查,使用阿里云的 DMS 。这样就不必考虑修改密码的问题了。 |
16
lakehylia 2021-08-18 15:31:30 +08:00
登录应该用令牌吧,每个员工一个令牌,离职了就把令牌失效就可以了
|
17
Light3 2021-08-18 16:09:44 +08:00 1
阿里云吗..
小公司大多数都是直接密码给了员工 自己登陆不是 其实阿里云有很多管理操作系统的 比如 DMS ip 限制 白名单 等等 如果你都不会用可以做个堡垒机 然后来一个人给个密钥 人走了删了就行.. |
18
tabris17 2021-08-18 16:13:54 +08:00
开发为什么会有生产环境密码?
|
19
wolfie 2021-08-18 16:14:57 +08:00
IP 白名单
|
20
xuanbg 2021-08-18 16:15:29 +08:00
不能远程直连就行了,密码万年不变,还很简单。数据库的安全还真不能靠密码。
|
21
sohunjug 2021-08-18 16:17:17 +08:00
个人感觉 最好的还是 全部 kerberos+ldap 吧 freeipa
|
22
snuglove 2021-08-18 16:18:30 +08:00
我这里也是不改,毕竟有国法和保密协议🤣🤣
|
23
zpf124 2021-08-18 16:19:09 +08:00
我们的方案很粗糙很简单,除了主要几个人其他人不知道生产服务器密码,测试服务器密码就知道了。
生产配置文件不在 git 里存在 jenkins 里, 每次发版时候有权限那几个人肉眼核对配置文件的修改,然后去 jenkins 里修改对应生产配置文件。 |
24
superrichman 2021-08-18 16:25:22 +08:00
搭个堡垒机,限制连接 ip,完事
|
25
echo1937 2021-08-18 16:30:28 +08:00
常见的做法是,人是不可以直接掌握密码的,掌握的只是权限,人走了取消权限即可,
比如我们有个操作平台 /堡垒机,你的操作都是登录平台 /主机来操作,这也是常说的“白屏化”。 |
26
Felldeadbird 2021-08-18 16:51:25 +08:00
楼主公司应该没配置好开发和管理规范吧。 要不就加一层代理才可以链接服务器。要么一个一个改。然后参考上面大佬们的方法。以后就可以一劳永逸了。
|
27
DinnyXu 2021-08-18 16:52:35 +08:00
如果经常性有员工离职的话,可以给服务器设置用户组,给数据库设置用户组。比如在职人员的用户组有哪些权限,离职后把该权限撤销即可。
|
28
WebKit 2021-08-18 17:14:55 +08:00
写个配置文件应该不难吧
|
29
aino 2021-08-18 17:44:30 +08:00
一般这些库都是内网环境访问的,都得挂 vpn,离职了就把 vpn 账号删除就行
|
30
zdt3476 2021-08-18 18:04:16 +08:00
数据库开公网端口真不怕出事啊?改成内网访问就好了,就不用关心密码的问题了。然后记得配 VPC 保证只有自己的产品才能互相访问
|
31
fengpan567 2021-08-18 18:10:53 +08:00
你们数据库还能从外网直连?
|
32
guyueyiren 2021-08-18 18:22:20 +08:00
把配置文件抽出来放在服务器里面,部署的时候进行替换就好了
|
33
pkoukk 2021-08-18 18:41:14 +08:00
数据库开公网端口,看样子你们是没被勒索软件盯上过
|
34
duduaba 2021-08-18 20:07:53 +08:00
这么好的表现机会就这么浪费了?一顿权限操作然后周报、绩效总结里猛夸不就漂漂亮亮的。
|
35
wangbenjun5 2021-08-18 20:34:09 +08:00
小公司都是这么干的,数据库账号密码写在项目配置文件里面,加上用的云服务,公网也可以访问很正常。
通常来说,为了安全,这些密码一般定期会修改一次,比如 3 个月一次。 再者,不改也没事,谁会离职了还想着搞破坏,那得多大仇啊,平时多处理好员工关系吧!这种损人不利己的事情,搞不好还要坐牢的事情不到万不得已没人敢干。 堡垒机这种办法确实是个好办法,但是也得花点时间去弄,我觉得吧,小公司就用最简单最粗暴的方法,定时改密码,或者某些高风险人物离职之后主动改密码。。。 |
36
Routeros 2021-08-18 20:54:01 +08:00 via Android
堡垒机
|
37
Joker123456789 2021-08-18 20:54:58 +08:00
线上库一般只有特定的机器 才能连接, 并不是向全网开放的。
如果你们没有堡垒机的话,可以添加 IP 白名单,阿里云 RDS 有这功能。 |
38
sprite82 2021-08-18 22:02:11 +08:00
迷惑行为
1 、线上数据库密码写在代码的配置文件里,你们拿生产数据库开发测试的? 2 、线上数据库居然可以外网访问 3 、外网可以访问也就算了,起码来个 ssh 跳板,并且加 ip 限制吧,离职了把 ssh 公钥删掉,并且人不在公司也连不上服务器 |
39
sprite82 2021-08-18 22:11:17 +08:00
@wangbenjun5 小公司也不能这么搞,公司再没钱 买台公司内部的开发测试服务器的钱总有的吧,怎么能直接连线上的,而且带宽也是问题。改密码也不是改数据库的,一改所有服务都要重启。
|
40
jorneyr 2021-08-18 22:30:55 +08:00
看使用的框架,SpringBoot 的话,可以从命令行参数或者系统环境变量里设置密码,会覆盖配置文件里设置的密码。
|
41
huangzxx 2021-08-18 22:37:00 +08:00
天啊,贵司没有运维吧。最起码搞一台跳板机,限制 IP 吧。
|
42
swulling 2021-08-18 22:58:59 +08:00
所有的服务不对公网暴露,泄露了也没什么。
公网只能访问到 LB 这一层~ |
43
akira 2021-08-18 23:05:16 +08:00
对于你们来说,比较现实的方案应该是,由一个人控制密码,其他人不给接触密码 就好了
|
44
lasuar 2021-08-18 23:07:31 +08:00
IP 限制
|
45
lrvinye 2021-08-19 00:12:04 +08:00 via iPhone
建议参考 mybatis-plus 文档中的数据安全章节
|
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 自动部署,这是一个比较好的方法,但是有一定的学习成本,还没学会怎么用呢 那请教一下还有啥方便又比较安全的实现思路呢(主要是没钱,堡垒机、买服务估计比较艰难) |
47
k9982874 2021-08-19 08:10:11 +08:00
你们线上数据库端口暴露给了公网?不是吧?不是吧?
|
48
notejava 2021-08-19 08:42:49 +08:00
ip 白名单
|
49
wangyzj 2021-08-19 09:12:42 +08:00
网络隔离做的不对
|
50
nicebird 2021-08-19 09:18:58 +08:00
公司 ip 才能登录
指定机器登录 |
51
dyxLike 2021-08-19 09:27:13 +08:00
阿里云可以设置 IP 白名单, 想直连就向公司的管理员申请
|
52
Unclev21x 2021-08-19 09:28:37 +08:00
你们都担心这个啊。我离职了,如果有人还问我密码的问题,我一概说不知道。我早就删的一干二净了。免得惹麻烦。
|
53
joyhub2140 2021-08-19 09:36:07 +08:00
1.springboot 直接引用外部 yaml,生产环境密码不放代码里面
2.数据库采取白名单 IP 3.除了 springboot 等业务系统可以直连,其他一律走堡垒机的 ssh 通道 4.人员离职,直接删掉其 ssh 公钥 |
54
janda 2021-08-19 09:37:36 +08:00
服务器( esc 、ssh )等这些账号密码:
密码管理器(如 enpaas 、keepass )离线或通过 webdav 同步,多个开发人员可共享出来 项目链接账号密码( mysql 、redis )等: 配置中心(如 nacos ),或存在密码管理器中 交接之后离职、交付对应的 [密码管理器、配置中心] 的账密就行了然后改密、或者账号中踢出离职人员账号 前提是你可以决定或者推荐对方可采用这些管理方法! 我们就是这样操作的 |
55
shellic 2021-08-19 09:43:29 +08:00
跳板机
|
56
raptor 2021-08-19 09:48:42 +08:00
数据库开放外网访问的吗?
正常不是应该限内网,然后 SSH 隧道过去,离职就把他的 SSH KEY 删除就好了。 |
57
IvanLi127 2021-08-19 10:05:50 +08:00 via Android
还是换密码吧。。。
|
58
wangbenjun5 2021-08-19 10:12:37 +08:00 via Android
@sprite82 很正常啊,一般项目都是整 3 个配置文件,dev,pre,prod,不同的环境启动使用不同的配置。不写配置文件难道整个配置中心啊,那不又是更麻烦……
|
59
salmon5 2021-08-19 10:36:16 +08:00
难道最佳实践不是每天把密码修改一遍吗?🤣
|
60
intmax2147483647 2021-08-19 10:40:31 +08:00
我司都是将秘钥放在 LastPass 上
|
61
wellsc 2021-08-19 10:41:26 +08:00
内外网隔离啊
|
62
NilChan 2021-08-19 10:50:31 +08:00 via Android
你们公司没有 AAA 系统的吗?
|
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. 当然这都是比较「术」的东西,要理解,安全绝不止是这些东西。更重要的是人的管理,坚决不行方便之门。 |
64
ltruntu 2021-08-19 11:12:29 +08:00
数据库只开放内网访问 如果要用可视化工具 就在能连接的服务器 ssh 过去就好了 有人离职 改一下 ssh 密码就好了
|
65
auh 2021-08-19 11:34:06 +08:00
弱小又小气
|
66
libook 2021-08-19 11:46:38 +08:00
阿里云好解决,按步骤做:
1. 使用 RAM 访问控制,让每个需要访问阿里云资源的人用自己的子账号,并配置相应权限,相关设备仅由授权了的子账号可以访问,此时各个设备的密码就是个形式了,有密码没有权限也访问不了。 2. 使用堡垒机,要求各个子账号必须通过堡垒机登录(一些地区的等保要求必须这么做)。 3. 数据库账号用途分离,应用程序用独立账号,且限制应用服务器的 IP ;人员一人一号。 人员离职操作流程: 1. 删除其 RAM 子账号。 2. 删除其数据库账号。 |
67
msg7086 2021-08-19 13:47:14 +08:00
我司,给普通人的开发机只有公司内网可以访问。
我在家办公,每天开电脑第一件事就是连 V○N,然后才连我的虚拟机。 别的不说,给服务器的防火墙限制一下只有公司 IP 能访问就行了吧,最简单了。 离职了自然就失去访问权限了。 |
68
wooyuntest 2021-08-19 14:16:17 +08:00
给员工发 yubikey,yubikey 里面创建不可导出的密钥对,其余的认证都基于 yubikey 来做 比如 ssh 、gpg 、fido2 、ga 等等。 离职的时候收回 yubikey 硬件就可以了。
|
69
newmlp 2021-08-19 15:00:34 +08:00
数据库不是只能内网连吗,知道也没啥事吧
|
70
guo4224 2021-08-19 15:51:36 +08:00
二楼说的很明白了
|
71
simonlu9 2021-08-19 15:53:39 +08:00
说下我的做法
用了 springcloud-config,配置独立,可以是加密的,返回的都是加密串,但是如果有心思还是能看到了,但是里面的地址都是内网的,外网基本访问不了,主要是 appkey,appscert,这一块,一定要加密,生产和测试一定要分开,测试泄漏了没什么问题,但是生产泄漏了,就危险了 数据库访问直接走 ssh,人走了直接删公钥,公钥是和用户绑定的,没什么问题 |
72
hejw19970413 2021-08-19 16:49:37 +08:00
你建个测试库,然后就没有然后了
|
73
sprite82 2021-08-19 18:36:06 +08:00
@wangbenjun5 我们 prod 是从不写在代码里,而且就算要写 也应该是内网地址
|
74
wangbenjun5 2021-08-19 19:43:56 +08:00
@sprite82 核心项目的一些核心配置肯定也是不写在配置文件里面的,但是大部分时候那些项目的安全性要求并没有那么高,也没人专门去维护这些配置,图省事肯定是开发人员开发的时候弄了。。。小公司哪有内网这个说法,都是买的阿里云服务器、阿里云数据库。。。有时候为了图省事还要直接连线上数据库查看数据啊等等。没你们想象那么严格。
|
76
myCupOfTea 2021-08-20 09:14:02 +08:00
配置中心
|
77
zpf124 2021-08-20 11:21:16 +08:00
@GoodRui 那就改呗,其实不改也无所谓,有 ssh 密钥还知道生产内网数据库密码的就那么两三个人,而且离职率也不高,就你离职了然后公司的生产环境就被黑了那不是找死么...
我离职的时候是直接把我电脑格式化了,密钥和电脑里记密码的笔记都一起格式化了,我也不想知道。 |
78
BQsummer 2021-08-20 18:34:57 +08:00
vault
|
79
xinJang 2021-08-27 16:09:09 +08:00
楼上说白名单的应该没待过小公司,这里特指很小很小很小的公司。
公司网络都是动态公网(不清楚白名单能不能直接动态域名,反正单纯想配置 ip 白名单不现实) 然后云服务器还是买的 windows !不清楚是为了 sqlserver 还是前开发不会 linux,3389 还算是弱密,1433 绝对的弱密(在我任职不出事就行了,我管不了) 而且也不会有什么工号、ssh 各种可以鉴权的玩意,特么就一个开发!!!!! |