Docker/Kubernetes Pod内挂载设备遭AppArmor拒绝,求配置建议
解决AppArmor拒绝loop设备挂载的问题
根据你的审计日志和现有配置,问题核心在于未授权访问挂载源设备(/dev/loop*),且现有挂载规则未将所有匹配条件组合生效。以下是针对性的配置修正建议:
关键补充配置
授权loop设备访问权限
mount -o loop会自动创建/绑定loop设备,需给进程授权访问loop控制节点和对应设备的权限:/dev/loop-control rw, /dev/loop* rw,组合挂载规则(合并所有匹配条件)
AppArmor的mount规则需将源设备、目标路径、文件系统类型、挂载选项合并为单条规则才能精准匹配,替换你现有拆分的mount规则为:mount fstype=ext4 src=/dev/loop* -> /home/worker/test/, options=(ro,loop),若需支持/home/worker下任意子目录作为挂载点,可调整为:
mount fstype=ext4 src=/dev/loop* -> /home/worker/**, options=(ro,loop),可选:配套文件操作权限
若dd或mkfs.ext4也出现权限问题,补充以下规则:/home/worker/test.img rw, capability dac_override, # 用于mkfs绕过文件权限检查
完整配置片段示例
profile mount { # 基础执行权限 /bin/mount ix, /bin/dd ix, /sbin/mkfs.ext4 ix, # Loop设备访问权限 /dev/loop-control rw, /dev/loop* rw, # 精准挂载规则 mount fstype=ext4 src=/dev/loop* -> /home/worker/test/, options=(ro,loop), # 文件目录权限 /home/worker/ rw, /home/worker/test.img rw, /home/worker/test/ rw, }
验证步骤
- 重新加载配置:
apparmor_parser -r /path/to/your-apparmor-profile - 在Pod内重新执行挂载命令,检查系统审计日志是否仍有DENIED条目
内容的提问来源于stack exchange,提问作者Kyroo0
相关产品推荐
相关产品推荐

