我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

在kubernetes里使用AppArmor限制容器对资源的访问

来源:网络 更新时间:2024-05-29 18:30:21

一.系统环境

本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。

服务器版本 docker软件版本 Kubernetes(k8s)集群版本 kube-bench版本 CPU架构
Ubuntu 18.04.5 LTS Docker version 20.10.14 v1.22.2 0.6.7 x86_64

Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。

服务器 操作系统版本 CPU架构 进程 功能描述
k8scludes1/192.168.110.128 Ubuntu 18.04.5 LTS x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点
k8scludes2/192.168.110.129 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点
k8scludes3/192.168.110.130 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点

二.前言

在现代的云计算环境中,安全是每个开发者和运维人员必须关注的问题。尤其是在运行容器的环境中,如何确保容器之间以及容器与宿主机之间的安全隔离,防止恶意行为对系统造成破坏,是一个非常重要的课题。本文将介绍如何使用 AppArmor 来限制容器对资源的访问,提高系统的安全性。

使用 AppArmor 来限制容器对资源的访问的 前提 是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》 https://www.cnblogs.com/renshengdezheli/p/17632858.html。

三.AppArmor简介

AppArmor 是一种 Linux 内核模块,用于提供强制访问控制(MAC)功能。它允许管理员为每个进程定义详细的访问控制策略,从而限制进程对文件、目录、网络接口等资源的访问。通过使用 AppArmor,我们可以有效地防止恶意软件或错误配置的应用程序对系统资源造成不必要的影响。

AppArmor 的规则文件通常位于 /etc/apparmor.d/ 目录下。每个规则文件对应一个应用或服务,文件名通常以路径开头,后面跟着应用的名称。例如,对于 Nginx 服务器,其规则文件名为 /etc/apparmor.d/usr.sbin.nginx

AppArmor 规则由一系列的匹配语句组成,每条语句表示一个访问控制规则。规则的基本结构如下:

       

其中:

  • :指定规则所属的 profile,可以是预定义的 profile(如 usr.sbin.nginx ),也可以是自定义的 profile。
  • :可选字段,用于指定 profile 的行为选项,如是否启用日志记录等。
  • :必选字段,用于指定规则适用的条件,如进程名称、用户等。
  • :必选字段,用于指定允许或拒绝的操作类型,如读、写、执行等。
  • :可选字段,用于指定规则适用的文件类型,如普通文件、目录、设备文件等。
  • :可选字段,用于指定规则适用的文件路径模式。
  • :可选字段,用于指定规则适用的命令名称。

四.AppArmor和SELinux的区别

虽然 AppArmor 和 SELinux 都是 Linux 上的访问控制工具,但它们之间存在一些区别:

  • 设计理念 :AppArmor 的设计目标是简单易用,而 SELinux 则更注重细粒度的控制。因此,AppArmor 的策略配置文件通常比 SELinux 更简洁。
  • 配置方式 :AppArmor 的策略配置文件采用一种类似于 DSL(领域特定语言)的语法,易于阅读和编写;而 SELinux 的策略配置文件则采用一种更复杂的布尔表达式语法。
  • 社区支持 :由于 AppArmor 的配置相对简单,因此在社区中得到了更广泛的支持和应用。

五.使用AppArmor限制nginx程序访问目录

5.1 安装nginx

创建目录存放文件。

root@k8scludes1:~# mkdir systemsafe   

root@k8scludes1:~# cd systemsafe/

安装nginx。

root@k8scludes1:~/systemsafe# apt-get install nginx

root@k8scludes1:~/systemsafe# which nginx
/usr/sbin/nginx

nginx安装好之后就可以访问nginx了。

root@k8scludes1:~/systemsafe# curl 192.168.110.128



Welcome to nginx!