我正在建立一个通过OpenCPU http层与R后端交互的生产网站。该生产站点将/正在安装在Docker容器化的Ubuntu 16.04计算机上。
我需要保护R后端(例如,OpenCPU作为网守),以免受到可能的滥用,例如我想disable directory listing。毕竟这是一个简单的http端点。
服务器文档文件以及官方docker hub page中的以下信息使我感到奇怪:
“ Docker拥有自己的安全模型,并禁用了其他基于Linux的安全模块,例如AppArmor或SELinux。因此请注意,容器内OpenCPU API的执行环境是完全不受限制的。”
我是否可以简单地重用现有OpenCPU的AppArmor配置文件,并使Docker主机限制正在运行的Docker容器进程的权限?我以为是,所以这是我做的–基于RAppArmor readme:
/usr/local/lib/R/site-library/RAppArmor/profiles/debian/*
复制到docker主机/etc/apparmor.d/
目录sudo apparmor_parser -r -W /etc/apparmor.d/usr.bin.r
激活了AppArmor配置文件sudo service apparmor restart
security_opt:
- apparmor:/usr/bin/R
docker inspect myOpenCPUContainer | grep apparmor
的apparmor配置文件。它是:"AppArmorProfile": "/usr/bin/R"
。不幸的是,当我查看日志docker logs myOpenCPUContainer
时,它返回:
/bin/sh: error while loading shared libraries: libc.so.6: cannot stat shared object: Permission denied
非常感谢我为我做错事。或有关保护Dockerized OpenCPU容器的其他方法的建议。