• 请不要在回答技术问题时复制粘贴 AI 生成的内容
DinoStray
V2EX  ›  程序员

给客户 docker 镜像, 会导致源码泄露么?

  •  
  •   DinoStray · Dec 24, 2020 · 6839 views
    This topic created in 1988 days ago, the information mentioned may be changed or developed.
    1. 使用 docker 会导致源码泄露么? 比如把 docker 镜像直接给客户
    2. 如果默认会, 那我使用二阶构建, 也还是会泄露么?
    25 replies    2020-12-25 11:29:18 +08:00
    wfhtqp
        1
    wfhtqp  
       Dec 24, 2020
    就看你的镜像里包不包含源码
    manami
        2
    manami  
       Dec 24, 2020
    给了别人的东西安全都是没保证的,看你的代码值不值钱了
    jones2000
        3
    jones2000  
       Dec 24, 2020
    编程成 2 进制执行文件发布。
    DinoStray
        4
    DinoStray  
    OP
       Dec 24, 2020
    @wfhtqp 包含的, 源码在 DockerFIle 中构建
    eslizn
        5
    eslizn  
       Dec 24, 2020
    @DinoStray 直接 exec 进去就能捞出来
    DinoStray
        6
    DinoStray  
    OP
       Dec 24, 2020
    @eslizn 如果二阶构建呢
    x66
        7
    x66  
       Dec 24, 2020
    如果你在外面 build 好了之后,Dockerfile 里面只做 ADD 制成品的话是不会泄露的。
    当然 artifact 可以反编译这又是另一回事了。
    ixx
        8
    ixx  
       Dec 24, 2020
    dockerfile 构建没问题 近一点看你的 dockerfile 里管理写的 有没有将源码 copy 到镜像里 比如 go 项目你只把编译后的产出复制到镜像里 那镜像中是不会有源码的
    ixx
        9
    ixx  
       Dec 24, 2020
    @ixx #8 dockerfile 构建没问题 重点看你的 dockerfile 里怎么写的 有没有将源码 copy 到镜像里 比如 go 项目你只把编译后的产出复制到镜像里 那镜像中是不会有源码的 如果直接复制源码到镜像进执行 那就不行了 几层构建都不行
    xuanbg
        10
    xuanbg  
       Dec 24, 2020
    2 进制也能反汇编。总之,东西到了人家手里,就不受你的控制啦。安全?保密?不存在的!
    zoharSoul
        11
    zoharSoul  
       Dec 24, 2020
    这个问题与 docker 无关
    randomuuid
        12
    randomuuid  
       Dec 24, 2020
    只有 2 进制泄漏难度大些,但也不是不可能。
    index90
        13
    index90  
       Dec 24, 2020
    二阶段构建不会
    namelosw
        14
    namelosw  
       Dec 24, 2020 via iPad
    你没说你的技术栈和你具体怎么做的。脚本一般明文,字节码一般比较好反编译,二进制比较难。还有就是 ignore 掉该 ignore 的
    index90
        15
    index90  
       Dec 24, 2020
    话说个人觉得多阶段构建,按照 docker 目前给出的功能非常鸡肋。
    1. 没有编译缓存( layer 缓存不算)
    2. 多阶段构建的中间产物不好清理,经常导致构建机爆磁盘
    3. dockerfile 中构建说是为了确保一致性,但软件制品质量是通过测试保证的,只要确保在流水线上二进制程序与容器打包产出,没有必要在 dockerfile 中构建
    4. 可以在 builder 镜像中构建,然后在组装到输出镜像
    whileFalse
        16
    whileFalse  
       Dec 24, 2020
    好歹说语言啊
    wangritian
        17
    wangritian  
       Dec 24, 2020
    二阶构建 只 copy 可执行程序 不会暴露源码
    draguo
        18
    draguo  
       Dec 24, 2020
    跟盗版游戏一样,要是收益足够高就能破解
    Suddoo
        19
    Suddoo  
       Dec 24, 2020
    只 ADD 可执行文件,问题应该不大吧
    mmrx
        20
    mmrx  
       Dec 24, 2020   ❤️ 1
    核心的、值钱的逻辑建议放到你的服务上,docker 内的代码可以做个转发
    接口做好认证啥的,这样即使别人拿到源码也不会拿到你的核心竞争力
    felixcode
        21
    felixcode  
    PRO
       Dec 24, 2020
    这边在问源码会不会泄漏,那边在答二进制会不会被反编译 /破解。
    julyclyde
        22
    julyclyde  
       Dec 25, 2020
    你这个提问,让我感觉
    你其实本来就知道会泄露,只是想来追求心里安慰的
    frandy
        23
    frandy  
       Dec 25, 2020
    1.会
    2.看语言,一些编译成二进制的语言逆向比较困难,像 java 这种编译成字节码的,如果没有做混淆和加固,就很容易。
    leekafai
        24
    leekafai  
       Dec 25, 2020
    合同限制
    szkoda
        25
    szkoda  
       Dec 25, 2020
    @DinoStray #6 就认为你是 golang 语言 吧,如果你一阶段拉代码编译,二阶段只是 copy 执行文件,那么可以起到保护源码的作用,一阶段的产出是一个匿名镜像而已,multi-stage 就该这么玩, 但这个和外面 build 好,Dockerfile 里面只做 ADD 是一样的效果。

    不过你这么交付给客户,防君子不防小人,反编译而已,问问公司有没有专门的安全工具吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5538 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 06:39 · PVG 14:39 · LAX 23:39 · JFK 02:39
    ♥ Do have faith in what you're doing.