python - 如何防止访问 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
成功运行(包括读/写),而不允许用户直接从图像中读取、写入、复制任何内容。
我试过的
我知道USER
Docker 的指令,所以我尝试添加
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
和克服我的安全措施?
解决方案
推荐阅读
- java - Ant 到 Gradle,javaCompile 任务出现问题
- java - 你去哪里提交杰克逊 JSON 的错误报告?
- c++ - 如何打印在二叉搜索树中找到的数据?
- sqlite - Flutter:SQLite 的收藏夹功能 - 首次加载时出现问题
- python - 在 matplotlib 中对 pandas 数据框进行条件绘图
- python - 如何从给定列表创建字典?
- javascript - Google Apps脚本从Google表格中的URL下载文件?
- java - 返回每 2 个值相加的新数组?
- php - 向队列中的非注册用户(电子邮件列表)发送邮件
- flutter - 如何创建无法通过 Flutter 中的后退按钮访问旧页面的页面转换?