zoukankan      html  css  js  c++  java
  • 关于OpenShift镜像使用的uid问题

    在客户那里很多时候遇到过外部的image作为pod运行后出现的各种因为权限访问导致的失败。找到官方文档对这个问题有一些说明。

    https://docs.openshift.com/container-platform/3.11/creating_images/guidelines.html

    默认情况下,OpenShift容器平台使用任意分配的用户ID(Arbitrary User ID)运行容器。

    这提供了额外安全性,避免了由于容器引擎漏洞而导致逃逸容器的进程,从而实现了对主机节点的升级权限。

    为了支持image以任意用户身份运行,映像中的进程可能写入的目录和文件应归根组所有,并且可由该组读取/写入。 要执行的文件还应该具有组执行权限。

    在Dockerfile中添加以下内容可设置目录和文件许可权,以允许根组中的用户在构建的映像中访问它们:

    RUN chgrp -R 0 /some/directory && 
        chmod -R g=u /some/directory

    也就是说,你需要在容器中用到的目录,设置group为0(根组),同时讲用户的权限设置成组的权限去实现。

    因为容器用户始终是根组的成员,所以容器用户可以读取和写入这些文件。

    根组没有任何特殊权限(与根用户不同),因此这种安排没有安全性问题。

    另外,容器中运行的进程不得侦听特权端口(低于1024的端口),因为它们没有以特权用户身份运行。

    如果需要容器中的用户以特权用户运行,可以做如下设置

    oc create serviceaccount runasanyuid
    oc adm policy add-scc-to-user anyuid -z runasanyuid -ntest
    oc adm policy add-scc-to-user privileged -z runasanyuid -ntest

    然后将runasanyuid的SA设置到deployment中。

  • 相关阅读:
    mysql面试知识点
    计算机网络
    BFS
    拓扑排序
    双指针
    回溯算法
    hash表 算法模板和相关题目
    桶排序及其应用
    滑动窗口
    贪心算法
  • 原文地址:https://www.cnblogs.com/ericnie/p/12108973.html
Copyright © 2011-2022 走看看