注冊集群能夠提供更多符合K8s應用場景的策略規則,在規則配置上也更加靈活簡單,幫助企業安全運維管理人員更好地使用策略治理相關能力。本文介紹如何在注冊集群中安裝策略治理組件及如何管理策略實例。
索引
背景信息
注冊集群的容器安全策略相較于原PSP(PodSecurityPolicy)策略能夠提供符合更多K8s應用場景的策略規則,在規則配置上也更加靈活簡單,幫助企業安全運維管理人員更好地使用策略治理相關能力。
前提條件
已創建注冊集群,且集群版本至少為1.16.9-aliyun.1,并將自建Kubernetes集群接入注冊集群。具體操作,請參見創建注冊集群并接入本地數據中心集群。
已在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
如果您使用RAM賬號進行策略管理,RAM賬號需要擁有以下RAM授權條件。關于如何自定義RAM授權策略,請參見自定義RAM授權策略。
參數
說明
cs:DescribePolicies
列舉策略治理規則庫列表。
cs:DescribePoliceDetails
獲取策略規則模板詳情。
cs:DescribePolicyGovernanceInCluster
獲取集群策略治理詳情。
cs:DescribePolicyInstances
獲取集群中當前部署的策略實例列表。
cs:DescribePolicyInstancesStatus
獲取集群當前不同策略類型對應的實例部署狀態。
cs:DeployPolicyInstance
在指定集群中部署策略規則實例。
cs:DeletePolicyInstance
在指定集群中刪除策略規則實例。
cs:ModifyPolicyInstance
在指定集群中修改策略規則實例。
注意事項
僅支持1.16.9-aliyun.1及以上版本的注冊集群。
當前僅適用于Linux節點。
當前不支持自定義策略規則,所有規則均來自于阿里云容器服務內置的規則庫。
僅支持通過容器服務管理控制臺的組件管理頁面以及onectl方式安裝gatekeeper組件。
如果集群中已通過其他途徑安裝gatekeeper組件,請您卸載后再通過組件管理安裝gatekeeper組件。關于gatekeeper組件的版本發布信息,請參見gatekeeper。
安裝策略治理組件
policy-template-controller組件為基于阿里云策略模板開發的K8s控制器,幫助您更好地管理基于不同策略模板部署的策略實例和集群整體的治理狀態。
在安裝策略治理組件policy-template-controller前,您需要安裝以下組件。
gatekeeper組件:基于OPA策略引擎的K8s策略準入控制器,幫助您方便地管理和應用集群內的OPA策略,實現命名空間標簽管理等功能。
logtail-ds日志組件:用于對不符合策略約束的攔截或告警事件進行收集和檢索。
您可以使用以下兩種方式安裝gatekeeper、logtail-ds和策略治理組件。
通過onectl安裝
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執行以下命令,安裝所需組件。
onectl ram-user grant --addon logtail-ds onectl addon install gatekeeper onectl addon install logtail-ds onectl addon install policy-template-controller
預期輸出:
Ram policy ack-one-registered-cluster-policy-logtail-ds granted to ram user ack-one-user-ce313528c3 successfully. Addon gatekeeper, version **** installed. Addon logtail-ds, version **** installed. Addon policy-template-controller, version **** installed.
通過控制臺安裝
您可以通過組件管理頁面安裝gatekeeper、logtail-ds組件。具體操作,請參見管理組件。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在策略管理頁面,單擊開始安裝,根據頁面提示,依次完成策略治理組件的安裝。
策略規則庫說明
當前阿里云容器服務ACK內置如下類型的策略規則庫,策略分類和簡要說明如下。關于策略規則庫具體的參數配置和模板使用說明,請參見容器安全策略規則庫說明。
Category | Policy | Description | Severity |
Compliance |
| 限制Secret以secretKeyRef的形式掛載到應用Pod環境變量中。 | medium |
| 限制Pod中所有容器必須配置 | low | |
| 限制資源部署在集群指定的命名空間中。 | low | |
| 限制指定命名空間下的rolebinding使用指定范圍內的Role或Clusterrole。 | high | |
| 限制指定的Namespace被誤刪除。 | medium | |
Infra |
| 限制在集群指定范圍部署的應用中使用shareProcessNamespace。 | high |
| 要求emptyDir類型的Volume必須指定 | low | |
| 限制部署在集群指定范圍內的Pod必須具有 | low | |
| 限制指定Namespaces下的部署只能使用指定Region中的阿里云OSS存儲卷。 | low | |
K8s-general |
| 限制在集群指定范圍部署的應用Pod中拉取白名單列表外的鏡像。 | high |
| 要求在應用中配置 | low | |
| 要求在應用中設置 | high | |
| 限制在集群指定范圍的應用Pod中啟動臨時容器。 | medium | |
| 限制在集群指定范圍內部署LoadBalancer類型的Service。 | high | |
| 限制在集群指定范圍內使用NodePort類型的Service。 | high | |
| 要求集群指定范圍的應用Pod配置資源 | low | |
| 限制在集群指定范圍內的Services實例使用白名單范圍之外的externalIPs。 | high | |
| 限制在集群指定范圍內部署不符合digest格式的鏡像。 | low | |
| 限制在集群指定范圍內部署沒有指定范式label標簽的應用。 | low | |
| 限制在集群指定范圍內部署的Pod配置指定類型的readinessProbe和livenessProbe。 | medium | |
| 限制在Ingress實例的 | high | |
| 限制在Ingress實例的 | high | |
| 限制創建公網類型的LoadBalancer Service。 | high | |
PSP |
| 限制在集群指定范圍內部署的Pod配置 | medium |
| 限制在集群指定范圍內部署的Pod中的啟動 | medium | |
| 限制在集群指定范圍內部署的Pod配置AppArmor。 | low | |
| 限制在集群指定范圍內部署的Pod配置Linux Capabilities能力。 | high | |
| 限制在集群指定范圍內部署的Pod配置fsGroup。 | medium | |
| 限制在集群指定范圍內部署Pod的FlexVolume驅動配置。 | medium | |
| 限制在集群指定范圍內部署Pod的禁止的Sysctl范圍。 | high | |
| 限制在集群指定范圍內部署的Pod允許掛載的主機Host目錄范圍。 | high | |
| 限制在集群指定范圍內部署的Pod是否允許共享主機Host命名空間。 | high | |
| 限制在集群指定范圍內部署的Pod使用主機網絡和指定端口。 | high | |
| 限制在集群指定范圍內部署的Pod中啟動特權容器。 | high | |
| 限制在集群指定范圍內部署的Pod允許掛載的Proc類型。 | low | |
| 限制在集群指定范圍內部署的Pod使用只讀的根文件系統。 | medium | |
| 限制在集群指定范圍內部署的Pod必須使用AllowedSELinuxOptions參數中規定的Selinux配置。 | low | |
| 限制在集群指定范圍內部署的Pod使用指定的Seccomp配置文件。 | low | |
| 限制在集群指定范圍內部署的Pod使用指定的Volume掛載類型。 | medium |
查看集群當前策略治理狀態
對于安裝了策略治理相關組件的集群,可以通過以下操作查看集群當前策略治理狀態。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在策略實施總覽頁簽中查看集群當前策略治理狀態。
包含以下信息:
策略開啟總覽,包括高危和中危防護策略的總數和已開啟數展示,建議開啟的策略列表等。
近7天攔截和告警結果統計。
近7天策略實施記錄,當前頁面表格中會默認展示7天內最近100條的攔截或告警日志,如果您想查看更多審計日志,可以單擊近7天策略實施記錄后的圖標,并單擊懸浮窗口中的日志服務鏈接在SLS日志服務控制臺指定的Logstore中查看全部日志。
查看策略列表和集群中已部署的策略實例
您可以通過以下操作查看策略列表和在集群中當前已部署的策略實例總數。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在我的策略頁簽中查看集群所有可部署的策略名稱。
在列表中顯示所有可部署的策略名稱,在表格右上角會顯示全部策略、已開啟和未開啟的策略計數。其中已開啟的策略名稱會優先顯示在表格上部,在策略實例數中會顯示對應策略在集群中已部署的實例個數。
單擊操作列下的編輯或單擊策略名稱中的鏈接可以修改策略實例的配置。
單擊操作列下的刪除可以刪除該策略在集群中部署的所有實例。
如果策略實例數為空說明該策略還未在集群中部署創建,可以通過單擊操作列下的開啟進行參數配置后部署對應的策略實例。
關于策略說明和模板示例的更多信息,請參見容器安全策略規則庫說明。
創建策略實例
您可以根據以下操作在指定集群中創建策略實例。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
單擊我的策略頁簽,然后單擊創建策略實例。在創建策略實例對話框配置相關參數。
參數
說明
策略類型
首先選擇策略類型,包括如下大類:
Infra:基礎設施層資源相關的策略類型。
Compliance:基于K8s合規規范定制的策略類型。
PSP:替代Pod Security Policy(PSP)的策略類型。
K8s-general:基于最佳安全實踐對K8s資源配置進行安全加固約束的通用策略類型。
策略名稱
根據選擇的策略類型,在策略名稱下拉列表中選擇需要部署的策略模板名稱。更多信息,請參見策略規則庫說明。
實施動作
攔截:違反策略規則約束的指定資源部署會被攔截。
告警:違反策略規則約束的指定資源仍舊可以部署,只會產生對應違規審計的告警日志。
作用范圍
選擇策略實例實施在集群中哪些指定的命名空間。
參數配置
如果參數配置輸入框中默認為空,說明規則不需要進行參數配置。
如果輸入框中包含需要配置的參數模板,則請參考策略參數說明按照指定格式配置參數。更多信息,請參見策略規則庫說明。
修改策略實例
您可以根據以下操作在指定集群中修改已經部署的策略實例。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在我的策略頁簽右側的操作列,單擊目標策略對應的編輯。
當策略在集群中已部署超過1個實例時,您可以單擊操作列的查看策略實例,選擇需要修改配置的指定實例,單擊對應策略的編輯,在編輯策略對話框修改相關配置。關于相關配置說明,請參見策略的相關參數配置說明。
刪除策略實例
您可以根據以下操作在指定集群中刪除策略實例。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在我的策略頁簽右側的操作列,單擊目標策略對應的刪除。
單擊刪除,可以刪除對應策略在集群中已經部署的所有實例。
當對應策略在集群中已部署超過1個實例時,您可以單擊操作列中的查看策略實例,選擇目標實例,然后單擊對應策略的刪除。