[ 
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: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to