[ 
https://issues.apache.org/jira/browse/YARN-7516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16324568#comment-16324568
 ] 

Eric Yang commented on YARN-7516:
---------------------------------

[~ebadger] Thanks for the review.

{quote}
To be consistent with the rest of the code, this should print a message that 
privileged containers are disabled.
{quote}

This will be fixed.

{quote}
This test should fail, but doesn't. As I understand the patch, since the image 
is not from a trusted registry, it should fail because of adding devices, 
capabilities, or mounts. However, since it isn't asking for privilege it 
bypasses the trusted registry check.
{quote}

Good catch here.  I was under the impression that if the image doesn't ask for 
a privileged container, and running as specific user, we will let them interact 
with host device.  I see the flawed in my logic, they could have sticky bit 
binary to gain root and make changes to attached device.  Hence, we will denied 
them of cap-add/cap-drop and device attachment from untrusted image even if 
they didn't ask for privileged container.

{quote}
Also, going back to the registry parsing, what about the case where I build an 
image on the node myself and then tag it with a name. Think about a single node 
cluster or similar or manually pushing images to every node. If I do that, then 
docker.privileged-containers.registries would prevent you from using the image 
as privileged since it didn't come from a registry. It would just be local to 
the node. I'm not sure that parsing for a / delimiter is the best method here.
{quote}

We can add docker.privileged-containers.registries=* as the default.  If 
wildcard is detected, then check_trusted_image check is by passed completely 
and allow any image to run with privileged mode.  Alternatively, user can tag 
the locally build image with trusted_registry/image name.  This allows user to 
define docker.privileged-containers.registries=trusted_registry and use the 
locally built image without push image to a trusted registry.  I am kind of in 
favor of second solution to prevent accidental allowance of privileged 
containers.  What is your preference?

> 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, YARN-7516.008.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]

Reply via email to