描述
为容器镜像的Dockerfile
中的容器创建非root
用户
隐患分析
如果可能,指定非root
用户身份运行容器是个很好的做法。
虽然用户命名空间映射可用,但是如果用户在容器镜像中指定了用户,则默认情况下容器将作为该用户运行,并且不需要特定的用户命名空间重新映射。
审计方式
[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
注意: 如果镜像中有容器不需要的用户,请考虑删除它们。
删除这些用户后,提交镜像,然后生成新的容器实例以供使用。
参考文档
- Docker容器最佳安全实践白皮书(V1.0)
- Docker官方文档
网友评论