如何在Fedora中結(jié)合權(quán)能使用Podman

小編給大家分享一下如何在Fedora中結(jié)合權(quán)能使用Podman,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)劍河免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

容器化是一項(xiàng)蓬勃發(fā)展的技術(shù)。在不久的將來,多達(dá)百分之七十五的全球組織可能會(huì)運(yùn)行某種類型的容器化技術(shù)。由于廣泛使用的技術(shù)更容易成為黑客攻擊的目標(biāo),因此保護(hù)容器的安全就顯得尤為重要。本文將演示如何使用 POSIX 權(quán)能Capability 來保護(hù) Podman 容器的安全。Podman 是 RHEL8 中默認(rèn)的容器管理工具。

確定 Podman 容器的權(quán)限模式

容器以特權(quán)模式或無特權(quán)模式運(yùn)行。在特權(quán)模式下,容器的 uid 0 被映射到宿主機(jī)的 uid 0。對(duì)于某些情況,無特權(quán)的容器缺乏對(duì)宿主機(jī)資源的充分訪問能力。但不管其操作模式如何,包括強(qiáng)制訪問控制Mandatory Access Control(MAC:如 apparmor、SELinux 等)、seccomp 過濾器、刪除權(quán)能Capability、命名空間等在內(nèi)的技術(shù)有助于確保容器的安全。

要從容器外部確定特權(quán)模式:

$ podman inspect --format="{{.HostConfig.Privileged}}" <container id>

如果上面的命令返回 true,那么容器在特權(quán)模式下運(yùn)行。如果返回 false,那么容器在非特權(quán)模式下運(yùn)行。

要從容器內(nèi)部確定特權(quán)模式:

$ ip link add dummy0 type dummy

如果該命令允許你創(chuàng)建一個(gè)接口,那么你運(yùn)行的是一個(gè)特權(quán)容器,否則你運(yùn)行的是一個(gè)非特權(quán)容器。

權(quán)能

命名空間隔離了容器的進(jìn)程,使其無法任意訪問宿主機(jī)的資源,也無法訪問在同一宿主機(jī)上運(yùn)行的其他容器的資源。然而,在特權(quán)容器內(nèi)的進(jìn)程仍然可以做一些事情,如改變 IP 路由表、跟蹤任意進(jìn)程和加載內(nèi)核模塊。權(quán)能Capability允許人們對(duì)容器內(nèi)的進(jìn)程可以訪問或更改的資源施加更細(xì)微的限制,即使容器在特權(quán)模式下運(yùn)行也一樣。權(quán)能還允許人們?yōu)闊o特權(quán)的容器分配它本來不會(huì)擁有的特權(quán)。

例如,如果要將 NET_ADMIN 功能添加到一個(gè)無特權(quán)的容器中,以便在容器內(nèi)部創(chuàng)建一個(gè)網(wǎng)絡(luò)接口,你可以用下面的參數(shù)運(yùn)行 podman

[root@vm1 ~]# podman run -it --cap-add=NET_ADMIN centos[root@b27fea33ccf1 /]# ip link add dummy0 type dummy[root@b27fea33ccf1 /]# ip link

上面的命令演示了在一個(gè)無特權(quán)的容器中創(chuàng)建一個(gè) dummy0 接口。如果沒有 NET_ADMIN 權(quán)能,非特權(quán)容器將無法創(chuàng)建接口。上面的命令演示了如何將一個(gè)權(quán)能授予一個(gè)無特權(quán)的容器。

目前,大約有 39 種權(quán)能可以被授予或拒絕。特權(quán)容器默認(rèn)會(huì)被授予許多權(quán)能。建議從特權(quán)容器中刪除不需要的權(quán)能,以使其更加安全。

要從容器中刪除所有權(quán)能:

$ podman run -it -d --name mycontainer --cap-drop=all centos

列出一個(gè)容器的權(quán)能:

$ podman exec -it 48f11d9fa512 capsh --print

上述命令顯示沒有向容器授予任何權(quán)能。

請(qǐng)參考 capabilities 手冊(cè)頁以獲取完整的權(quán)能列表:

$ man capabilities

可以使用 capsh 命令來列出目前擁有的權(quán)能:

$ capsh --print

作為另一個(gè)例子,下面的命令演示了如何從容器中刪除 NET_RAW 權(quán)能。如果沒有 NET_RAW 權(quán)能,就不能從容器中 ping 互聯(lián)網(wǎng)上的服務(wù)器。

$ podman run -it --name mycontainer1 --cap-drop=net_raw centos>>> ping google.com (will output error, operation not permitted)

最后一個(gè)例子,如果你的容器只需要 SETUID 和 SETGID 權(quán)能,你可以刪除所有權(quán)能,然后只重新添加這兩個(gè)權(quán)能來實(shí)現(xiàn)這樣的權(quán)限設(shè)置。

$ podman run -d --cap-drop=all --cap-add=setuid --cap-add=setgid fedora sleep 5 > /dev/null; pscap | grep sleep

上面的 pscap 命令會(huì)顯示容器被授予的權(quán)能。

以上是“如何在Fedora中結(jié)合權(quán)能使用Podman”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章標(biāo)題:如何在Fedora中結(jié)合權(quán)能使用Podman
標(biāo)題URL:http://bm7419.com/article6/gejdig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站營銷、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司電子商務(wù)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作