如何在Kubernetes Pod /容器中以非root用户身份登录

时间:2018-08-14 22:49:18

标签: security docker kubernetes ldap containers

我正在尝试使用kubectl exec命令登录kubernetes容器。我成功了,但是它以root用户身份登录。作为系统构建的一部分,我还创建了其他一些用户。

正在使用的命令是“ kubectl exec -it / bin / bash”。我想这意味着在pod上运行/ bin / bash,这将导致外壳程序进入容器。

有人可以指导我以下内容吗?

  1. 如何使用非root用户登录?
  2. 是否可以禁用root用户登录?
  3. 如何将组织的ldap绑定到容器中?

请问我是否需要更多信息来回答这个问题?

谢谢

Anurag

3 个答案:

答案 0 :(得分:2)

您可以使用<base href="." />以非root用户身份登录。

运行su - <USERNAME>以获得所有可用用户的列表,然后使用有效的Shell编译器标识用户,例如

cat /etc/passwd/bin/bash

使用/bin/sh/bin/nologin作为集合编译器的用户被系统进程使用,因此,您不能以它们的身份登录。

答案 1 :(得分:0)

我认为这是因为容器用户是root用户,这就是为什么当您将kubectl exec放入其中时,默认用户是root用户。如果您使用非root用户运行容器或pod,则kubectl exec将不是root用户。

答案 2 :(得分:0)

在大多数情况下,只有一个进程在Kubernetes Pod内的Docker容器中运行。没有其他进程可以提供身份验证或授权功能。您可以尝试在一个容器中运行包含多个嵌套进程的包装器,但是这样会破坏容器化的想法,以最小的开销运行不可变的应用程序代码。

kubectl exec在与主进程相同的容器环境中运行另一个进程,并且没有用于设置此进程的用户ID的选项。

不过,您可以通过将docker exec与其他选项结合使用来实现:

--user , -u    Username or UID (format: <name|uid>[:<group|gid>])

无论如何,这两篇文章可能对您在Kubernetes集群中运行IBM MQ很有帮助