V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vinciarts
V2EX  ›  项目管理

出于项目保密需求,有没有能让前后端只开发,但不接触线上数据库的办法?

  •  
  •   vinciarts · 2023-05-30 16:16:49 +08:00 · 4035 次点击
    这是一个创建于 369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有什么办法让开发只负责开发,但无法更改生产环境的数据库的内容。 这种方式会有些什么副作用?

    47 条回复    2023-06-30 10:48:37 +08:00
    wangkun025
        1
    wangkun025  
       2023-05-30 16:18:50 +08:00   ❤️ 2
    开发是开发环境,生产环境的数据库是生产环境。这俩隔离没任何问题啊,而且本来就应该这么做啊。
    lalawu
        2
    lalawu  
       2023-05-30 16:19:08 +08:00
    后续上线 troubleshotting 依赖数据可能会有比较大阻碍
    InDom
        3
    InDom  
       2023-05-30 16:20:20 +08:00
    本来就应该是这样,完全才测试环境测完以后再发布,觉得不放心可以弄一个 拟真环境。

    开发本来就不应该接触生产环节。
    vinciarts
        4
    vinciarts  
    OP
       2023-05-30 16:25:04 +08:00
    @lalawu 会有哪些问题??能展开说说吗
    lambdaq
        5
    lambdaq  
       2023-05-30 16:30:42 +08:00
    正规公司其实都是这样搞的。但是往往由于业务复杂程度,很多线上配置比测试环境复杂得多。

    如果不幸线上出了问题,你就自己玩蛋去吧。
    8355
        6
    8355  
       2023-05-30 16:30:50 +08:00
    生产环境不管代码还是数据 理论上只有运维能直接操作.
    数据 dba 可以间接操作.
    开发最多可以查查数据用于监控和 debug, 可能还只是个别人才有临时授权的.
    LandCruiser
        7
    LandCruiser  
       2023-05-30 16:33:56 +08:00
    数据脱敏就可以了啊,比如电话号码脱敏成 12345678910 不就行了。测试环境数据库如果字段和生产环境都对不上,那这不叫开发,这叫做法。
    wangkun025
        8
    wangkun025  
       2023-05-30 16:34:39 +08:00
    @lambdaq 相比起开发人员 rm -rf / ,你说的都不算很严重问题。
    nitmali
        9
    nitmali  
       2023-05-30 16:37:33 +08:00
    开发环境 测试环境 生产环境隔离

    前端 mock
    vinciarts
        10
    vinciarts  
    OP
       2023-05-30 16:38:13 +08:00
    @LandCruiser 字段和逻辑肯定对上呀,不然都不算开发同一个产品了哈哈
    vinciarts
        11
    vinciarts  
    OP
       2023-05-30 16:39:40 +08:00
    @nitmali 前端 mock 可以和开发、测试环境联调吗,还是只调 API 比较好?
    LandCruiser
        12
    LandCruiser  
       2023-05-30 16:44:49 +08:00
    @vinciarts 那就脱敏一批数据做测试数据就好了,其他的就像楼上说的就行了。如果你们公司年收入 1 亿一下,其实完全没必要的。
    lalawu
        13
    lalawu  
       2023-05-30 16:45:39 +08:00
    @vinciarts 我看了评论中的上下文补充信息;首先开发 /联调 /验收 /生产环境 数据应该分开;没有问题,生产环境数据本来就只该有用户的数据,不该有脏数据,但是假设生产环境出现异常情况,很大一部分要以数据以及日志作为线索。你问我,如果不能看到线上数据可能会有哪些问题,那就是排查过程少了一大帮助线索。
    bianhui
        14
    bianhui  
       2023-05-30 16:52:01 +08:00
    给开发分配只读的数据库账号。
    PHPer233
        15
    PHPer233  
       2023-05-30 16:54:00 +08:00
    其实不怕看到数据,而是怕把数据带走。
    建议备一台电脑,操作生产环境必须在指定地点、指定电脑上进行。
    my3157
        16
    my3157  
       2023-05-30 16:57:27 +08:00 via Android
    招个运维
    shyrock
        17
    shyrock  
       2023-05-30 17:01:01 +08:00
    开发过程可以严格执行,用一套模拟的环境和数据。

    但是上线后排错时,要不接触业务系统和数据就很难排错了。
    Felldeadbird
        18
    Felldeadbird  
       2023-05-30 17:02:22 +08:00
    1. 数据库脱密
    2. 找那些在线开发平台,可以提高代码保密性。

    和楼上说的,找运维。
    kidult
        19
    kidult  
       2023-05-30 17:03:25 +08:00
    求之不得,生产环境碰不到对开发来说是最好的,省去一大堆烦恼
    lambdaq
        20
    lambdaq  
       2023-05-30 17:06:45 +08:00
    @wangkun025 你不让开发去处理,它们更可能 rm -rf
    MeteorCat
        21
    MeteorCat  
       2023-05-30 17:14:28 +08:00 via Android
    我觉得开发这样更加求之不得,因为生产环境业务更复杂而且运营总急着加功能要求立即上
    wu67
        22
    wu67  
       2023-05-30 17:24:12 +08:00
    前端可以 mock. 后端不清楚.
    事实上 mock 的数据甚至比他们瞎造的‘测试测试测试’ ‘这是一个小尾巴’ ‘我就看看能有多长长长长长长长长’ 这种测试数据要好用多了
    wangkun025
        23
    wangkun025  
       2023-05-30 17:25:35 +08:00
    @lambdaq 有个职位叫运维。运维有内部的管理和技术栈,去解决问题。
    lambdaq
        24
    lambdaq  
       2023-05-30 17:28:41 +08:00
    @wangkun025 运维高风险岗位。哈哈。
    h1104350235
        25
    h1104350235  
       2023-05-30 17:30:09 +08:00
    前端 mock 试过,有点坑
    接口文档写的不够清晰,经常 mock 没问题,但是测试问题一大堆,字段可能返回 null ,undefined ,{},[],'’,直接字段不返回都有。dog
    maggch97
        26
    maggch97  
       2023-05-30 17:48:10 +08:00
    副作用就是,中国企业玩不转这一套。
    fiypig
        27
    fiypig  
       2023-05-30 17:54:25 +08:00
    的确,生产环境不给我碰 我真的开心到跳脚
    maggch97
        28
    maggch97  
       2023-05-30 17:55:50 +08:00
    当然,政府项目,企业还是能捏着鼻子,在垃圾的隔离环境上做一坨垃圾的。
    vinciarts
        29
    vinciarts  
    OP
       2023-05-30 18:03:49 +08:00
    @wangkun025 如何防止运维跑路或者在代码里下毒(doge)
    wangkun025
        30
    wangkun025  
       2023-05-30 18:09:16 +08:00
    @lambdaq 拿钱的事儿,干啥没风险呢
    wangkun025
        31
    wangkun025  
       2023-05-30 18:10:15 +08:00
    @vinciarts 我不是运维,你可以问问 chatGPT 。不过据我所知,虽然有发生这种事,但并不多。
    neptuno
        32
    neptuno  
       2023-05-30 18:14:44 +08:00
    理想情况下是应该数据隔离的,线上环境除了问题就很难排查问题了,可以管理好开发的账号权限,例如排查问题的时候,申请某个数据库的查询权限,离职的时候,关闭账号
    RivetCity
        33
    RivetCity  
       2023-05-30 18:55:36 +08:00
    测试环境一比一模拟生产环境,数据变形后导入
    yingqi7
        34
    yingqi7  
       2023-05-30 18:58:11 +08:00
    生产数据脱敏变形后导入测试环境不就可以了
    tomczhen
        35
    tomczhen  
       2023-05-30 19:16:05 +08:00 via Android
    @vinciarts 谁都不信任的话,老板自己运维不就解决了。
    LeegoYih
        36
    LeegoYih  
       2023-05-30 20:30:41 +08:00
    我们公司可以申请生产数据库的读权限,用于排查问题。需要修改数据要提工单走审核流程,leader 审批通过后会由 dba 确认执行。

    有生产数据库的临时实例,每天都会生成一份昨天的快照,数据都是脱敏的,可以随便玩。
    kuxuan
        37
    kuxuan  
       2023-05-30 21:21:18 +08:00 via Android
    自己开发
    AstroProfundis
        38
    AstroProfundis  
       2023-05-30 21:30:00 +08:00
    楼主你没说清楚具体是什么情况...

    如果你的需求是不想让开发碰到线上数据比如什么客户信息之类的,正经开发流程里面应该是有个开发测试环境,和线上完全一样但数据是假的,不管是按相同格式造一批假数据还是把线上数据处理脱敏之后写到开发测试库都可以

    如果你的需求是业务逻辑本身就涉及到了某些敏感信息,那没什么好办法,只能找足够信任的人来做,你要是有本事把系统拆成很多不涉密的小部分给不同人做肯定也不会来问了

    如果你的需求是你不信任开发和运维,怕他们接触线上数据之后干坏事,和前一条一样,你只能找足够信任的人,要么签严格的保密条款并且加钱雇愿意接受这些条款的人,要么自己亲自上
    wdlth
        39
    wdlth  
       2023-05-30 21:48:00 +08:00
    很多公司都开发有 Web 版的数据库查询页面,有 SQL 审计,敏感字段脱敏等功能,如果不想自研的话你们也可以先装一个 Archery 暂时用用。
    yufeng0681
        40
    yufeng0681  
       2023-05-30 21:49:16 +08:00
    针对保密的要求,额外开发一系列功能;
    比如:
    1 、数据库数据加密
    2 、用户行为日志(运维用户)
    3 、基于定位问题的场景,开放的权限管理
    4 、线下重现问题,需要数据库复制时, 保密字段的脱敏管理(还不能影响定位问题)
    zhaokun
        41
    zhaokun  
       2023-05-31 08:04:51 +08:00 via iPhone
    开发为啥能看到生产环境的数据库?生产环境数据库不给权限,他们怎么看到?
    生产环境数据库加服务器 ip 白名单,业务代码链接用内网地址,生产环境服务器不给 ssh 账户,他们还想看就只能请求生产环境接口了,要防接口抓包就比较麻烦了
    SWALLOWW
        42
    SWALLOWW  
       2023-05-31 10:39:59 +08:00
    测试,灰度,线上
    VictorJing94
        43
    VictorJing94  
       2023-05-31 11:17:33 +08:00
    弄个测试库
    Zy143L
        44
    Zy143L  
       2023-05-31 15:35:37 +08:00 via Android
    你们提供一个测试数据库接口就行了啊
    保证字段不变
    tianzhou
        45
    tianzhou  
       363 天前
    可以看一下我们做的 bytebase.com ,应该是能满足你提的需求。研发只能做变更,生产数据库不让访问,相关文档在 https://www.bytebase.com/docs/security/database-access-control


    在微信里搜 bytebase ,也能找到我们的公众号。
    vinciarts
        46
    vinciarts  
    OP
       362 天前
    @tianzhou 有海外版吗
    tianzhou
        47
    tianzhou  
       338 天前
    @vinciarts 产品就是面向全球的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1176 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:35 · PVG 07:35 · LAX 16:35 · JFK 19:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.