[openstack-dev] [tripleo] undercloud containers with SELinux Enforcing

Bogdan Dobrelya bdobreli at redhat.com
Mon Nov 6 17:23:49 UTC 2017


So the rule of thumb I propose is "if a container bind-mounts /run 
(/var/run), make it privileged to not mess with SELinux enforcing". I've 
yet to found better alternatives to allow containers access the host 
sockets.

Additionally, the patch allows developers of t-h-t docker/services to 
not guess and repeat :z flags for generic
/var/lib/<config-data-related>, /etc/puppet/, 
/usr/share/openstack-puppet/modules and /var/log/containers/<foo> paths 
for services as the wanted context for those will be configured at the 
deploy steps tasks [0], and the docker-puppet.py tool [1]. That kind of 
follows DRY the best.

I hope that works.

[0] https://review.openstack.org/#/c/513669/11/common/deploy-steps.j2
[1] https://review.openstack.org/#/c/513669/12/docker/docker-puppet.py@277

On 11/6/17 2:49 PM, Bogdan Dobrelya wrote:
> Hi.
> I've made some progress with containerized undercloud deployment guide
> and SELinux enforcing ( the bug [0] and the topic [1] ).
> 
> Although I'm now completely stuck [2] with fixing t-h-t's 
> docker/services to nail the selinux thing fully, including the 
> containerized *overclouds* part. The main issue is to make some of the 
> host-path volumes bind-mounted, like /run:/run and /dev:/dev, selinux 
> friendly. Any help is appreciated!
> 
>> Hello folks.
>> I need your feedback please on SELinux fixes [0] (or rather 
>> workarounds) for containerized undercloud feature, which is 
>> experimental in Pike.
>>
>> [TL;DR] The problem I'm trying to solve is primarily allowing TripleO 
>> users to follow the guide [1] w/o telling them "please disable SELinux".
>>
>> Especially, given the note "The undercloud is intended to work 
>> correctly with SELinux enforcing, and cannot be installed to a system 
>> with SELinux disabled".
>>
>> I understand that putting "chcon -Rt svirt_sandbox_file_t -l s0" (see 
>> [2]) to all of the host paths bind-mounted into containers is not 
>> secure, and from SELinux perspective allows everything to all 
>> containers. That could be a first step for docker volumes working w/o 
>> shutting down SELinux on *hosts* though.
>>
>> I plan to use the same approach for the t-h-t docker/services 
>> host-prep tasks as well. Why not using docker's :z :Z directly? IIUC, 
>> it doesn't allow combine with other mount flags, like :ro:z won't 
>> work. I look forward for better solutions and ideas!
>>
>> [0] https://review.openstack.org/#/q/topic:bug/1682179
>> [1] 
>> https://docs.openstack.org/tripleo-docs/latest/install/containers_deployment/undercloud.html 
>>
>> [2] 
>> https://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/ 
>>
> 
> [0] https://bugs.launchpad.net/tripleo/+bug/1682179
> [1] https://review.openstack.org/#/q/topic:bug/1682179
> [2] https://review.openstack.org/#/c/517383/
> 
> 


-- 
Best regards,
Bogdan Dobrelya,
Irc #bogdando



More information about the OpenStack-dev mailing list