自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

四大能力三項原則,為K8s集群的安全性開個好頭

云計算
作為云時代一種重要“基礎(chǔ)設(shè)施”,Kubernetes本身的安全性開始引起了越來越多用戶關(guān)注。本文,我們將圍繞安全性,介紹可以增強(qiáng)Kubernetes集群安全性的四大必備能力和三個基本原則。?

KubernetesK8s)已成為云計算領(lǐng)域高頻應(yīng)用的搶手工具。作為一種開源的容器編排系統(tǒng),Kubernetes可用于在云中擴(kuò)展容器化應(yīng)用程序。它可以管理容器生命周期,根據(jù)應(yīng)用程序需求創(chuàng)建和銷毀容器,并提供了許多其他功能。Kubernetes的興起標(biāo)志著應(yīng)用程序開發(fā)和部署方式的轉(zhuǎn)變。

延伸閱讀,點擊鏈接了解 Akamai cloud-computing

廣為應(yīng)用的Kubernetes集群為業(yè)務(wù)帶來了前所未有的速度和靈活性,但大規(guī)模Kubernetes集群也成為了勒索軟件、加密挖礦和僵尸網(wǎng)絡(luò)等威脅的主要攻擊目標(biāo)。作為云時代一種重要基礎(chǔ)設(shè)施Kubernetes本身的安全性開始引起了越來越多用戶關(guān)注。本文,我們將圍繞安全性,介紹可以增強(qiáng)Kubernetes集群安全性的四大必備能力和三個基本原則。

四大關(guān)鍵能力,深度保護(hù)Kubernetes

有調(diào)查發(fā)現(xiàn),過去一年中,93%受訪者(包括300余名DevOps、工程設(shè)計和安全專業(yè)人員)的Kubernetes環(huán)境中至少出現(xiàn)過一次安全事件,攻擊者很有可能會利用此類事件安裝勒索軟件和其他惡意軟件

因此,我們有必要強(qiáng)調(diào)對Kubernetes集群進(jìn)行分段的必要性,在于大量針對Kubernetes集群的攻擊開始采用規(guī)避和混淆技術(shù)以逃避檢測,包括打包攻擊載荷、使用Rootkit等方式運行惡意軟件。若想有效監(jiān)測、阻截勒索軟件攻擊中的橫向移動,就需要在保障業(yè)務(wù)連續(xù)性的情況下,以微分段策略限制威脅的擴(kuò)散與流動。

四重能力覆蓋全

保障Kubernetes環(huán)境的安全性,創(chuàng)建體系化、精細(xì)化的安全策略,才能全面深度地洞見威脅、及時阻截。Akamai Guardicore Segmentation基于軟件的微分段解決方案,有助于企業(yè)準(zhǔn)確監(jiān)測Kubernetes集群,深入了解基礎(chǔ)架構(gòu)所有層的實時狀況,確認(rèn)流量的預(yù)期路徑。

用于Kubernetes集群分段的關(guān)鍵能

  • 映射監(jiān)測Akamai Guardicore Segmentation配置有映射、多層標(biāo)簽功能。依賴項關(guān)系的映射圖譜,可用于監(jiān)測數(shù)據(jù)中心內(nèi)部和多個數(shù)據(jù)中心之間的通信狀況;通過使用多層標(biāo)簽,映射更得以準(zhǔn)確地反映應(yīng)用程序在集群中的部署方式,全方位提升客戶對Kubernetes層次結(jié)構(gòu)的可見性
  • 強(qiáng)制實施Akamai Guardicore Segmentation具有非侵入性與靈活性,可使用原生Kubernetes CNIContainer Network Interface, 容器網(wǎng)絡(luò)接口)強(qiáng)制實施網(wǎng)絡(luò)分段;同時配置保護(hù)Kubernetes業(yè)務(wù)關(guān)鍵型應(yīng)用程序而設(shè)計的專用模板,幫助用戶輕松選擇域名空間、應(yīng)用程序等準(zhǔn)備隔離的對象。
  • 高級監(jiān)控:利用高級日志記錄和監(jiān)控系統(tǒng),可針對Kubernetes網(wǎng)絡(luò)調(diào)整專用網(wǎng)絡(luò)日志,顯示每個事件的目標(biāo)服務(wù)、節(jié)點IP、源端口和目標(biāo)端口以及進(jìn)程,有利于用戶更便捷地調(diào)查網(wǎng)絡(luò)中的異?;顒硬?shù)據(jù)導(dǎo)出到第三方應(yīng)用程序。
  • 集群操作:在具體的運營活動中,及時進(jìn)行集群操作,也是踐行微分段策略的關(guān)鍵能力。專用集群操作屏幕提供了有關(guān)已部署集群的所有必要數(shù)據(jù),包括監(jiān)控集群的代理數(shù)、標(biāo)記代理功能的警告和告警,以及Kubernetes編排的狀態(tài)等

當(dāng)下,雖然零信任安全理念已經(jīng)深入人心,但真正實踐、落地假設(shè)入侵的工具還屈指可數(shù)。Akamai Guardicore Segmentation則正是填補(bǔ)這一技術(shù)空白的微分段解決方案,以高度適應(yīng)Kubernetes集群的拓展能力、非侵入性特點,精細(xì)化監(jiān)測Kubernetes集群等基礎(chǔ)架構(gòu)的安全狀況,并及時將攻擊行為扼殺于風(fēng)險擴(kuò)散早期。

三項原則構(gòu)筑穩(wěn)妥防

Kubernetes通過以集成方式管理眾多容器的能力,在部署、運行和管理容器服務(wù)方面提供了許多優(yōu)勢,已經(jīng)成為很多云平臺不可或缺的重要組件和關(guān)鍵服務(wù)。然而這一特性也可能使應(yīng)用程序面臨安全漏洞。事實上,針對容器的安全攻擊呈上升趨勢,而且影響越來越嚴(yán)重。因此Kubernetes環(huán)境的安全性與任何其他開發(fā)或生產(chǎn)環(huán)境中的安全性一樣重要。

Kubernetes環(huán)境中的安全性意味著要維護(hù)Kubernetes集群的穩(wěn)定性和安全性。Kubernetes提供了基礎(chǔ)安全功能,以確保集群的安全。這種與安全相關(guān)的功能有很多,例如網(wǎng)絡(luò)安全、節(jié)點安全、身份驗證、授權(quán)、安全鏡像管理、機(jī)密管理、日志和監(jiān)控、災(zāi)難恢復(fù)……

本文將介紹其中最具代表性的三項:控制Kubernetes集群訪問的網(wǎng)絡(luò)策略、基于角色的訪問控制(RBAC)和安全存儲敏感信息的機(jī)密信息

1.借助網(wǎng)絡(luò)策略控制Pod的通

Kubernetes的通信策略默認(rèn)允許所有Pod相互通信。雖然這種策略對通信很有用,但也有可能使Pod暴露于不必要的連接中。因此如果想防止未經(jīng)授權(quán)的訪問并保護(hù)Pod,就該使用網(wǎng)絡(luò)策略。

網(wǎng)絡(luò)策略是一種控制Pod間或Pod與其他網(wǎng)絡(luò)端點間通信的功能。通過網(wǎng)絡(luò)策略,我們可以根據(jù)IP地址、端口、協(xié)議和標(biāo)簽等各種條件定義允許或拒絕流量的規(guī)則。此外,還可通過網(wǎng)絡(luò)策略設(shè)置只允許來自某些命名空間的流量

網(wǎng)絡(luò)策略是使用Kubernetes網(wǎng)絡(luò)插件架構(gòu)實現(xiàn)的。因此,不同網(wǎng)絡(luò)插件對網(wǎng)絡(luò)策略的支持程度可能各異。

Kubernetes網(wǎng)絡(luò)策

一些流行的網(wǎng)絡(luò)插件(如Calico、CiliumWeave Net)原生支持網(wǎng)絡(luò)策略,而其他插件可能需要額外配置或定制開發(fā)。

設(shè)置網(wǎng)絡(luò)策略時,有三個元素非常重要

  • podSelector:指定策略適用的Pod
  • policyTypes:指定將應(yīng)用策略的流量,分為入口流量和出口流量。
  • ingress/egress:指定入口/出口流量的詳細(xì)信息。

舉個例子。下面的示例是一個設(shè)置網(wǎng)絡(luò)策略的YAML文件。查看示例中的podSelector,可以看到“database”被指定為應(yīng)用策略的Pod。通過policyTypes設(shè)置,網(wǎng)絡(luò)策略將同時應(yīng)用于傳入和傳出的流量。

最后,定義入口和出口流量的詳細(xì)策略,定義允許流量的命名空間、Pod、協(xié)議和端口號以及IP

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
 name: my-nwpolicy
 namespace: default
spec:
 podSelector: 
 matchLabels:
 role: database
 policyTypes: 
 - Ingress
 - Egress
 ingress: 
 - from:
 - ipBlock: 
 cidr: 10.17.0.0/16
 - namespaceSelector: 
 matchLabels:
 name: my-ns
 - podSelector: 
 matchLabels:
 app: my-pod
 ports: 
 - protocol: TCP
 port: 6379
 egress: 
 - to:
 - ipBlock:
 cidr: 10.0.0.0/24
 ports:
 - protocol: TCP
 port: 5978

通過上述示例可以看出,它對入站和出站流量的控制就像網(wǎng)絡(luò)服務(wù)器上的防火墻或云實例上的安全組一樣。這樣,通過網(wǎng)絡(luò)策略,Kubernetes可以確定并控制安裝在Pod中的應(yīng)用程序可以接收哪些網(wǎng)絡(luò)請求,以及這些請求來自哪里。通過限制集群中Pod的網(wǎng)絡(luò)流量,即可保護(hù)集群免受各種安全攻擊。

2. 基于角色的訪問控制(RBAC)權(quán)

Kubernetes由許多資源組成,包括服務(wù)、網(wǎng)絡(luò)、命名空間、Pod、節(jié)點和容器。限制哪些用戶和服務(wù)可以訪問每種資源對保證集群安全至關(guān)重要

Kubernetes中基于角色的訪問控制(RBAC)通過為用戶和服務(wù)賬戶定義角色,并根據(jù)角色授予權(quán)限來控制對集群資源的訪問。我們可以使用Roles(為用戶或服務(wù)賬戶設(shè)置角色)和ClusterRole(在集群級別設(shè)置角色)定義安全規(guī)則,并將這些規(guī)則添加到組(用戶集合)中。

基于角色的訪問控制包括三個主要概念

  • Role:是一組授予集群資源訪問權(quán)限的特權(quán)。例如,可以定義一個名為“pod-reader”的角色,并授予同一命名空間內(nèi)所有Pod的讀取權(quán)限
  • RoleBinding:將角色分配給特定用戶或服務(wù)賬戶。換句話說,是一個將角色和賬戶進(jìn)行綁定的函數(shù)。例如,將“pod-reader”角色附加給用戶“user-1”,這樣用戶“user-1”就可以讀取同一命名空間中的所有Pod。
  • ClusterRole:與Role類似,但權(quán)限范圍不同。Role分配的權(quán)限僅在特定命名空間內(nèi)有效,而ClusterRole分配的權(quán)限在整個集群范圍內(nèi)有效。需要通過ClusterRoleBinding來定義ClusterRole與用戶或服務(wù)賬戶之間的關(guān)聯(lián)。

下圖展示了基于角色的訪問控制的實現(xiàn)機(jī)制。

命名空間中的角色和K8s集群中的ClusterRole

我們還可以通過一個例子來了解基于角色的訪問控制。下面的示例是一個YAML文件,其中定義了一個名為dev-team的角色。

<role.yaml>
apiVersion: rbac.authorization.k8s.io/v1 
kind: Role
metadata:
 namespace: development 
 name: dev-team 
rules: 
- apiGroups: ["core", "extensions", "apps"] 
 resources: ["deployments", "replicasets", "pods"] 
 verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

該角色指定了特定用戶或服務(wù)賬戶可以在開發(fā)命名空間內(nèi)執(zhí)行的任務(wù)和目標(biāo)。仔細(xì)觀察會發(fā)現(xiàn),它將可訪問的API組定義為Core、ExtensionsApps,它還提供了對Deployments、ReplicaSetsPods資源的訪問權(quán)限。最后,它為資源授予了權(quán)限,如get、listwatch。通過這些設(shè)置,名為dev-team的角色就可以訪問屬于apps API組的部署資源,并執(zhí)行get操作來檢查資源的信息和狀態(tài)。

接下來需要用一個RoleBinding將創(chuàng)建的角色分配給特定用戶。下面的示例聲明了一個名稱為dev-team-bindingRoleBinding,并設(shè)置用戶來分配特定角色。該示例為名為dev1的用戶分配了一個角色。最后,我們賦予dev1用戶dev-team角色。這將允許dev1用戶承擔(dān)上述role.yaml示例文件中定義的角色。

<user-role.yaml>
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
 namespace: development
 name: dev-team-binding 
subjects:
- kind: User 
 name: dev1
 apiGroup: ""
roleRef:
 kind: Role 
 name: dev-team
 apiGroup: ""

此外,我們還將舉例說明如何使用YAML文件創(chuàng)建RoleRoleBinding。下面的示例代碼是kubectl命令的運行結(jié)果,該命令創(chuàng)建了“development”命名空間,并在該命名空間內(nèi)創(chuàng)建了RoleRoleBinding

$kubectl create namespace development
namespace/development created
$kubectl create -f role.yaml 
role.rbac.authorization.k8s.io/dev-team created
$kubectl create -f user-role.yaml 
rolebinding.rbac.authorization.k8s.io/dev-team-binding created

Kubernetes基于角色的訪問控制允許集群管理員管理資源的訪問。這可以增強(qiáng)安全性,防止濫用造成的風(fēng)險。我們還可以隔離不同用戶和服務(wù)賬戶之間的訪問權(quán)限,以保護(hù)敏感數(shù)據(jù)不被未經(jīng)授權(quán)的用戶查看。

3. 安全地存儲敏感數(shù)據(jù)

Kubernetes Secret是一種用于安全存儲敏感數(shù)據(jù)(如加密信息、令牌和密碼)的資源。在Kubernetes中,機(jī)密通常用于管理API密鑰、數(shù)據(jù)庫密碼、OAuth標(biāo)記等身份驗證信息。如果這些敏感信息以純文本形式包含在Pod的規(guī)范文件或容器鏡像中,可能會對安全造成威脅。因此,機(jī)密信息不會包含在容器鏡像中,而是在運行應(yīng)用程序時通過環(huán)境變量或卷掛載傳遞給容器。

機(jī)密存儲在ETCD中,通過卷和變量的方式使

機(jī)密通常定義為base64編碼的鍵值對。機(jī)密會在容器運行時解密和使用,因此無需在使用機(jī)密的應(yīng)用程序中實施單獨的解密邏輯。機(jī)密的創(chuàng)建與使用敏感信息的Pod無關(guān),相反,我們需要將敏感信息安全地存儲在單獨的etcd存儲庫中,并在Pod需要時將其提供給容器。

讓我們創(chuàng)建一個簡單的機(jī)密示例。創(chuàng)建并保存特定用戶的ID和密碼作為機(jī)密。假設(shè)有用戶數(shù)據(jù)"USER_NAME=admin"、"PASSWORD=1f2d1e2e67df"。首先,對信息進(jìn)行base64編碼,如下所示

$echo -n "admin" | base64
YWRtaW4=
$echo -n "1f2d1e2e67df" | base64
MWYyZDFlMmU2N2Rm

然后創(chuàng)建一個YAML文件,用編碼后的數(shù)據(jù)創(chuàng)建一個機(jī)密。USER_NAMEPASSWORD的值是base64編碼值,但當(dāng)Pod使用它們時,工作節(jié)點上的kubelet會對它們進(jìn)行解碼,并提供給Pod和容器

apiVersion: v1
kind: Secret
metadata:
 name: my-secret
type: Opaque
data: 
 USER_NAME: YWRtaW4=
 PASSWORD: MWYyZDFlMmU2N2Rm

以這種方式創(chuàng)建的機(jī)密信息存儲在Kubernetes集群控制平面的etcd數(shù)據(jù)庫中。etcdKubernetes集群的中央數(shù)據(jù)存儲庫,其中存儲了多種數(shù)據(jù),包括所有Kubernetes資源信息、配置信息和運行時信息。機(jī)密也以base64編碼方式存儲在ETCD

請注意,Secret使用的是編碼和解碼技術(shù),而不是加密技術(shù)。因此這并不是一種完美的數(shù)據(jù)保護(hù)方法。一些情況下可能還需要額外的安全措施。例如可以使用RBAC來限制僅授權(quán)用戶才能訪問和使用機(jī)密。還可以使用單獨的加密插件對機(jī)密數(shù)據(jù)進(jìn)行完全加密。但這需要外部服務(wù),如密鑰管理服務(wù)(KMS。

總之,Kubernetes Secret是保護(hù)和管理應(yīng)用程序使用的敏感信息的重要工具,我們可以借此保護(hù)Kubernetes集群中的敏感信息,從而規(guī)避很多安全隱患。

至此,我們已經(jīng)介紹了確保Kubernetes安全的四個必備能力和三大原則。事實上,Kubernetes的安全性是一個龐大的話題,限于篇幅,本文只是簡單接受了一些淺顯的內(nèi)容。但充分利用這些內(nèi)容,也能確保Kubernetes的基本安全。

如您所在的企業(yè)也在考慮采購云服務(wù)或進(jìn)行云遷移,

點擊鏈接了解Akamai Linode的解決方案


責(zé)任編輯:張燕妮
相關(guān)推薦

2021-03-08 16:12:35

AIOpsIT人工智能

2024-06-26 14:00:00

集群管理工具

2013-04-19 09:24:53

2010-04-30 15:01:40

2019-06-05 13:00:36

2020-06-12 11:24:08

安卓手機(jī)解鎖安全

2024-10-06 12:40:26

2012-02-01 13:24:37

2018-10-12 08:00:00

2023-02-24 11:42:35

2012-06-25 11:35:42

2023-12-13 15:31:14

2024-11-27 12:24:19

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2013-01-29 10:20:06

MapReduceHadoop架構(gòu)

2022-04-29 10:40:38

技術(shù)服務(wù)端K8s

2021-04-12 20:42:50

K8S端口內(nèi)存

2021-04-22 09:46:35

K8SCluster Aut集群

2021-11-04 07:49:58

K8SStatefulSetMySQL
點贊
收藏

51CTO技術(shù)棧公眾號