gpt4 book ai didi

docker - 防止访问Docker容器内部的代码

转载 作者:行者123 更新时间:2023-12-02 19:30:35 30 4
gpt4 key购买 nike

我想建立一个可供客户使用的生产就绪镜像,我想知道是否有办法防止访问镜像中的代码?

我当前的方法是将代码存储在/root/中,并创建一个“客户”用户,该用户的主目录中仅包含启动脚本。

我的Dockerfile看起来像这样

FROM node:8.11.3-alpine

# Tools
RUN apk update && apk add alpine-sdk

# Create customer user
RUN adduser -s /bin/ash -D customer

# Add code
COPY ./code /root/code
COPY ./start.sh /home/customer/

# Set execution permissions
RUN chown root:root /home/customer/start.sh
RUN chmod 4755 /home/customer/start.sh

# Allow customer to execute start.sh
RUN echo 'customer ALL=(ALL) NOPASSWD: /home/customer/start.sh' | EDITOR='tee -a' visudo

# Default to use customer
USER customer

ENTRYPOINT ["sudo","/home/customer/start.sh"]

这种方法按预期工作,如果我要进入容器,将看不到代码库,但可以启动服务。

我的Dockerfile的最后一步是为根用户设置密码或将其完全删除。

我想知道这是否是正确的生产流程,或者我是否打算将docker用于并非意在做的事情?

如果正确的话,我还应该锁定其他哪些内容?

任何提示表示赞赏!

最佳答案

拥有您形象的任何人都可以做

docker run -u root imagename sh

任何可以运行Docker命令的人都具有对其系统的根访问权限(或可以通过 docker run -v /etc:/hostetc ...对其进行微不足道的访问),因此可以自由地在 /var/lib/docker中四处查看以查看其中的内容。如果以系统特定的方式分散在目录中,它将具有所有镜像的所有内容。

如果您的源代码实际上是 secret 的,则应确保使用的是编译语言(C,Go,Java之类),并且您的构建过程不会意外地将源代码泄漏到已构建的镜像中,与将二进制文件分发给最终用户的其他任何方式一样安全。如果您使用的是脚本语言(Python,JavaScript,Ruby),那么最终用户必须从本质上拥有能够运行该程序的代码。

关于docker - 防止访问Docker容器内部的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574618/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com