美文网首页
JPA 这个功能差点让我丢了工作!

JPA 这个功能差点让我丢了工作!

作者: 乐学小乐 | 来源:发表于2020-12-08 09:26 被阅读0次

故事背景

前阵子,有位朋友在微信上问我数据被删了能不能恢复,我问了下原因,居然是因为一个配置项惹的祸。

image image.gif

故事细节

在 Spring Boot 中使用 jpa 来操作数据库,jpa 就不做详细的介绍了,相信大家都有所了解或者也用过。

在 jpa 中有一个配置项,可以让程序在启动的时候自动初始化表结构或者更新表结构的功能。听上去很不错,非常实用。

其实这是一个非常危险的功能,个人觉得不应该提供这种功能,只要留了口子就有可能会出问题。

这个配置就是:spring.jpa.hibernate.ddl-auto

  • create(危险系数 2 颗星

应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会将表中的数据清空。

  • create-drop(危险系数 3 颗星

应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会将表中的数据清空。

程序停止的时候会将数据库中所有表删除掉。

  • update(危险系数 1 颗星

应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会判断有没有新增字段或者修改长度之类的,如果有则会更新表结构,不会影响数据。

  • validate(危险系数 0 颗星

validate 不会更新和删除表或者数据,只会做验证逻辑。

  • none (危险系数 0 颗星

禁用 ddl 操作。

如何防范

这种问题归根到底还是技术负责人没重视线上安全问题,主要有下面几点:

  • 数据没备份

线上数据一定要有备份,而且备份得放在不同的机器上,降低风险值。

  • 数据库账号权限细分,不给删除权限,业务做逻辑删除

如果公司有 DBA 那么可能会好点,对数据库相关的安全会管控的比较严。如果没有 DBA,基本上都是开发自己管理,技术负责人应该去做这件事情。

一般的开发人员可以给只读账号就行了,偶尔线上查查数据之类的。

另外需要有一个读写的账号,用于程序中。

像删除,DDL 操作这种权限就留给管理员账号就行了,不然很容易出事。

  • 应用中的框架有 DDL 操作的功能,一律禁止使用

这次的问题,除了开发人员的大意,最主要就是框架中自带了 DDL 的功能。像这种功能就应该禁止使用。

所有的表结构应该在上线之前确认好,最好手动执行,像 DDL 这种操作本身就会锁表,应该在业务低峰期去做。交给程序自动做不靠谱。

我记得我们之前在代码中也有去自动创建表的逻辑,在 code review 的时候被指了出来,然后就去掉了。虽然说是为了使用更方便,但是增加了线上数据库的风险。像一些开源框架中也有类似的逻辑,当表不存在时会自动给你创建好表。

相关文章

  • JPA 这个功能差点让我丢了工作!

    故事背景 前阵子,有位朋友在微信上问我数据被删了能不能恢复,我问了下原因,居然是因为一个配置项惹的祸。 ​ 故事细...

  • 一言难尽,Jpa这个功能差点让我丢了工作

    故事背景 前阵子,有位朋友在微信上问我数据被删了能不能恢复,我问了下原因,居然是因为一个配置项惹的祸。 故事细节 ...

  • 不懂「职业化」 差点让我丢了工作

    2013年的时候,我有幸从行政助理调到新成立的电子商务部,从6月份到2014年初,我过着这辈子最折磨的职场生活。我...

  • 我差点丢了

    周日的下午我去学魔方课。我自信的说妈妈,我自己坐公交车去吧。妈妈把我送到公交车站牌儿。我从公交车站牌等了好久公交车...

  • 关于本命年和年前的感悟

    “今年本命年,我丢了工作 丢了男朋友,差点把自己也弄丢了” 2015年1月•哈尔滨 上面这句话是桃...

  • 手机丢后,我差点丢了工作。

    在我不算丰富的前半生里,有一件让我难以忘怀的一件小事情,那就是有在我手机丢了以后,公司的领导因为联系不到我,说了一...

  • 聊天Mark

    1.29的记录,差点被我搞丢了,幸好有恢复的功能,简书叼叼的! -------------------------...

  • 我差点就丢了

    一点儿不平静的几天,自从喜欢事情简单化后,习惯干脆利落,即便再喜欢的再不舍的也不会停留。但好像是我又傻了… 不喜欢...

  • 我差点丢了小命

    文 麦穗 早晨起床,熟悉的闹铃又刺耳响,是没勇气开始这一天呢还是在恋恋不舍前一天呢,我不知道,起床气剧增,很烦很...

  • 我差点丢了母亲

    今年上半年工作比较忙,没有安排出时间回家,对母亲甚是想念。所以想出一个计划。 八月中旬,我给弟弟联系,让他安排母亲...

网友评论

      本文标题:JPA 这个功能差点让我丢了工作!

      本文链接:https://www.haomeiwen.com/subject/fqlmwktx.html