特权容器

场景说明

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给容器添加特权模式,在非必要情况下,不要给容器添加特权,遵循最小特权原则,减少存在的安全风险。

  1. isula run --rm -it --privileged busybox