Openshift平台容器内root权限获取方案

第1章 文章目的 

第2章 结合SCC安全机制的解决方案 

  2.1 什么是scc 

  2.2 操作步骤 

1 文章目的

  Openshift平台中,当在容器内需要用到root权限时,仅仅在dockerfile中指定user为root还是不够的,结合privileged参数以及oc adm policy add-scc-to-group anyuid system:authenticated命令能够使root用户拥有真正的root权限,但上面的命令能够使当前ns下的所有登入用户都使用anyuid,这样做会令系统有安全性问题,故不推荐使用该模式。必要时为我们仍需为个别容器提供root权限,但应该仅于限指定的容器而不是所有,结合openshift特性提出解决方法。

2 结合SCC安全机制的解决方案

  2.1 什么是scc

SCC是openshift平台提供的控制操作系统资源的访问权限的具体的安全控制机制,结合serviceAccount(sa)进行身份认证和权限控制使用。SCC能够管控的是具体容器可以或不可以执行哪些操作或调用,它是OpenShift规范用户运行容器行为的一个有效途径

Openshift默认创建的scc,可以通过oc get scc查看

    从上图可以看到集群默认定义了一组具有不同权限的SCC组。不同的SCC组有不同的权限配置。

    这些配置控制了容器运行用户的UID、访问、支持卷的类型、是否能访问宿主机的文件、PID及网络等权限。在这些系统默认定义的SCC组中,privileged SCC组的权限最大,restricted SCC组的权限最小。普通用户及其创建项目的Service Account默认都归属于restricted组。

    要使创建的容器拥有root权限,就需要创建新的sa并把它加入到anyuid或者privileged SCC组,并在pod中引用该sa,实际上这也是redhat推荐的方式。

注:如果误删了一个默认的SCC,它将在重新启动后重新生成

  2.2 操作步骤

  1 创建sa

oc create sa ${name}

  2 把sa加入到指定用户列表的scc

oc adm policy add-scc-to-user anyuid -z useroot

anyuid: 要加入的用户组, -z:指定sa

3 在deploy/pod等资源中使用sa进行身份验证

  4 验证需要root权限资源

发布了5 篇原创文章 · 获赞 0 · 访问量 7374

猜你喜欢

转载自blog.csdn.net/Billy_xxu/article/details/102662731
今日推荐