[
https://issues.apache.org/jira/browse/YARN-7516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323037#comment-16323037
]
Eric Badger commented on YARN-7516:
-----------------------------------
{noformat:title=Both privileges and capabilities}
-bash-4.2$ sudo docker run --privileged image_name ls /dev | column -c 160
WARNING: IPv4 forwarding is disabled. Networking will not work.
autofs network_throughput sde1 tty15
tty43 uinput
bsg null sde2 tty16
tty44 urandom
btrfs-control nvram sdf tty17
tty45 usbmon0
bus oldmem sdf1 tty18
tty46 usbmon1
core port sdf2 tty19
tty47 usbmon2
cpu ppp sdg tty2
tty48 usbmon3
cpu_dma_latency ptmx sdg1 tty20
tty49 usbmon4
crash ptp0 sdh tty21
tty5 vcs
dri pts sdh1 tty22
tty50 vcs1
fb0 random sg0 tty23
tty51 vcs2
fd raw sg1 tty24
tty52 vcs3
full rtc0 sg2 tty25
tty53 vcs4
fuse sda sg3 tty26
tty54 vcs5
hpet sda1 sg4 tty27
tty55 vcs6
hwrng sda2 sg5 tty28
tty56 vcsa
input sda3 sg6 tty29
tty57 vcsa1
ipmi0 sda4 sg7 tty3
tty58 vcsa2
kmsg sda5 shm tty30
tty59 vcsa3
kvm sdb snapshot tty31
tty6 vcsa4
loop-control sdb1 snd tty32
tty60 vcsa5
mapper sdb2 stderr tty33
tty61 vcsa6
mcelog sdb3 stdin tty34
tty62 vfio
md0 sdb4 stdout tty35
tty63 vga_arbiter
md1 sdb5 tty tty36
tty7 vhci
md2 sdc tty0 tty37
tty8 vhost-net
md3 sdc1 tty1 tty38
tty9 zero
md4 sdc2 tty10 tty39
ttyS0
mem sdd tty11 tty4
ttyS1
mqueue sdd1 tty12 tty40
ttyS2
net sdd2 tty13 tty41
ttyS3
network_latency sde tty14 tty42
uhid
{noformat}
{noformat:title=Just privileges, no capabilities}
-bash-4.2$ sudo docker run --rm --privileged --cap-drop='ALL' image_name ls
/dev | column -c 160
WARNING: IPv4 forwarding is disabled. Networking will not work.
autofs network_throughput sde1 tty15
tty43 uinput
bsg null sde2 tty16
tty44 urandom
btrfs-control nvram sdf tty17
tty45 usbmon0
bus oldmem sdf1 tty18
tty46 usbmon1
core port sdf2 tty19
tty47 usbmon2
cpu ppp sdg tty2
tty48 usbmon3
cpu_dma_latency ptmx sdg1 tty20
tty49 usbmon4
crash ptp0 sdh tty21
tty5 vcs
dri pts sdh1 tty22
tty50 vcs1
fb0 random sg0 tty23
tty51 vcs2
fd raw sg1 tty24
tty52 vcs3
full rtc0 sg2 tty25
tty53 vcs4
fuse sda sg3 tty26
tty54 vcs5
hpet sda1 sg4 tty27
tty55 vcs6
hwrng sda2 sg5 tty28
tty56 vcsa
input sda3 sg6 tty29
tty57 vcsa1
ipmi0 sda4 sg7 tty3
tty58 vcsa2
kmsg sda5 shm tty30
tty59 vcsa3
kvm sdb snapshot tty31
tty6 vcsa4
loop-control sdb1 snd tty32
tty60 vcsa5
mapper sdb2 stderr tty33
tty61 vcsa6
mcelog sdb3 stdin tty34
tty62 vfio
md0 sdb4 stdout tty35
tty63 vga_arbiter
md1 sdb5 tty tty36
tty7 vhci
md2 sdc tty0 tty37
tty8 vhost-net
md3 sdc1 tty1 tty38
tty9 zero
md4 sdc2 tty10 tty39
ttyS0
mem sdd tty11 tty4
ttyS1
mqueue sdd1 tty12 tty40
ttyS2
net sdd2 tty13 tty41
ttyS3
network_latency sde tty14 tty42
uhid
{noformat}
{noformat:title=Just capabilities, no privileges}
-bash-4.2$ sudo docker run --rm image_name ls /dev | column -c 160
WARNING: IPv4 forwarding is disabled. Networking will not work.
core fd full mqueue null ptmx pts random shm stderr
stdin stdout tty urandom zero
{noformat}
{noformat:title=No capabilties or privileges}
-bash-4.2$ sudo docker run --rm --cap-drop='ALL' image_name ls /dev | column -c
160
WARNING: IPv4 forwarding is disabled. Networking will not work.
core fd full mqueue null ptmx pts random shm stderr
stdin stdout tty urandom zero
{noformat}
I don't see any difference with or without capabilities, but I see a huge
different without privilege.
> Security check for untrusted docker image
> -----------------------------------------
>
> Key: YARN-7516
> URL: https://issues.apache.org/jira/browse/YARN-7516
> Project: Hadoop YARN
> Issue Type: Sub-task
> Reporter: Eric Yang
> Assignee: Eric Yang
> Attachments: YARN-7516.001.patch, YARN-7516.002.patch,
> YARN-7516.003.patch, YARN-7516.004.patch, YARN-7516.005.patch,
> YARN-7516.006.patch, YARN-7516.007.patch
>
>
> Hadoop YARN Services can support using private docker registry image or
> docker image from docker hub. In current implementation, Hadoop security is
> enforced through username and group membership, and enforce uid:gid
> consistency in docker container and distributed file system. There is cloud
> use case for having ability to run untrusted docker image on the same cluster
> for testing.
> The basic requirement for untrusted container is to ensure all kernel and
> root privileges are dropped, and there is no interaction with distributed
> file system to avoid contamination. We can probably enforce detection of
> untrusted docker image by checking the following:
> # If docker image is from public docker hub repository, the container is
> automatically flagged as insecure, and disk volume mount are disabled
> automatically, and drop all kernel capabilities.
> # If docker image is from private repository in docker hub, and there is a
> white list to allow the private repository, disk volume mount is allowed,
> kernel capabilities follows the allowed list.
> # If docker image is from private trusted registry with image name like
> "private.registry.local:5000/centos", and white list allows this private
> trusted repository. Disk volume mount is allowed, kernel capabilities
> follows the allowed list.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
