Thank you Jon - that reminder about open communication is much appreciated.
Carl On Tue, Nov 26, 2019 at 6:48 AM Jonathan Gallimore < jonathan.gallim...@gmail.com> wrote: > Thank you both for the excellent conversation on this topic, and for the > visibility for everyone else on the list. > > I would encourage you to keep going - it doesn't sound like you're too far > apart. In terms of communication, the preference is to not have off-list > conversations, but if you do, we'd like you to follow up on the list after. > The reason for this if a decision is made on the approach, we'd want to > ensure the community has visibility of that and is able to participate in > the wider conversation. If a PR shows up, the committer merging it will > need the background and understand the change prior to merging it. > > I'm just looking at Carl's PR: > https://github.com/tomitribe/docker-tomee/pull/33/files. I think I > possibly > have some misunderstandings, so I'm going to try it with Docker on my > desktop and on OpenShift. I might have some questions. :-) > > Thanks for the great thread and the open communication! > > Jon > > > > On Tue, Nov 26, 2019 at 1:34 AM Carl Mosca <carljmo...@gmail.com> wrote: > > > Hi Rod, > > > > I am certainly willing to talk about this via Skype or similar. > > > > I take no offense to a differing position on the desired used of running > a > > process as an arbitrary UID. I came along in a time when if you ran as > > root or even did a sudo command you should have a good reason and be > aware > > of what you were doing so that you did not accidentally do an "rm -Rf" or > > the like on some non-user directory of importance. > > > > Having said that, I believe the idea of running any process as a user > that > > one cannot (hopefully) predict as a more secure approach may sound a bit > > paranoid (I am guessing the above statement does as well to some). The > > best explanation I have for the concern is italicized below from some of > > Red Hat's docs on OpenShift: > > > > > > > > *Running processes for applications as different user IDs means that if a > > security vulnerability were ever discovered in the underlying container > > runtime, and an application were able to break out of the container to > the > > host, they would not be able to interact with processes owned by other > > users, or from other applications, in other projects.Use of assigned user > > IDs is a part of the multi layer security strategy employed by OpenShift > to > > reduce risks were an application or the container runtime compromised.* > > > > On the other hand, if containers are running on one or more hosts or k8s > > clusters and they all have the same UID, there is certainly the potential > > for additional harm should a vulnerability exist. If the UID happens to > be > > common (perhaps tomcat, apache, mysql, all run as 1001 in different > > images/containers/versions by design for some), there is more risk > > potential (that's probably a bit of a stretch and hopefully not actually > > happening). > > > > Let me know if you would like to talk. If you'd rather abandon the whole > > notion of support for running as an arbitrary UID, I certainly understand > > and respect that position. I won't be able to use the resulting images > in > > most of my current use cases but I get it and can adjust accordingly as > > needed. > > > > Regards, > > Carl > > > > On Mon, Nov 25, 2019 at 7:20 PM Jenkins, Rodney J (Rod) < > > jenki...@nationwide.com> wrote: > > > > > Carl, > > > > > > I also had issues posting to the group on Friday night/Saturday > morning. > > > > > > I fear that we are talking past one another. I will try to be much > > > clearer in my responses. If we cannot resolve this via email, I am > > willing > > > to host a Skype session to talk through. Anyone on the list would be > > > welcome to join. > > > > > > We agree on the "why" running on anything other than root is a good > idea. > > > I think we are discussing more about the "how to" run on some other ID. > > > What I did not understand is "why" you handle it the way you do. > > > > > > Also, I would like to pre-apologize if I am talking down to you or > > anyone. > > > > > > You say, "We don't know the UID until runtime." I am not sure why you > > > would want to know what that UID is at all or ever. The /etc/passwd > > > convers the username to the UID. The nice thing about Tomcat/TomEE, it > > > runs as the user that calls it. As long as java is available, it will > > > start. > > > > > > You propose that in order to create that specific user and start TomEE > as > > > that user, you do the following: > > > 1) Alter the /etc/passwd file to have group write access > > > 2) Altering catalina.sh to add the user to /etc/passwd > > > 3) Setting the ownership of the /usr/local/tomee to UID:root > > > 4) Setting permissions of all files and directories in /usr/local/tomee > > to > > > g=u > > > 5) "USER" 1001 in the Dockerfile > > > 6) CMD ["catalina.sh", "run"] in the Dockerfile. This line will start > > > TomEE as the UID set in #5 > > > 7) When Catalina.sh is run, it adds the user to the passwd file, then > > > starts TomEE as UID 1001, in your case with the user tomee. > > > > > > I propose the following to create the user and start TomEE > > > 1) useradd in the Dockerfile to create the user tomee in the > /etc/passwd > > > file > > > 2) "USER tomee" in the Dockerfile > > > 3) CMD ["catalina.sh", "run"] in the Dockerfile. This line will start > > > TomEE as the UID set in #2 > > > > > > To be clear, I have no pony in this race other than finding the best > way. > > > If I am wrong, I have learned something valuable! > > > > > > If you would like you can see my Dockerfiles in tomitribe/docker-tomee, > > > grab them and run some tests. Some hosting providers have specific > > > requirements for running as a user other than root. Maybe, that is why > > > Tomcat has decided to sidestep the whole discussion and run as root out > > of > > > the box and let the user sort it out. Maybe, we should do the same. > > While > > > it is a security issue, it becomes a default standard issue to try to > > fix. > > > > > > Have a nice day!! > > > Rod. > > > > > > > > > > > > > > > > > > > > > > > > On 11/25/19, 4:01 PM, "Carl Mosca" <carljmo...@gmail.com> wrote: > > > > > > > > > Hi Rod, > > > > > > I am seeing some of my messages bouncing back - perhaps they are > too > > > long > > > so I apologize if this was already sent: > > > > > > I am not sure if you're asking "why" I think it's a good idea to > run > > > as an > > > arbitrary UID or the "why" behind what's going on with doing so...I > > > try to > > > touch on all of it: > > > > > > We don't know the UID until runtime (but we do know that user will > be > > > in > > > the root group). While I acknowledge that this seems clumsy at > > first, > > > and > > > I am far from a security expert, it does seem more secure to me if > > one > > > cannot predict the runtime UID as Red Hat describes in the OCP > docs. > > > If > > > one is always using the *same known* UID, I think the attack > surface > > > changes a bit. > > > > > > If there is a need or desire in any given container/application to > > make > > > that unknown UID be a particular user I see two options: > > > > > > One, we can change an already existing user which can be > > > messy/hard/impossible depending file/directory ownership needs that > > are > > > required for some applications and order of installation > operations. > > > (When > > > I say impossible I am thinking of a particular situation I bumped > > into > > > which is admittedly a corner case and most likely not applicable > > here.) > > > > > > The second option is just wait to create the user at runtime. > Given > > > the > > > permission changes, we can modify /etc/passwd as described, which > > > results > > > in the creation of the user. > > > > > > In addition, other "chmod g=u" operations are what allows us to > take > > > ownership of other files/directories if/as needed at runtime. > > > > > > There are certainly situations where the username simply does not > > > matter > > > and the arbitrary UID in root group is used then there's no need to > > > add a > > > user. > > > > > > HTH, > > > Carl > > > > > > > > > > > > > -- > > Carl J. Mosca > > > -- Carl J. Mosca