首页 > 其他分享 >AppArmor

AppArmor

时间:2024-02-22 10:22:50浏览次数:26  
标签:busybox deny AppArmor write apparmor k8s example

AppArmor

【简介】

apparmor 是linux内核安全功能,可用于限制容器对资源的使用。 例如:容器使用linux内核能力,容器使用网络能力,容器对文件系统读写权限 等。

apparmor一条规则称为一个profile。profile可以 enforcingcomplain模式运行。

  • enforcing 可以理解为强制模式,需要容器必须符合规则
  • complain 可以理解为兼容模式,当容器不符合规范时仅仅打印提示信息



【前提条件】

  • 操作系统:Ubuntu 22.04

  • 内核支持

    cat /sys/module/apparmor/parameters/enabled
    Y
    
  • k8s>1.4版本,截止2023年功能仍处于beta阶段。

【示例】

  1. 编写apparmor插件,暂时不做深入研究语法

    tee test<<EOF
    #include <tunables/global>
    
    profile k8s-apparmor-example-deny-write flags=(attach_disconnected) {
      #include <abstractions/base>
    
      file,
    
      # 拒绝所有文件写入
      deny /** w,
    }
    EOF
    
  2. 加载插件

    # 加载配置文件到内核
    apparmor_parser -q test 
    
    # 查看是否加载成功
    # grep k8s-apparmor-example-deny-write /sys/kernel/security/apparmor/profiles
    
    root@master01:~# apparmor_status |grep k8s-apparmor-example-deny-write
       k8s-apparmor-example-deny-write
    
  3. 创建pod并使用该apparmor插件

    通过注解加载apparmor功能,注解格式如下:
    container.apparmor.security.beta.kubernetes.io/<容器名称>: <profile_ref>

    <profile_ref> 可以是以下取值之一:
    1.runtime/default 应用运行时的默认配置
    2. localhost/<profile_name>使用本地的profile插件
    3. unconfined 表示不加载配置文件

    kubectl run  busybox \
    --image=busybox  \
    --annotations=container.apparmor.security.beta.kubernetes.io/busybox=localhost/k8s-apparmor-example-deny-write \
    -- sleep 100
    
  4. 验证功能是否生效

    测试预期:无法写入文件

    root@master01:~# kubectl exec busybox -- cat /proc/1/attr/current
    k8s-apparmor-example-deny-write (enforce)
    
    root@master01:~# kubectl exec busybox -- touch /tmp/1
    touch: /tmp/1: Permission denied
    command terminated with exit code 1
    

标签:busybox,deny,AppArmor,write,apparmor,k8s,example
From: https://www.cnblogs.com/wangend/p/18026738

相关文章

  • Error: install profile containers-default-0.50.1: generate default profile into
    Bug#2040082“errorparsingAppArmorversion”:Bugs:golang-github-containers-commonpackage:UbuntuBug#2040082“errorparsingAppArmorversion”:Bugs:golang-github-containers-commonpackage:Ubuntu......
  • Linux PAM和AppArmor
    PAM介绍PAM全称叫作PluggableAuthenticationModules,译为可插拔验证模块。1995年起源于sun公司,PAM是一个框架,通过PAM框架提供的接口,应用程序可以不关心基层具体的实现过程,直接调用接口实现身份验证功能。PAM还有一个功能就是在用户空间就是先对用户的资源进行限制。PAM不是Lin......
  • AppArmor
    一、起源项目源地址AppArmor/apparmor·GitLab,与SELinux一样,也是属于强制访问控制(MAC)机制,默认集成在openSUSE和Ubuntu系统中,优势是比SELinux配置简单,并且有学习模式,方便用户使用。AppArmor可以限制特定进程读取/写入和执行文件的能力(及其他能力)。其主要理念是进程内部发生的......
  • 数据库升级之后遇到的坑:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!apparmor parser 报错找
          修改/etc/apparmor.d/usr.sbin.mysqld文件时候一定要对齐否则不起效8.0需要datadir文件夹给权限我直接chmod777整个文件夹执行serviceapparmor......