特权容器
场景说明
iSulad默认启动的是普通容器,普通容器适合启动普通进程,其权限非常受限,仅具备/etc/default/isulad/config.json中capabilities所定义的默认权限。当需要特权操作时(比如操作/sys下的设备),需要特权容器完成这些操作,使用该特性,容器内的root将拥有宿主机的root权限, 否则,容器内的root在只是宿主机的普通用户权限。
使用限制
特权容器为容器提供了所有功能,还解除了设备cgroup控制器强制执行的所有限制,具备以下特性:
Secomp不block任何系统调用
/sys、/proc路径可写
容器内能访问主机上所有设备
系统的权能将全部打开
普通容器默认权能为:
Capability Key | Capability Description |
---|
SETPCAP | 修改进程权能 |
MKNOD | 允许使用mknod()系统调用创建特殊文件 |
AUDIT_WRITE | 向内核审计日志写记录 |
CHOWN | 对文件的 UIDs 和 GIDs 做任意的修改(参考 chown(2)) |
NET_RAW | 使用 RAW 和 PACKET sockets;为透明代理绑定任何地址 |
DAC_OVERRIDE | 忽略文件的DAC访问限制 |
FOWNER | 忽略文件属主ID必须和进程用户ID相匹配的限制 |
FSETID | 允许设置文件的setuid位 |
KILL | 允许对不属于自己的进程发送信号 |
SETGID | 允许改变进程的组ID |
SETUID | 允许改变进程的用户ID |
NET_BIND_SERVICE | 允许绑定到小于1024的端口 |
SYS_CHROOT | 允许使用chroot()系统调用 |
SETFCAP | 允许向其他进程转移能力以及删除其他进程的能力 |
当容器为特权模式时,将添加以下权能:
Capability Key | Capability Description |
---|
SYS_MODULE | 加载和卸载内核模块 |
SYS_RAWIO | 允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备 |
SYS_PACCT | 允许执行进程的BSD式审计 |
SYS_ADMIN | 允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等 |
SYS_NICE | 允许提升优先级及设置其他进程的优先级 |
SYS_RESOURCE | 忽略资源限制 |
SYS_TIME | 允许改变系统时钟 |
SYS_TTY_CONFIG | 允许配置TTY设备 |
AUDIT_CONTROL | 启用和禁用内核审计;修改审计过滤器规则;提取审计状态和过滤规则 |
MAC_ADMIN | 覆盖强制访问控制 (Mandatory Access Control (MAC)),为Smack Linux安全模块(Linux Security Module (LSM)) 而实现 |
MAC_OVERRIDE | 允许 MAC 配置或状态改变。为 Smack LSM 而实现 |
NET_ADMIN | 允许执行网络管理任务 |
SYSLOG | 执行特权 syslog(2) 操作 |
DAC_READ_SEARCH | 忽略文件读及目录搜索的DAC访问限制 |
LINUX_IMMUTABLE | 允许修改文件的IMMUTABLE和APPEND属性标志 |
NET_BROADCAST | 允许网络广播和多播访问 |
IPC_LOCK | 允许锁定共享内存片段 |
IPC_OWNER | 忽略IPC所有权检查 |
SYS_PTRACE | 允许跟踪任何进程 |
SYS_BOOT | 允许重新启动系统 |
LEASE | 允许修改文件锁的FL_LEASE标志 |
WAKE_ALARM | 触发将唤醒系统的功能,如设置 CLOCK_REALTIME_ALARM 和 CLOCK_BOOTTIME_ALARM 定时器 |
BLOCK_SUSPEND | 可以阻塞系统挂起的特性 |
使用指导
iSulad使用--privileged给容器添加特权模式,在非必要情况下,不要给容器添加特权,遵循最小特权原则,减少存在的安全风险。
isula run --rm -it --privileged busybox