2.3. 保护 Service Mesh
授权策略和 mTLS 允许您保护 Service Mesh。
流程
确保租户的所有 Red Hat OpenShift Serverless 项目都与成员位于同一个
ServiceMeshMemberRoll
对象中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 属于网格的所有项目都必须在严格的模式下强制使用 mTLS。这会强制 Istio 只接受与 client-certificate 存在的连接,并允许 Service Mesh sidecar 使用
AuthorizationPolicy
对象验证源。使用
knative-serving
和knative-eventing
命名空间中的AuthorizationPolicy
对象创建配置:knative-default-authz-policies.yaml
配置文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些策略限制 Serverless 系统组件之间网络通信的访问规则。具体来说,它们强制执行以下规则:
-
拒绝
knative-serving
和knative-eventing
命名空间中未明确允许的所有流量 -
允许来自
istio-system
和knative-serving
命名空间的流量来激活器 -
允许来自
knative-serving
命名空间的流量到自动扩展 -
允许
knative-eventing
命名空间中的 Apache Kafka 组件健康探测 -
允许
knative-eventing
命名空间中的基于频道的代理的内部流量
-
拒绝
应用授权策略配置:
oc apply -f knative-default-authz-policies.yaml
$ oc apply -f knative-default-authz-policies.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义哪些 OpenShift 项目可以相互通信。对于这个通信,一个租户的每个 OpenShift 项目都需要以下内容:
-
一个
AuthorizationPolicy
对象将传入的流量直接限制到租户的项目 -
一个
AuthorizationPolicy
对象使用在knative-serving
项目中运行的 Serverless 的 activator 组件限制传入的流量 -
一个
AuthorizationPolicy
对象,允许 Kubernetes 在 Knative Services 上调用PreStopHooks
安装
helm
工具并为每个租户创建所需资源,而不是手动创建这些策略:安装
helm
工具helm repo add openshift-helm-charts https://charts.openshift.io/
$ helm repo add openshift-helm-charts https://charts.openshift.io/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
团队 alpha
创建示例配置helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.34.0 --set "name=team-alpha" --set "namespaces={team-alpha-1,team-alpha-2}" > team-alpha.yaml
$ helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.34.0 --set "name=team-alpha" --set "namespaces={team-alpha-1,team-alpha-2}" > team-alpha.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
团队 bravo
创建示例配置helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-bravo" --set "namespaces={team-bravo-1,team-bravo-2}" > team-bravo.yaml
$ helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.0 --set "name=team-bravo" --set "namespaces={team-bravo-1,team-bravo-2}" > team-bravo.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
一个
应用授权策略配置:
oc apply -f team-alpha.yaml team-bravo.yaml
$ oc apply -f team-alpha.yaml team-bravo.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow