Dockerfile指定USER

描述

为容器镜像的Dockerfile中的容器创建非root用户

隐患分析

如果可能,指定非root用户身份运行容器是个很好的做法。 虽然用户命名空间映射可用,但是如果用户在容器镜像中指定了用户,则默认情况下容器将作为该用户运行,并且不需要特定的用户命名空间重新映射。

审计方式

```shell script [root@localhost ~]# docker ps |grep ccc|awk '{print $1}'|xargs -n1 docker inspect --format='{{.Id}}:User={{.Config.User}}' 4e53c86daf89a1bac0ed178d043663d2af162ca813ff17864ebdb964d8233459:User=


上述命令应该返回容器用户名或用户`ID`。 如果为空,则表示容器以`root`身份运行

### 修复建议

确保容器镜像的`Dockerfile`包含以下指令:`USER <用户名或 ID>`
其中用户名或`ID`是指可以在容器基础镜像中找到的用户。 如果在容器基础镜像中没有创建特定用户,则在`USER`指令之前添加`useradd`命令以添加特定用户。
例如,在`Dockerfile`中创建用户:

RUN useradd -d /home/username -m -s /bin/bash username USER username ```

注意: 如果镜像中有容器不需要的用户,请考虑删除它们。 删除这些用户后,提交镜像,然后生成新的容器实例以供使用。

参考文档

Copyright © weiliang 2021 all right reserved,powered by Gitbook本书发布时间: 2024-04-22 16:03:42

results matching ""

    No results matching ""