中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為何使用OPA安全策略

發布時間:2022-01-06 09:23:49 來源:億速云 閱讀:150 作者:柒染 欄目:云計算

為何使用OPA安全策略,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

我們將演示如何使用OPA執行最細粒度的安全策略。請注意,本文是一個系列的一部分,我們將基于“OPA作為代碼介紹”和“集成OPA到Kubernetes”中獲得的知識進行。

你可能已經熟悉Pod安全策略,可以在其中對Pod應用非常特定的安全控制。例如,使用Linux內核功能,使用主機命名空間、網絡、端口或文件系統,以及其他許多功能。使用OPA,你還可以對pods施加類似的控制,在本實驗室中,我們將創建一個OPA策略,不允許在pods中創建有特權的容器。特權容器對主機的訪問級別比非特權容器高。

為何使用OPA安全策略

為什么使用OPA而不是原生的Pod安全策略?

使用Pod安全策略來執行我們的安全策略并沒有什么問題。然而,根據定義,PSP只能應用于pods。它們不能處理其他Kubernetes資源,如Ingresses、Deployments、Services等。OPA的強大之處在于它可以應用于任何Kubernetes資源。OPA作為一個許可控制器部署到Kubernetes,它攔截發送到API服務器的API調用,并驗證和/或修改它們。相應地,你可以有一個統一的OPA策略,適用于系統的不同組件,而不僅僅是pods。例如,有一種策略,強制用戶在其服務中使用公司的域,并確保用戶只從公司的鏡像存儲庫中提取鏡像。請注意,我們使用的OPA是使用kube-mgmt部署的,而不是OPA Gatekeeper。

Rego的策略代碼

在本文中,我們假設你已經熟悉了OPA和Rego語言。我們還假設你有一個正在運行的Kubernetes集群,該集群部署了OPA和kube-mgmt容器。有關安裝說明,請參閱我們的前一篇文章。我們的no-priv-pod.rego文件如下所示:

package kubernetes.admissiondeny[msg] {  c := input_containers[_]  c.securityContext.privileged  msg := sprintf("Privileged container is not allowed: %v, securityContext: %v", [c.name, c.securityContext])}input_containers[c] {  c := input.request.object.spec.containers[_]}input_containers[c] {  c := input.request.object.spec.initContainers[_]}

讓我們簡要地瀏覽一下這個文件:

  • 第1行:包含package。注意,你必須使用kubernetes.admission讓政策工作。

  • 第2行:Deny是默認對象,它將包含我們需要執行的策略。如果所包含的代碼計算結果為true,則將違反策略。

  • 第3行:我們定義了一個變量,它將容納pod中的所有容器,并從稍后定義的input_containers[c]接收值。

  • 第4行:如果pod包含“privileged”屬性,則該語句為true。

  • 第5行:當用戶嘗試運行特權容器時顯示給他們的消息。它包括容器名稱和違規的安全上下文。

  • 第7-9行:input_containers[c]函數從請求對象中提取容器。注意,使用了_字符來遍歷數組中的所有容器。在Rego中,你不需要定義循環—下劃線字符將自動為你完成此操作。

  • 第10-12行:我們再次為init容器定義函數。請注意,在Rego中,可以多次定義同一個函數。這樣做是為了克服Rego函數中不能返回多個輸出的限制。當調用函數名時,將執行兩個函數,并使用AND操作符組合輸出。因此,在我們的例子中,在一個或多個位置中存在一個有特權的容器將違反策略。

部署策略

OPA會在opa命名空間的ConfigMaps中找到它的策略。要將我們的代碼應用到ConfigMap中,我們運行以下命令:

kubectl create configmap no-priv-pods --from-file=no-priv-pod.rego

kube-mgmt邊車(sidecar)容器在opa命名空間中持續監視API服務器,以便你只需創建ConfigMap就可以部署策略。

運行策略

讓我們通過嘗試部署一個特權容器來確保我們的策略是有效的:

kubectl -n default apply -f - <<EOTapiVersion: v1kind: Podmetadata: name: nginx-privileged labels:  app: nginx-privilegedspec: containers: - name: nginx  image: nginx  securityContext:   privileged: true #falseEOTError from server (Privileged container is not allowed: nginx, securityContext: {"privileged": true}): error when creating "STDIN": admission webhook "validating-webhook.openpolicyagent.org" denied the request: Privileged container is not allowed: nginx, securityContext: {"privileged": true}

請注意,我們有意將pod部署到默認命名空間,因為我們的admission webhook將忽略在opa命名空間或kube-system中創建的任何資源。

  • OPA是一種通用的、平臺無感的策略實施工具,可以通過多種方式與Kubernetes集成。

  • 你可以使用OPA策略來模擬Pod安全策略,以防止在集群上調度特權容器。

  • 因為OPA可以與其他Kubernetes資源一起工作,而不僅僅是Pods,所以建議使用它來創建跨越所有相關資源的集群級策略文檔。

看完上述內容,你們掌握為何使用OPA安全策略的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

班戈县| 博罗县| 伊春市| 安顺市| 房山区| 深州市| 雷山县| 崇左市| 左权县| 普定县| 高密市| 化州市| 朝阳县| 江津市| 图木舒克市| 青神县| 太白县| 怀远县| 灵山县| 灵台县| 灵武市| 彩票| 文化| 都昌县| 龙南县| 临沭县| 集贤县| 太原市| 哈密市| 信阳市| 海丰县| 泰宁县| 满洲里市| 阿荣旗| 灵武市| 萨嘎县| 通山县| 东丰县| 墨脱县| 嘉定区| 平昌县|