保障 Kubernetes 安全:从容器到权限控制
1. 容器权限更新
为了能在本地使用 Docker 运行容器,并将其部署到 Kubernetes 生产环境,同时避免在 Dockerfile 中进行特定环境的更改,我们需要更新 Dockerfile,给予组 0 写权限。以下是更新后的 Dockerfile:
FROM python:3.12
ENV PYTHONUNBUFFERED 1
COPY . /app
WORKDIR /app
RUN mkdir logs
RUN chgrp -R 0 logs \
&& chmod -R g+rwX logs
CMD python3 server.py
如果你想在将容器部署到 Kubernetes 之前,使用非根用户在本地 Docker 中运行容器进行测试,可以在运行时设置用户: docker run --user 1001:0 $CONTAINER_NAME 。
2. 准入控制器
在之前的操作中,我们手动为 Pod 添加了 runAsNonRoot 以防止其以根用户身份运行。若希望所有 Pod 都遵循此设置,理想情况下,我们可以配置集群拒绝任何未配置该设置的 Pod,甚至自动添加此设置,这就需要用到准入控制器。
准入控制器是在创建对象(如使用 kubectl create )时通过 Webhook 执行的代码片段,分为验证型和变异型两种:
超级会员免费看
订阅专栏 解锁全文
1219

被折叠的 条评论
为什么被折叠?



