IBM Cloud Docs
配置安全環境定義限制

配置安全環境定義限制

使用安全環境定義限制 (SCC),可以控制 Red Hat® OpenShift® on IBM Cloud® 叢集裡 Pod 可以執行的動作和具有的存取權。 如需 SCC 的相關資訊,請參閱 Red Hat OpenShift 文件

為什麼要設定安全上下文約束?
當您作為叢集管理者時,您要控制叢集裡發生的情況,特別是影響叢集的安全或準備情形的動作。 安全環境定義限制可以協助控制容器中的 Pod 可執行的動作和具有的存取權,例如,如何使用特許容器、根名稱空間、主機網路連線功能和埠、磁區類型、主機檔系統、Linux 許可權(如唯讀)或群組 ID 等。
我也可以將使用者或系統群組新增至 SCC 嗎?
若要讓使用者存取叢集資源,請不要使用 SCC。 請改為參閱 指派叢集存取權,以設定 IBM Cloud IAM 及基礎架構許可權。
對於系統群組 (例如 system:authenticated),這些群組已指派給 SCC。 您可以透過說明 SCC 來查看指派給 SCC 的群組。 如果您變更系統群組指派給的 SCC,則屬於系統群組的預設元件可能會因許可權變更而遇到錯誤。
是否有預設的 SCC?
依預設,Red Hat OpenShift on IBM Cloud 叢集包括一組標準 Red Hat OpenShift SCC。 此外,叢集還具有 IBM SCC,這些 SCC 與 IBM Cloud Kubernetes Service 中社群 Kubernetes 叢集的 Kubernetes Pod 安全原則十分類似。 包含這些 IBM SCC 是為了提高 IBM Cloud Private 套件(例如,Cloud Pak)的可移植性。
預設情況下,哪些 SCC 會應用於我的資源?
如果您未指定安全環境定義,依預設會套用 Red Hat OpenShift restricted (或 4.11 以及更新版本中的 restricted-v2 ) 安全環境定義限制。 若要檢查 Pod 的安全環境定義,請說明此 Pod 並尋找 SCC 註釋,如下列範例所示。
oc describe pod <pod_name>
Name:               <pod_name>
Namespace:          <project_name>
...
Annotations:        openshift.io/...
                    openshift.io/scc=restricted
...
我可以改用Kubernetes Pod 安全策略嗎?
次數 Kubernetes Pod 安全原則 (PSP) 最初是根據 Red Hat OpenShift SCC。 但是,Red Hat OpenShift僅支援 SCC,不支援 PSP。

預設的Red Hat OpenShift SCC 比社群Kubernetes叢集中的預設 PSP 更嚴格。 因此,在社群Kubernetes叢集中執行的應用程式部署可能需要修改為在Red Hat OpenShift中執行。

自訂安全環境定義限制

若要建立、編輯、列出、刪除和以其他方式管理安全上下文約束,請參閱 Red Hat OpenShift文件。 您也可以使用角色型存取控制 (例如 clusterrolesclusterrolebindingsrolesrolebindings) 來授權使用者或群組使用預設安全環境定義限制。 您也可以使用 oc adm policy 次指令 (例如 oc adm policy add-scc-to-user) 來管理這些設定。 oc 版本與受管理叢集的版本相同。

指派 SCC 存取權的準則

  • 將特定服務帳戶授權給在該服務帳戶下執行的 Pod 所使用的 SCC。
  • 如果服務帳戶需要存取多個 SCC,請考量建立其他服務帳戶,以便預期在服務帳戶下執行的所有 Pod 都使用相同的 SCC。
  • 請勿授權所有使用者或所有服務帳戶使用 restricted (4.10 及更早版本) 或 restricted-v2 (4.11 及更新版本) SCC 以外的任何 SCC。
  • 請勿變更 openshift-* 名稱空間中服務帳戶的 SCC 授權。Red Hat OpenShift 元件設計為在特定 SCC 下執行,且在不同 SCC 下可能無法正常運作。

預設Red Hat OpenShift安全上下文約束

依預設,Red Hat OpenShift on IBM Cloud 叢集隨附下列安全環境定義限制。

請勿編輯現有的Red Hat OpenShift或IBM SCC 設置,priorityusersgroups 欄位除外。

預設值 Red Hat OpenShift 安全環境定義限制
SCC 名稱 說明
anyuid 拒絕存取,類似於 restricted SCC,但容許使用者使用任何 UID 和任何 GID 來執行。
hostaccess 容許存取所有主機名稱空間,但仍需要使用配置給名稱空間的 UID 和 SELinux 環境定義來執行 Pod。

重要提示:僅為需要主機存取命名空間、檔案系統和進程 ID 的受信任 Pod 授予此 SCC。

hostmount-anyuid 拒絕存取,類似於 restricted SCC,但容許 Pod 進行主機裝載以及使用任何 UID。 此 SCC 主要由持續性磁區回收器使用。

重要提示:僅為需要以任何 UID(包括 UID 0)存取主機檔案系統的 Pod 授予此 SCC。

hostnetwork 容許使用主機網路連線功能和主機埠,但仍需要使用配置給名稱空間的 UID 和 SELinux 環境定義來執行 Pod。

重要提示:僅為需要主機網路存取權限的 Pod 授予此 SCC。

node-exporter 為內建 Prometheus 節點匯出程式授予適當的存取權。
nonroot 拒絕存取,類似於 restricted SCC,但容許使用者使用任何非根 UID 執行。 容器運行環境的使用者或資訊清單必須指定 UID。
privileged 允許存取所有特權和主機功能,並能夠以任何使用者、任何群組、任何fsGroup設定以及任何 SELinux 上下文運行。

重要提示:僅為需要最多存取權限的叢集管理授予此 SCC。

restricted 拒絕存取所有主機特性,並且需要使用配置給名稱空間的 UID 和 SELinux 環境定義來執行 Pod。 這是最嚴格的 SCC,依預設用於已鑑別使用者。
hostnetwork-v2 類似於 hostnetwork SCC,但已修改以最小化與 Pod 安全標準 Restricted 設定檔的差異。
nonroot-v2 類似於 nonroot SCC,但已修改以最小化與 Pod 安全標準 Restricted 設定檔的差異。
restricted-v2 類似於 restricted SCC,但已修改以滿足 Pod 安全標準 Restricted 設定檔。

預設 IBM 安全環境定義限制

依預設,Red Hat OpenShift on IBM Cloud 叢集隨附下列 IBM 安全環境定義限制。

請勿編輯現有的Red Hat OpenShift或IBM SCC 設置,priorityusersgroups 欄位除外。

預設 IBM 安全環境定義限制
SCC 名稱 說明
ibm-anyuid-hostaccess-scc 容許 Pod 使用任何 UID 和 GID 執行、執行任何磁區以及具有對主機的完整存取權。

重要提示:僅為需要完全存取主機和網路的 Pod 授予此 SCC。

ibm-anyuid-hostpath-scc 容許 Pod 使用任何 UID 和 GID 執行以及執行任何磁區,包括主機路徑。

重要提示:僅為需要存取 hostPath 磁碟區的 Pod 授予此 SCC。

ibm-anyuid-scc 容許 Pod 使用任何 UID 和 GID 執行,但防止其存取主機。
ibm-privileged-scc 授與對所有特許主機特性的存取權,並容許 Pod 使用任何 UID 和 GID 執行以及執行任何磁區。

重要提示:僅為需要最多存取權限的叢集管理授予此 SCC。

ibm-restricted-scc 拒絕存取所有主機特性,並且需要使用配置給名稱空間的 UID 和 SELinux 環境定義來執行 Pod。 此 SCC 是限制最嚴格的 IBM SCC。