保护网络安全
您可以使用网络策略来控制允许或拒绝哪些连接。
网络策略
如果集群 OpenShift® 的网络隔离模式设置为 NetworkPolicy (默认值),则可控制不同项目(命名空间)之间的流量流动。 要定义流程,请使用自定义 NetworkPolicy 资源。
要了解有关网络策略的更多信息,请参阅文档 Red Hat® OpenShift Container Platform 中的 《关于网络策略》 部分:
缺省情况下,项目中所有的 Pod 都可以从其他 Pod 和网络端点访问。 要隔离项目中的一个或多个 Pod,可以在该项目中创建 NetworkPolicy 对象,以指出允许的传入连接。
网络策略具有累积性,因此您可以组合多个网络策略以满足复杂的网络需求。
网络策略适用于 Certificate manager
运行以下命令以查看应用于 Certificate managerIBM Cloud Pak foundational services 安装 的项目的网络策略:
oc get networkpolicy \
--namespace=${PROJECT_CERT_MANAGER}
deny-by-defaultallow-from-same-namespaceallow-same-namespace
如果将上述任何网络策略应用于该项目,请为该项目创建以下网络 Certificate manager策略:
- 允许从以下项进行访问: Operator Lifecycle Manager
以下网络策略适用于项目 Certificate manager 中的所有 Pod。 该网络策略允许项目 Certificate manager 中的 Pod 接受来自项目 Operator Lifecycle Manager 中其他 Pod 的传入通信。
cat <<EOF |oc apply -f - kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-from-openshift-operator-lifecycle-manager namespace: ${PROJECT_CERT_MANAGER} spec: podSelector: {} ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: openshift-operator-lifecycle-manager policyTypes: - Ingress EOF- 允许从API服务器访问
以下网络策略适用于项目 Certificate manager 中的所有 Pod。 该网络策略允许 Certificate manager 项目中的 Pod 接受来自 API 服务 Red Hat OpenShift Container Platform 器的传入通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: labels: component: cpfs3 name: allow-webhook-access-from-apiserver namespace: ${PROJECT_CERT_MANAGER} spec: ingress: - from: - namespaceSelector: {} podSelector: matchLabels: apiserver: "true" podSelector: {} policyTypes: - Ingress EOF- 允许从 Certificate manager webhook 访问
以下网络策略适用于项目 Certificate manager 中的所有 Pod。 该网络策略允许项目 Certificate manager 中的Pod接受来自 Certificate manager webhook的传入通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-to-cert-manager-webhook namespace: ${PROJECT_CERT_MANAGER} labels: component: cpfs3 spec: podSelector: matchLabels: app: ibm-cert-manager-webhook ingress: - {} EOF
网络策略适用于 License Service
运行以下命令以查看应用于 License ServiceIBM Cloud Pak foundational services 安装 的项目的网络策略:
oc get networkpolicy \
--namespace=${PROJECT_LICENSE_SERVICE}
deny-by-defaultallow-from-same-namespaceallow-same-namespace
如果将上述任何网络策略应用于该项目,请为该项目创建以下网络 License Service策略:
- 允许从以下项进行访问: Operator Lifecycle Manager
以下网络策略适用于项目 License Service 中的所有 Pod。 该网络策略允许项目 License Service 中的 Pod 接受来自项目 Operator Lifecycle Manager 中其他 Pod 的传入通信。
cat <<EOF |oc apply -f - kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-from-openshift-operator-lifecyele-manager namespace: ${PROJECT_LICENSE_SERVICE} spec: podSelector: {} ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: openshift-operator-lifecycle-manager policyTypes: - Ingress EOF- 允许访问使用报告
以下网络策略适用于项目 License Service 中的所有
ibm-license-service-reporter-instancePod。 网络策略允许Pod响应下载使用情况报告的请求。cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-to-ibm-licensing-service-reporter namespace: ${PROJECT_LICENSE_SERVICE} labels: component: cpfs3 spec: podSelector: matchLabels: app: ibm-license-service-reporter-instance ingress: - {} policyTypes: - Ingress EOF- 允许提交使用指标
以下网络策略适用于项目 License Service 中的所有
ibm-licensing-service-instancePod。 网络策略允许Pod接受使用情况指标。cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: access-to-ibm-licensing-service-instance namespace: ${PROJECT_LICENSE_SERVICE} labels: component: cpfs3 spec: podSelector: matchLabels: app: ibm-licensing-service-instance ingress: - {} policyTypes: - Ingress EOF
网络策略适用于 scheduling service
- 允许访问集群资源及其外部资源
以下网络策略适用于项目 scheduling service 中的所有 Pod。
- 外发通信
网络策略拒绝项目中所有出站流量, scheduling service 但以下情况除外:
- 对 Red Hat OpenShift Container Platform API 服务器的请求
- 查询 Red Hat OpenShift Container Platform DNS 服务
- 传入通信
网络策略拒绝所有进入该 scheduling service 项目的入站流量,但以下情况除外:
- 来自 Red Hat OpenShift Container Platform API服务器的传入通信
- 来自的来信 Prometheus
- 项目 Operator Lifecycle Manager 中来自舱体的传入通信
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: common namespace: ${PROJECT_SCHEDULING_SERVICE} labels: icpdsupport/addOnId: scheduling icpdsupport/ignore-on-nd-backup: "true" velero.io/exclude-from-backup: "true" spec: egress: - to: - namespaceSelector: {} podSelector: matchLabels: apiserver: "true" - to: - podSelector: {} namespaceSelector: matchLabels: kubernetes.io/metadata.name: openshift-dns ingress: - from: - podSelector: {} namespaceSelector: matchLabels: openshift.io/cluster-monitoring: "true" - from: - podSelector: {} namespaceSelector: matchLabels: kubernetes.io/metadata.name: openshift-operator-lifecycle-manager - from: - namespaceSelector: {} podSelector: matchLabels: apiserver: "true" podSelector: {} policyTypes: - Egress - Ingress EOF- 允许从 scheduling service webhook 访问
以下网络策略适用于项目 scheduling service 中的所有 Pod。 该网络策略允许项目 scheduling service 中的Pod接受来自 scheduling service webhook的传入通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: webhook namespace: ${PROJECT_SCHEDULING_SERVICE} labels: icpdsupport/addOnId: scheduling icpdsupport/ignore-on-nd-backup: "true" velero.io/exclude-from-backup: "true" spec: podSelector: matchLabels: netpol: webhook ingress: - {} policyTypes: - Ingress EOF
网络策略用于隔离实例 IBM Software Hub
集群管理员可以创建以下网络策略来隔离实例 IBM Software Hub:
- 在操作数项目中拒绝所有网络流量
- 在操作数项目中启用荚间通信
- 启用来自 Ingress Red HatOpenShift Container Platform 控制器的连接
- 启用来自监控堆栈 Red HatOpenShift Container Platform 的连接
- 启用Web客户端与操作数项目进行通信
- 启用操作数项目与操作符项目进行通信
这些策略共同作用,为实例提供受控访问。 您可以对集群 IBM Software Hub 中的每个实例重复此过程。
- 在操作数项目中拒绝所有网络流量
以下网络策略适用于operands项目中的所有Pod。 网络策略拒绝所有发往操作数项目的入站流量。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-by-default namespace: ${PROJECT_CPD_INST_OPERANDS} spec: podSelector: ingress: [] EOF- 在操作数项目中启用荚间通信
以下网络策略适用于operands项目中的所有Pod。 该网络策略允许operands项目中的Pod相互通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-same-namespace namespace: ${PROJECT_CPD_INST_OPERANDS} spec: podSelector: {} policyTypes: - Ingress ingress: - from: - podSelector: {} EOF- 启用来自 Ingress Red Hat OpenShift Container Platform 控制器的连接
以下网络策略适用于operands项目中的所有Pod。 该网络策略允许operands项目中的Pod接受来自 Red Hat OpenShift Container Platform Ingress Controller的传入通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-openshift-ingress namespace: ${PROJECT_CPD_INST_OPERANDS} spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: ingress EOF- 启用来自监控堆栈 Red Hat OpenShift Container Platform 的连接
以下网络策略适用于operands项目中的所有Pod。 网络策略允许operands项目中的Pod接受来自监控堆栈 Red Hat OpenShift Container Platform 的传入通信。
cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-openshift-monitoring namespace: ${PROJECT_CPD_INST_OPERANDS} spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: monitoring EOF- 启用Web客户端与操作数项目进行通信
以下网络策略适用于 operands 项目中的 Pod
ibm-nginx。 网络策略允许operands项目中的Podibm-nginx接受来自Web IBM Software Hub 客户端的传入通信。cat <<EOF |oc apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-access-to-front-door namespace: ${PROJECT_CPD_INST_OPERANDS} spec: podSelector: matchLabels: component: "ibm-nginx" policyTypes: - Ingress ingress: - {} EOF- 启用操作数项目与操作符项目进行通信
以下网络策略适用于operands项目中的所有Pod。 网络策略允许操作符项目中的Pod接受来自操作符项目的实例传入通信。
cat <<EOF |oc apply -f - kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-from-cpd-operator-ns namespace: ${PROJECT_CPD_INST_OPERANDS} spec: ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: ${PROJECT_CPD_INST_OPERATORS} podSelector: {} policyTypes: - Ingress EOF
限制出口
您应考虑是否需要采取额外措施来限制从 IBM Software Hub...的出口。 在某些环境中(例如在受限网络中运行的集群),这可能并非必要;您现有的网络配置或防火墙规则应足以限制出站流量。
强烈建议您查阅 Red Hat OpenShift 安全指南 以确定应在您的环境中实施哪些安全措施。
由各个服务实施的网络策略
以下服务在安装过程中会实施额外的网络策略。
| 服务 | 自动安装的网络策略 |
|---|---|
| AI Factsheets | 该服务不会自动创建网络策略。 |
| Anaconda Repository for IBM Cloud Pak for Data | 不适用。 该服务未安装在集群上。 |
| Analytics Engine powered by Apache Spark | 该服务不会自动创建网络策略。 |
| Cognos Analytics | 该服务不会自动创建网络策略。 若您计划在绑定项目 Cognos Analytics 中配置实例,且 Certificate manager已为 IBM Software Hubcontrol plane 、 License Service和应用网络策略,则必须创建网络策略以允许服务实例与这些组件通信。 有关创建网络策略的更多信息,请参阅 《为...添加网络 Cognos Analytics策略 》。 |
| Cognos Dashboards | 该服务不会自动创建网络策略。 |
| Data Gate | Data Gate 自动创建以下防御性网络策略:
|
| Data Privacy | Data Privacy 自动创建以下防御性网络策略:
|
| Data Product Hub | |
| Data Refinery | 该服务不会自动创建网络策略。 |
| Data Replication | Data Replication 自动创建以下防御性网络策略:
|
| DataStage | DataStage 自动创建以下防御性网络策略:
|
| Data Virtualization | Data Virtualization 自动创建以下防御性网络策略:
|
| Db2 | Db2 自动创建以下防御性网络策略:
此外,当您创建数据库实例时, Db2 系统会自动创建以下防御性网络策略:
|
| Db2 Big SQL | Db2
Big SQL 自动创建以下防御性网络策略:
|
| Db2 Data Management Console | Db2
Data Management Console 自动创建以下防御性网络策略:
|
| Db2 Warehouse | Db2 Warehouse 自动创建以下防御性网络策略:
此外,当您创建数据库实例时, Db2 Warehouse 系统会自动创建以下防御性网络策略:
|
| Decision Optimization | Decision Optimization 自动创建以下防御性网络策略:
|
| EDB Postgres | 该服务不会自动创建网络策略。 |
| Execution Engine for Apache Hadoop | Execution Engine for Apache Hadoop 自动创建以下防御性网络策略:
|
| IBM Knowledge Catalog | 安装时, Db2U 会自动为内部数据库创建 IBM Knowledge Catalog以下防御性网络策略:
|
| IBM Knowledge Catalog Premium | IBM Knowledge Catalog Premium 自动创建以下防御性网络策略:
此外,当您安装 IBM Knowledge Catalog Premium时, Db2U 会自动为内部数据库创建以下防御性网络策略:
|
| IBM Knowledge Catalog Standard | IBM Knowledge Catalog Standard 自动创建以下防御性网络策略:
此外,当您安装 IBM Knowledge Catalog Standard时, Db2U 会自动为内部数据库创建以下防御性网络策略:
|
| IBM Master Data Management | IBM
Master Data Management 自动创建以下防御性网络策略:
|
| Informix | 创建数据库实例时, Informix 系统会自动创建以下防御性网络策略:
|
| MANTA Automated Data Lineage | 该服务不会自动创建网络策略。 |
| MongoDB | 该服务不会自动创建网络策略。 |
| OpenPages | 当您创建一个 OpenPages 服务实例时, OpenPages 系统会自动创建以下防御性网络策略:
|
| Orchestration Pipelines | 该服务不会自动创建网络策略。 |
| Planning Analytics | 该服务不会自动创建网络策略。 |
| Product Master | Product Master 自动创建以下防御性网络策略:
|
| RStudio® Server Runtimes | 该服务不会自动创建网络策略。 |
| SPSS Modeler | 该服务不会自动创建网络策略。 |
| Synthetic Data Generator | 该服务不会自动创建网络策略。 |
| Voice Gateway | Voice Gateway 自动创建以下网络策略:
|
| Watson Discovery | Watson Discovery 自动创建以下防御性网络策略:
|
| Watson Machine Learning | 该服务不会自动创建网络策略。 |
| Watson OpenScale | Watson
OpenScale 自动创建以下防御性网络策略:
|
| Watson Speech services | Watson Speech services 自动创建以下防御性网络策略:
|
| Watson Studio | 该服务不会自动创建网络策略。 |
| Watson Studio Runtimes | 该服务不会自动创建网络策略。 |
| watsonx.ai™ | 该服务不会自动创建网络策略。 |
| watsonx Assistant | watsonx Assistant 自动创建以下防御性网络策略:
|
| watsonx Code Assistant™ | 该服务不会自动创建网络策略。 |
| Watsonx Code Assistant™ for Red Hat Ansible® Lightspeed | 该服务不会自动创建网络策略。 |
| watsonx Code Assistant for Z | 该服务不会自动创建网络策略。 |
| watsonx Code Assistant for Z Code Explanation | 该服务不会自动创建网络策略。 |
| watsonx.data™ | watsonx.data 自动创建以下防御性网络策略:
|
| watsonx.governance™ |
|
| watsonx™ Orchestrate | watsonx
Orchestrate 自动创建以下防御性网络策略:
|