国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Kubernetes Deployment 的安全最佳實踐

oysun / 1417人閱讀

摘要:今天的文章由來自的和撰寫,在不同用戶案例中搜集到的數據基礎上,描述了的安全最佳實踐。在谷歌上,我們的用來部署我們的服務。實施連續安全缺陷掃描容器可能包含過時的已知缺陷的程序包。谷歌云平臺的用戶能夠從自動防火墻規則中受益,避免跨集群交流。

今天的文章由來自 Aqua Security 的 Amir Jerbl 和 Micheal Chemy 撰寫,在不同用戶案例中搜集到的數據基礎上,描述了 Kubernetes Deployment 的安全最佳實踐。

Kubernetes 提供了很多配置來提升應用程序的安全性。但是配置這些需要深入了解 Kubernetes 的初始知識以及一些安全的需求。我們在這里要強調的最佳實踐跟容器的生命周期相匹配:創建,運送以及運行,以及為 Kubernetes 特別定制。在谷歌 GCE 上,我們的用 Kubernetes 來部署我們的 SaaS 服務 。

對于部署安全的 Kubernetes 應用程序,我們推薦以下:

確認鏡像是沒有缺陷

運行沒有缺陷的容器會使你的環境面臨輕易妥協的威脅。很多攻擊都可以簡單地通過確認軟件組件沒有缺陷來減輕。

實施連續安全缺陷掃描
容器可能包含過時的已知缺陷的程序包(CVEs)。而且每天都有缺點被暴露出來,所以這并不是一個“一次性”進程。作為一個連續評估鏡像不間斷的程序,這個程序對于確保所需安全狀態非常重要。

你的環境需要定期申請安全更新
一旦運行中的容器被發現有缺陷,你需要做的就是更新資源鏡像,重新部署容器。嘗試避免直接更新到運行的容器,因為這樣可能會破壞鏡像跟容器之間的關系。有了 Kubernetes 的滾動升級功能,升級容器變得十分容易——這個功能可以通過升級鏡像到最新版本來慢慢更新運行的應用程序。

確保你的環境中只使用授權的鏡像

如果沒有程序來確認只有鏡像依附在組織機構的策略上,那么組織機構就容易受到有缺陷或者是惡意的容器的攻擊。

從未知的資源里下載運行鏡像是十分危險的。這就相當于在生產環境的服務器上運行一個未知軟件提供商的產品一樣。所以,不要那么做。

使用私有庫來存儲規定鏡像——確保你只 push 規定的鏡像到這些庫。這已經把運行的領域縮小了,減少了可進入管道的數量。

創建集成安全評估(比如漏洞掃描)的 CI 管道,使之成為創建進程的一部分。

CI 管道要確保代碼被審查過才能夠用來創建鏡像。鏡像創建好了,就要掃描有沒有安全缺陷,如果沒有的話,那么鏡像就會被 push 到一個私有庫,在這個私有庫,部署到產品就完成了。安全評估要是失敗的話,管道也會相應失敗,這樣就避免了安全質量不好的鏡像被 push 到鏡像倉庫。
在 Kubernetes 中還有很多需要為鏡像授權插件做的工作(期望在 Kubernetes1.4中能夠完成),這就避免了運送未授權的鏡像。

限制直接訪問 Kubernetes 節點

需要限制 SSH 訪問 Kubernetes 節點,減少未授權訪問主機資源的風險。同時要求用戶使用“kubectl exec”,它可以直接訪問容器環境,而不需要訪問主機。

可以使用 Kubernetes 授權插件來遠程控制用戶訪問資源。這也就意味著要為特定的 namespace,容器和操作來定義細粒度訪問控制規則。

在資源間創建管理的邊界

限制用戶權限的范圍能夠控制錯誤或者惡意活動的發生。Kubernetes 的 namespace 允許把創建的資源分割成邏輯的 group。在一個 namespace 中創建的資源在其它的 namespace 中不可見。默認設置下,每個由 Kubernetes 集群用戶創建的資源都運行在一個默認 namespace 中,名為 default。你可以創建額外的 namespace,并在該 namespace 中創建資源,然后使用這些資源。你也可以使用 Kubernetes 授權插件來創建策略,來隔離訪問不同用戶間的 namespace 資源。

比如:以下就是策略允許“alice”從 namespace“fronto”閱讀 pods。

定義資源配額

運行資源未裝訂的容器,你的系統可能面臨陷入 DoS 或者“noisy neighbor”場景的風險。為了避免,或者說是將這些風險最小化,你需要定義資源配額。默認設置下,所有在 Kubernetes 集群中的資源都是用 unbounded 的 CPU 和內存要求/限制來創建的。為了限制 Pod 允許使用的 cpu 和 memory 資源,你可以創建資源配額策略,并把這個策略應用到 Kubernetes 的 namespace 上。

以下是 namespace 資源配額定義的一個例子,它限制 namespace 中 pod 的數量不能超過4個,限制他們的 CPU 請求在1到2個之間,內存請求在1GB 到2GB 之間。

compute-resource.yaml:

分配 resource 配額到 namespace:

實施網絡分割

在同一個 Kubernetes 集群上運行不同的程序會有風險,就是應用程序可能會受到損壞,然后攻擊相鄰的程序。容器只能夠跟確認的容器進行交流,所以網絡分割顯得很重要。

Kubernetes 部署面臨的一個挑戰就是,在 pod,service 和容器間創建分割。這個挑戰的原因就是容器網絡身份(IPs)的動態特性,當然,容器既可以在同一個節點中交流,也可以在不同節點間交流。

谷歌云平臺的用戶能夠從自動防火墻規則中受益,避免跨集群交流。可以使用網絡防火墻或者 SDN 解決方法在內部部署相似的實施。Kubernetes 的 Network SIG(興趣組)在這方面的做了一些工作,很大程度上提升了 pod 之間的交流的策略。新的網絡策略 API 應該在 pods 周圍處理創建防火墻規則,限制容器化的網絡訪問。

以下的例子就是,為“backend”pods 控制網絡的網絡策略,只允許本地網絡訪問“frontend”pods:

為你的 pods 和容器申請安全環境

當設計你的容器和 pods 的時候,需要確認給你的 pods,容器和數據卷配置了SecurityGroup。SecurityGroup 可以在 yaml 文件中定義。它控制分配到 pod/container/volume 的安全參數。一些重要的參數如下圖所示:

下圖是 pod 定義的一個例子:

如果允許有提升權限(--privilege)的容器,你應該考慮使用“DenyEscalatingExec”這個 Admission Controller。這個 Controller 拒絕在 Pod 上運行 exec 和 attach 命令,并且在提升 Pod 的權限時,只允許該 Pod 在宿主機上訪問。包括那些以特權模式運行的 Pod,能夠訪問主機 IPC namespace 的 Pod,以及能夠訪問主機 PID namespace 的 Pod。

日志記錄

Kubernetes 提供基于集群的日志,支持把日志推送到一個中心化的 log hub。創建完集群的時候,使用 Fluentd 代理來收集每個容器的標準輸出,標準錯誤輸出。
當集群創建成功以后,每個容器產生的日志(標準輸出和標準錯誤輸出)就可以被每個節點上的 Fluent Agent 采集,然后推送到 GoogleStackDriver Logging 或者 Elasticsearch,然后用戶可以用 Kibana 來看這些日志。

結論

Kubernetes 提供很多選擇來創建安全部署。但是并不存在一個對策解決所有問題這樣的好事,所以需要對這些選項有一定的熟悉,同樣,也要理解他們是如何提高你的程序的安全性的。
我們推薦實施本文中強調的最佳實踐,并且使用 Kubernetes 中靈活的配置功能將安全加工到連續的整合管道,將整個進程用無縫安全進行自動化。

原文鏈接
轉載請聯系我們 -3-

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/32493.html

相關文章

  • 京東云Kubernetes集群最佳實踐

    摘要:京東云集群最佳實踐容器是的基石,它們之間的關系不言而喻。因此我們今天的文章將會和大家分享關于京東云集群的部分最佳實踐。京東云集群采用管理節點全托管的方式,為用戶提供簡單易用高可靠功能強大的容器管理服務。 京東云Kubernetes集群最佳實踐 容器是Cloud Native的基石,它們之間的關系不言而喻。了解容器對于學習Cloud Native也是十分重要的。近期,京東云Cloud N...

    XGBCCC 評論0 收藏0
  • 京東云Kubernetes集群最佳實踐

    摘要:京東云集群最佳實踐容器是的基石,它們之間的關系不言而喻。因此我們今天的文章將會和大家分享關于京東云集群的部分最佳實踐。京東云集群采用管理節點全托管的方式,為用戶提供簡單易用高可靠功能強大的容器管理服務。 京東云Kubernetes集群最佳實踐 容器是Cloud Native的基石,它們之間的關系不言而喻。了解容器對于學習Cloud Native也是十分重要的。近期,京東云Cloud N...

    劉永祥 評論0 收藏0
  • 【容器云 UK8S】最佳實踐:基于JenkinsCI/CD實踐

    摘要:擴展性好當集群的資源嚴重不足而導致排隊等待時,可以很容易的添加一個到集群中,從而實現擴展。用法,選擇盡可能使用這個節點鏡像,填寫,這個容器鏡像是我們的運行環境。更新文件,這里我們只是將中的鏡像更換成最新構建出的鏡像。基于Jenkins的CI/CD實踐[TOC]一、概要提到K8S環境下的CI/CD,可以使用的工具有很多,比如Jenkins、Gitlab CI、新興的drone等,考慮到大多公司...

    Tecode 評論0 收藏0
  • Kubernetes Ingress 高可靠部署最佳實踐

    摘要:我們通過阿里云容器服務控制臺創建一個集群,這里以創建臺節點集群為例。全方位監控集群接入層的監控是必不可少的,您可以通過阿里云容器服務監控以及阿里云云監控對和進行全方位監控。 摘要: 在Kubernetes集群中,Ingress作為集群流量接入層,Ingress的高可靠性顯得尤為重要,今天我們主要探討如何部署一套高性能高可靠的Ingress接入層。 簡介 在Kubernetes集群中,I...

    Dionysus_go 評論0 收藏0
  • 容器環境下持續集成最佳實踐:構建基于 Drone + GitFlow + K8s 云原生語義化

    摘要:集成測試完成后,由運維同學從發起一個到分支,此時會會運行單元測試,構建鏡像,并發布到預發布環境測試人員在預發布環境下再次驗證功能,團隊做上線前的其他準備工作運維同學合并,將為本次發布的代碼及鏡像自動打上版本號并書寫,同時發布到生產環境。 云原生 (Cloud Native) 是伴隨的容器技術發展出現的的一個詞,最早出自 Pivotal 公司(即開發了 Spring 的公司)的一本技術小...

    asoren 評論0 收藏0

發表評論

0條評論

oysun

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<