在Docker容器上实施OpenCPU的AppArmor安全配置文件

时间:2019-03-14 10:49:37

标签: docker ubuntu-16.04 opencpu apparmor

场景

我正在建立一个通过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

  • 安装了打包的RAppArmor debian
  • 将配置文件从/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配置文件
  • 重新启动AppArmor服务sudo service apparmor restart
  • 通过添加以下内容在相关的docker-compose.yml中指定了apparmor配置文件:
 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容器的其他方法的建议。

0 个答案:

没有答案