kubernets CKS 4.1 Pod安全上下文(一)

本文介绍了Kubernetes安全上下文(SecurityContext)中的多种安全机制,如自主访问控制、SELinux、AppArmor、Seccomp等,用于限制容器的权限和系统调用。通过示例展示了如何以普通用户和root用户运行Docker镜像,并讨论了如何禁止容器进程的权限提升和只读根文件系统。最后提到了将镜像推送到Dockerhub的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇: kubernets CKS 3.3 Seccomp 限制容器进程系统调用

安全上下文(Security Context):K8s对Pod和容器提供的安全机制,可以设置Pod特权和访问控制。

4.1.1 安全上下文限制维度

•自主访问控制(Discretionary Access Control):基于用户ID(UID)和组ID(GID),来判定对对象(例如文件)的访问权限。
•安全性增强的Linux(SELinux):为对象赋予安全性标签。
•以特权模式或者非特权模式运行。
•Linux Capabilities: 为进程赋予root 用户的部分特权而非全部特权。
•AppArmor:定义Pod使用AppArmor限制容器对资源访问限制
•Seccomp:定义Pod使用Seccomp限制容器进程的系统调用
•AllowPrivilegeEscalation:禁止容器中进程(通过SetUID 或SetGID 文件模式)获得特权提升。当容器以特权模式运行或者具有CAP_SYS_ADMIN能力时,AllowPrivilegeEscalation总为True。
•readOnlyRootFilesystem:以只读方式加载容器的根文件系统。

4.1.2 docker例子以普通用户运行的镜像

以root运行的镜像

# cat Dockerfile 
FROM python
RUN mkdir /data/www -p
COPY . /data/www
RUN pip install flask -i https://mirrors.aliyun.com/pypi/simple/ && \
    pip install prometheus_client -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /data/www
CMD python main.py 

以python用户运行的镜像

# cat Dockerfile 
FROM python
RUN useradd python
RUN mkdir /data/www -p
COPY . /data/www
RUN chown -R python /data
RUN pip install flask -i https://mirrors.aliyun.com/pypi/simple/ && \
    pip install prometheus_client -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /data/www
USER python
CMD python main.py 

制作镜像后运行容器:

docker build -t flask-demo-v1 .
docker build -t flask-demo-v2 .
docker run -d flask-demo-v1
docker run -d flask-demo-v2

以root运行的进程:

[root@k8s1 flask-demo]# ps -ef | grep main
root     109387  13828  0 18:28 pts/0    00:00:00 grep --color=auto main
root     116491 116461  0 18:19 ?        00:00:00 /bin/sh -c python main.py
root     116654 116491  0 18:19 ?        00:00:00 python main.py

以python运行的进程:(系统必须有一个python账号,没有显示id1000运行)

[root@k8s1 flask-demo]# ps -ef | grep main
python    96675  96648  0 21:22 ?        00:00:00 /bin/sh -c python main.py
python    96777  96675  0 21:22 ?        00:00:00 python main.py

将2个镜像打上tag上传到docker hub

docker tag flask-demo-v1 wangjinxiong/flask-demo:root
docker tag flask-demo-v2 wangjinxiong/flask-demo:noroot
docker push wangjinxiong/flask-demo:root
docker push wangjinxiong/flask-demo:noroot

下一篇:kubernets CKS 4.2 Pod安全上下文(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值