首页 > 解决方案 > 如何防止访问 Docker Python 映像上的文件但仍调用脚本?

问题描述

语境

我正在通过 Docker 提供一些 Python 代码,我的目的是防止图像的用户读取/写入/复制图像中的文件,但允许他们运行脚本。

作为一个最小的例子,我有这个文件夹:

root directory/
    code/
         main.py 
         resource.json
    Dockerfile

主文件

import json
import os

with open(os.path.join(os.path.dirname(__file__), resource.json), “r”) as f:
    resource = json.load(f)

resource_to_write = {“key”: “value”}
with open(os.path.join(os.path.dirname(__file__), “resource_to_write.json”)

资源.json

{“key_to_read”: “value_to_read”}

Dockerfile

FROM python:3.7.10
WORKDIR /code
COPY ./code
CMD ["/bin/bash"]

所以最终目标是让用户code/main.py成功运行(包括读/写),而不允许用户直接从图像中读取、写入、复制任何内容。

我试过的

我知道USERDocker 的指令,所以我尝试添加

chmod -R 0660 * && chmod 0665 code/ && chmod 0665 code/main.py

USER non_root _user

但是当我这样做时docker exec <container_id> python code/main.py,脚本没有打开 json 文件的权限。

我怎样才能做到这一点?是否有等效的无密码 sudo 可以实现,以便用户可以正确运行该脚本而无需让他们访问其他任何内容?

还是我从错误的角度接近这个?

奖金问题

如果实现了上述,如何防止用户简单地做docker exec —user root和克服我的安全措施?

标签: pythondockerubuntuuser-permissions

解决方案


推荐阅读