首页
视频
资源
登录
原
Kubernetes AppArmor 简单运用
4668
人阅读
2022/6/27 22:13
总访问:
2609096
评论:
0
收藏:
0
手机
分类:
容器编排
![](https://img.tnblog.net/arcimg/hb/c3cb312afc7245c0a50ae9c32f0c44dd.png) >#Kubernetes AppArmor 简单运用 [TOC] AppArmor 简介 ------------ tn2>AppArmor 是一个有效且易于使用的 Linux 应用程序安全系统。AppArmor 通过强制执行良好行为并防止已知和未知的应用程序缺陷被利用,主动保护操作系统和应用程序免受外部或内部威胁,甚至是零日攻击。 AppArmor 通过提供强制访问控制 (MAC) 来补充传统的 Unix 自主访问控制 (DAC) 模型。自 2.6.36 版起,它已包含在主线 Linux 内核中,并且自 2009 年以来,它的开发得到了 Canonical 的支持。 AppArmor 模式 ------------ tn2>AppArmor 有两种工作模式:enforcement、complain。 | 模式 | 描述 | | ------------ | ------------ | | `Enforcement` | 配置文件里列出的限制条件都会得到执行,并且对于违反这些限制条件的程序会进行记录。 | | `Complain` | 配置文件里的限制条件不会得到执行,Apparmor只是对程序的行为进行记录。例如程序可以写一个在配置文件里注明只读的文件,但 Apparmor 不会对程序的行为进行限制,只是进行记录。 | 访问控制与资源限制 ------------ >### 文件系统的访问控制 tn2>Apparmor 可以对某一个文件,或者某一个目录下的文件进行访问控制,包括以下几种访问模式: | 访问模式 | 描述 | | ------------ | ------------ | | `r` | 读模式 | | `w` | 写模式 | | `a` | 追加模式 | | `f` | 锁定文件模式 | | `l` | 链接模式 | tn2>在配置文件中的写法,例如: ```bash # 表示可对/tmp目录下的文件进行读取 /tmp r ``` tn>注意:没在配置文件中列出的文件,程序是不能访问的。 >### 资源限制 tn2>Apparmor 可以提供类似系统调用 setrlimit 一样的方式来限制程序可以使用的资源。要限制资源,可在配置文件中这样写: ```bash set rlimit [resource] <= [value], ``` tn2>其 resource 代表某一种资源,value 代表某一个值,要对程序可以使用的虚拟内存做限制时,可以这样写: ```bash # 可以使用的虚拟内存最大为1M set rlimit as <= 1M, ``` >### 访问网络 tn2>Apparmor 可以限制程序的网络访问,在配置文件中的语法是: ```bash network [[domain][type][protocol]] ``` tn2>举例: ```bash # 设置程序可以进行所有的网络操作 network # 允许程序使用IPv4中的TCP协议 network inet tcp ``` 配置文件的编写 ------------ tn>编写完配置文件后,要把文件放到`/etc/apparmor.d`这个目录下 >### 配置与安装 tn2>在k8s工作节点安装 apparmor 命令。 ```bash # Ubuntu apt-get install apparmor-utils apparmor-profiles apparmor-profiles-extra -y # Centos请参考 # https://gitlab.com/apparmor/apparmor/-/wikis/Distro_CentOS ``` tn2>接着我们查看当前AppArmor的状态。 ```bash apparmor_status # 或者通过如下命令检查模块是否启用 cat /sys/module/apparmor/parameters/enabled ``` ![](https://img.tnblog.net/arcimg/hb/0caeb165f82f4989863a31067e281099.png) tn>注意:Apparmor 的profile配置文件均保存在目录`/etc/apparmor.d`,对应的日志文件记录在`/var/log/messages`。 >### Demo tn2>在工作节点创建`/etc/apparmor.d/nginx_apparmor`文件,并编写可以读取所有文件的策略和不可以做写文件的操作。 ```bash vim /etc/apparmor.d/nginx_apparmor #include <tunables/global> profile nginx-profile flags=(attach_disconnected) { #include <abstractions/base> file, # Deny all file writes. # 拒绝所有对文件写的操作 deny /** w, } ``` tn2>接着我们创建一个Pod,不加载apparmor配置。`vim pod1.yaml` ```yaml apiVersion: v1 kind: Pod metadata: name: hello-apparmor annotations: container.apparmor.security.beta.kubernetes.io/hello: localhost/nginx-profile spec: containers: - name: hello image: busybox command: ["sh","-c","echo 'Hello AppArmor!' && sleep 1h"] ``` tn2>在集群的工作节点上,确保准备好的AppArmor文件在`/etc/AppArmor.d`的目录下,文件名称是nginx_apparmor。编辑位于`~/pod1.yaml`准备好的清单文件,以应用AppArmor配置。最后应用清单文件并创建pod指定清单文件。 ```bash ssh node1 apparmor_parser -q /etc/apparmor.d/nginx_apparmor apparmor_status | grep nginx exit ``` ![](https://img.tnblog.net/arcimg/hb/f9d87c5d4e3e4e87ac3aed96bd2d18e3.png) tn>注意必须加入这一串:`container.apparmor.security.beta.kubernetes.io/<容器名>: localhost/<策略>`表示该容器启动时必须遵守配置的Apparmor策略规则。 tn2>读取文件,我们没有做限制,访问是没什么问题的。 ```bash kubectl exec hello-apparmor -- cat /etc/hosts ``` ![](https://img.tnblog.net/arcimg/hb/6f2d99de2d154ebab730432dc5cd1747.png) tn2>写一个文件时,就会报错没权限。 ```bash kubectl exec hello-apparmor -- touch /etc/test1 ``` ![](https://img.tnblog.net/arcimg/hb/b55237a5dded4eeb8f7bcd75431135f3.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
168篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
1篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术