简体   繁体   中英

Securely running an apache container on k8s

I've built a docker image based on httpd:2.4 . In my k8s deployment I've defined the following securityContext :

securityContext:
  privileged: false
  runAsNonRoot: true
  runAsUser: 431
  allowPrivilegeEscalation: false

When I apply the deployment without this securityContext everything works fine, the server starts up correctly, etc. However when I add in the above securityContext my pod has the status CrashLoopBackOff and I get the following from $ kubectl logs...

(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

From searching around online I've found that this is because apache needs to be root in order to run, so running as non-root will fail.

I've also found that httpd.conf has the following

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

Which seems to suggest that if I don't use runAsNonRoot or runAsUser in securityContext it should automatically switch to whichever user I specify in httpd.conf . In my case I created a user/group swuser and edited httpd.conf accordingly. However when I run the image locally with docker run -p 5000:80 my-registry/my-image:1.0.12-alpha and then run docker exec -it my-container whoami it prints root .

So my question is, what can I do to run my container safely as non-root in k8s (and be sure it is non-root)

Run the apache on a port greater than 1024.

Ports below 1024 are privileged ports only available to the root user.

As you will have some ingress load balancer before that, it shouldn't matter :-)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM