分享生活百科知识

注册/登录|最近发布|今日推荐

主页 综合百科生活常识数码科技传统文化互联网健康时尚影视娱乐教育学习
当前位置:首页 > 生活常识

一个程序员在公司没有数据库权限意味着什么?

提问时间:2023-07-05 11:44关键词:公司,数据,权限,程序员

一个程序员在公司没有数据库权限意味着什么?

点赞1、贵港市 网友:力挽狂澜

谢邀!

给你讲个鲜活的、亲身经历的、下场极其惨烈的,真实生产环境数据库被破坏的例子,你就懂了。

2015年的时候,我负责江苏省一个农用机械设备制造龙头企业的数据库运维服务,该企业的ERP、MES、CRM、OA、进出库、进销存,等等13套系统的数据库都在我的服务范围内,日常工作就是定期巡检、性能优化、数据库备份、灾备演练。

那年5月份,我的邮箱和手机几乎同一个时刻被报警信息轰炸了,而几分钟后客户来电,接通后客户带着哭腔喊道:救命啊,要命了,全宕机了,出大事了。

我让客户冷静下来,简单询问发生什么事情了,客户颤抖着勉强把事情讲了个大概,我拼凑着听明白了:

研发部门最近做客制化功能开发,在那天的一次测试中,把数据源选错了,本来应该选开发测试DEV&QAS的数据库,他鬼使神差得选择了生产环境PRD数据库,好死不死,这个测试要重建schema,意思是要DROP USER CASCADE 后重新创建USER和USER下的数据库对象,传说中的删库。

一条命令下去,据客户给我说,瞬间全停了,车间所有流水线所有机械臂都停了,邮箱被各种报警轰炸邮件轰炸,5分钟内逐级上报到了集团CTO。现在所有工人都在车间闲着聊大天,原料到了入不了库都堆在仓库大门口,出租出去的机器在大屏上也看不到了,客户也付不了款,集团现在生死存亡了。那个惹祸的研发吓瘫了,真正地瘫了,就躺着地上起不来,全身都是软的。

我立刻远程VPN登录客户堡垒机,做一个宏观的检查和判断,定位问题,确定灾难等级,确定恢复方案。因为是直接DROP USER的,这个命令直接同步到了异地数据中心的灾备数据库,也就是灾备中心现在也不能用了。做备份还原吧,凌晨的备份是没问题的,果断跟客户讲了恢复方案,客户说要跟CTO汇报下,得到同意才能搞。我说:好,立刻,赶紧,不要犹豫。

半小时后,客户CTO回电,就一个问题:有救吗?

我肯定地告诉客户CTO:放心,有我。

CTO挂掉电话,给我发了一封邮件,抄送了集团IT全部人员、公司副总,意思简单明了:灾难恢复,还原数据库,停产一天,明天9点恢复生产。

他甚至都没问我需要多久,就拍板了明天9天恢复生产,我想这也许是他的级别能决定的最高时限了吧。

结果,我在当晚凌晨3点多完成了数据库灾难恢复,第二天太阳照常升起,生产依次有秩序地恢复了正常。

那个搞出这次事故的研发,一周后辞掉了工作,走的时候依然精神恍惚,这种事谁也不想发生的,既然发生了,只能尽力挽救,希望他能放下心结,面对今后的生活。

而我也在反思,很多企业在最开始搞信息化的时候粗犷大条,不够严谨,生产与开发牵连甚多,盘根错节,往往就是导致类似灾难的根本原因。

后来时过境迁,大家再聊起来这个事情,我才知道,CTO扣除了当年绩效奖金,降薪一级。副总扣除了当年奖金。全部研发员工扣除当年绩效奖金。那一次故障,集团损失400万。

正规合规的企业,研发部门都是没有正式生产环境数据库的访问权限的,这个访问不仅是写,包括读。

点赞2、福州市 网友:望月漪

权限越高,责任也越大。没有正式环境的数据库恰恰是保护了自己,防止自己不小心犯错给公司或者客户造成不必要的损失。

还记得之前有个运维就是用了自己写的一个小工具,连上了客户正式环境数据库,执行了锁表操作,导致医院系统无法正常使用,造成重大损失,自己也因此承担相应的法律责任。

作为程序员来说不见得非要保存正式环境的相关信息,虽然说方便,但是很容易测试正式不分,导致误操作。到时候别为了解决一个bug,丢了一个大西瓜,得不偿失。职场上你做了多少贡献,加了多少班,领导不一定会认可,但是造成了重大损失,你的责任跑不了。

所以即使解决某个问题,使用了正式的账户,用完之后也要清理掉正式信息,不要给自己留下隐患。

996的同时也要记得保护好自己,不要面向监狱编程

点赞3、遂宁市 网友:迷失旅店

一般开发人员是不允许拥有数据库操作权限的。因为软件是你开发的,一旦给了你数据库权限,增加了系统数据的泄露篡改的风险。正规的公司一般会有专门的DBA团队来负责维护数据库环境。如果生产开发需要,程序员要获取线上的数据,需要提交工单到DBA团队获取临时权限。

这样的好处:

  1. 保证了职责单一、各司其职。
  2. 保证了隔离了权限,避免潜在的安全风险。
  3. 规范了数据的工作流程。

数据作为当今互联网、IT行业的核心资产,必须得到重视。不合规的管理流程必然导致各种安全风险,很多小公司开发兼任DBA的职责,我就遇到一个开发离职后使用原公司的数据库连接篡改数据牟利,造成了重大的损失。也遇到不专业的数据库管理造成数据库被拖库、被黑客锁表勒索。所以一定要重视数据库的管理,权限尽量保证合规性。

点赞4、平顶山市 网友:冬致夏陌

数据库分环境的,1生产库,2测试库,3开发库,4本地库。
1生产库的管理权只在运维,全体开发无任何权限(版本升级提供脚本升级数据库),原则是动技术的不碰生产数据,碰数据的不懂业务和技术;
2测试库管理权限在运维和测试人员,开发无权限,提供升级版本给测试(或者运维);
3开发库权限在运维和项目经理,开发人员提供脚本升级;
4本地库是开发人员本机数据库,自己随便玩。
综上,如果是生产测试库,开发无权限很正常,说明管理到位

点赞5、那曲市 网友:弥弥浅浪

这才是正常的。在公司里,都只会有高级别的一个或几个以及DBA才有数据库权限。

如果是你工作的项目需要访问db,才会给你分配某个数据库的权限,往往是只读,需要其他权限需要额外申请。

数据是公司业务的基石,要是谁都可以上去操作一把,那就乱套了。万一被删除了被篡改了被窃取了呢,而且公司也有义务保护好客户的资料。

点赞6、泰安市 网友:痞子雨

作为一个已经工作多年的程序员,我来回答一下你这个问题。

数据库,一般软件开发中都会用到,关于它的权限问题是这样的:

一个公司的一个软件产品,其实在不同的研发上线的不同阶段,数据库是独立的。这个很好理解,开发环境程序员可以随便改。线上环境可不是谁都有权限的。

也就是说开发阶段,测试阶段,上线之前,上线之后,这些数据库都是独立的。作为程序员,你不会有所有这些数据库的权限,因为一旦上线产品的数据库,改错了的话,这是很有很大风险的,会为客户带来非常大的损失。

但比如测试环境的数据库,作为一个开发开发人员正常来说,你有权限去改动,但是你也不能够不通知测试人员的情况下,你自己擅自去改动它。那么测试环境有问题需要你来解决的时候,要和测试同事协商好,你要改什么东西。因为测试的同事呢,他有他的测试任务,你不能阻碍他的工作。

那么产品上线后的环境呢?只能看不能动!重要事情说三遍,你只能提供解决办法。除非非常非常特殊的情况,但是我在过的公司流程管理很严格,这一步除非大大领导要求,而且要非常谨慎。

说白了就是谁的地盘谁做主。

你是程序员做开发的,那么你就在开发的数据环境上,去做你的开发和测试。数据库如果是你搭的你随便改。

有的公司呢,还会有专门的数据组,那么DBA的这个组呢,他们有更高的一些数据库管理的权限。所以一般来说,那么这种情况下,你的权限就是在你应用程序所控制的那些表的所有操作上了。比如下图,不同用户名有不同操作权限的:

不同的公司,这个数据库管理的方式也是不一样的,仅从我的经历上来回答这个问题。如果更多疑问可以继续探讨。

我是工作多年的大数据攻城狮一枚,相关问题可以在评论区留言,或者私信我!

点赞7、安庆市 网友:说不痛

没有是好事情。有一段时间做维护,天天维护生产数据库,压力山大。半夜睡觉都睡不好。好在干了半年有人接手了。没有最好,不接触更好。做做框架设计都舒服啊。

点赞8、乐平市 网友:倾城时光

我觉得一个程序员在公司没有数据库权限意味着安全,规范,合理。


所谓安全,可以说保护数据安全,公司安全,员工安全。

数据被篡改了,公司的客户可能要炸毛,轻则一顿投诉,重则按照合同问责,追究责任。

数据泄露了,公司是第一责任体,轻则被问责,重则无穷大,好巧不巧公司还在做着要命的工作,什么政府系,银行系,公共服务系,我觉得公司多半会凉凉。

程序员本员,即使不是故意的,不小心搞坏了部分数据,或者拷贝了部分数据,也是直接问责,要知道数据虽然由公司制作的软件生产,但是所有权归属于客户,所谓数字资产这就是其中一类,公司作为管家肯定是不能同意把数据随意开放给你的。


所谓规范,即从项目合同,法律法规,行业规范出发对数据保存访问的要求。

每个项目对数据的保密要求是不同的,或者需要专门的保密员,比如军工系,政府系,只有他们才能解除传数据用的介质,或者需要DBA或者保密委员会之类的专门数据交换处理部门,最不济也得按照权限分配和读写账号,一般只让用只读得账号查看数据,反正我是没有见过可以数据裸奔的项目。


所谓合理,从程序员本身的工作出发,职业习惯应该具有的数据权限范围。

我们猜想直接拥有数据库权限,你可能会做的事儿:

有功能改动,数据需要更新,写个脚本刷一下。

看看线上数据库数据,确定功能正常不正常。

有个bug造成了错误数据,写个sql改过来

运营想找什么样数据,让我帮忙导出来


其实,一切的直接操作数据库都可以用功能上线来解决,只不过麻烦一些,流程会多一些。一些需求可能写个脚本提交为工单,让DBA进行审查,把问题修复的时间线拉长,影响范围扩大,我认为这种代价付出也是必要的。


我要保证我的所有操作都留下了我操作的痕迹,留足了证据,万一在这段时间有什么异常出现,有人指认是由于我动了数据库造成,我能拿出什么证据来自证清白呢。


从我自己的日常工作来说,我是非常抵触要数据库权限的,基于以上我的考虑,离生产数据有多远就离多远,我不想做贩卖数据的生意,也不想担数据泄露的责任,如果我的bug导致数据出错,我光明正大的修复认责,做一个专业的程序员。

点赞9、临汾市 网友:轻缣素练

意味着你们公司还算有点安全意识,意味着这很正常。17年因为运维一行命令,我们通宵两周修数据。。。

点赞10、赣州市 网友:锅巴女汉

程序员没有数据库权限,意味着工作职责不需要

常规程序从开发到上线,要经过开发环境、测试环境、验证环境。这些环境中,只有开发环境的数据库权限,程序员有正当理由申请。其他环境应该可以单独处理的。

点赞11、化州市 网友:﹎浅浅℡

一般正式环境的数据库权限是严格管控的,正式环境的数据库由专门的人员进行操作,比如DBA 、技术leader 。数据是一个企业的核心价值,数据的丢失和泄露对于一个企业来说都是致命的,所以一般人员不允许操作的,假如操作失误也是要承担责任的。数据库需要经常备份,增量备份、全量备份都要做,目的是尽可能的规避风险。

知识推荐

八哥问答——日常生活学习知识分享。 垃圾信息处理邮箱 tousu669@163.com 网站地图
icp备案号 闽ICP备2023007808号-3 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.12606.com All Rights Reserved