Jenkins - 构建docker镜像 - 阻止查看root

时间:2018-06-06 15:41:55

标签: security docker jenkins root

有哪些选项可以保护具有docker守护程序的Jenkins从属节点?有人可以启动docker容器并基本上访问root拥有的文件。

环境和问题详情:

  • Jenkins
  • Jenkins奴隶上可用的Docker守护程序
  • Jenkins代理以“build”用户身份运行
  • 将用户构建添加到组“docker”中 这些工作可以建立和启动容器
  • 我们正在考虑使用 docker pipeline https://jenkins.io/doc/book/pipeline/docker/

问题:

  • 用户可以将服务器根安装为docker volume
  • 他们可以执行像“rm -rf / hostroot / *”这样的命令,或者打印root拥有的秘密文件的内容。
  • 情侣选择:
    • 选项1 :使用-user参数以特定用户身份运行命令,但由于Jenkins文件由开发团队管理,因此无法严格执行
    • 选项2 :在docker守护程序上启用用户命名空间(可能存在一些权限问题 - 尤其是在工作区文件夹中,但可以使用一些解决方法) 你使用用户命名空间吗?
    • 选项3 :使用AWS Fargate构建(需要稍微查看一下) - 所以docker镜像不是在Jenkins从属节点上构建的,构建不会影响到节点

示例:

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /:/hostroot'
             (args '—user 500 ' --> since Jenkinsfile is managed by development team, ensuring everyone puts this parameter is tricky… someone could forget to put it)
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'rm -rf /hostroot/*' --> delete the entire filesystem!
               sh 'cat /path/to/secret/file' --> see some files owned by root!

            }
        }
    }
}

此处发布了一个类似的问题,但这是2岁,并没有一个好的答案: Building Docker images with Jenkins that runs inside a Docker container

0 个答案:

没有答案