簡體   English   中英

在K8S上安全運行Apache容器

[英]Securely running an apache container on k8s

我已經基於httpd:2.4構建了一個docker鏡像。 在我的k8s部署中,我定義了以下securityContext

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

當我在沒有該securityContext情況下應用部署時,一切正常,服務器正常啟動, CrashLoopBackOff 。但是,當我在上述securityContext添加時,我的pod的狀態為CrashLoopBackOff ,我從$ kubectl logs...獲取了以下信息$ 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

通過在線搜索,我發現這是因為apache必須是root才能運行,因此以非root身份運行將失敗。

我還發現httpd.conf具有以下內容

#
# 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

這似乎表明,如果我不使用runAsNonRootrunAsUsersecurityContext應該自動切換到任何一個用戶我指定httpd.conf 就我而言,我創建了一個用戶/組swuser並相應地編輯了httpd.conf 但是,當我使用docker run -p 5000:80 my-registry/my-image:1.0.12-alpha本地運行映像時,請docker run -p 5000:80 my-registry/my-image:1.0.12-alpha ,然后運行docker exec -it my-container whoami它會打印root

所以我的問題是,我該怎么做才能在k8s中以非根用戶身份安全運行我的容器(並確保它是非根用戶)

在大於1024的端口上運行apache。

低於1024的端口是特權端口,僅對root用戶可用。

因為在此之前您將擁有一些入口負載均衡器,所以沒關系:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM