特权容器
场景说明
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