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 的激活器组件限制传入的流量 -
一个
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 为
team alpha
创建配置示例helm template openshift-helm-charts/redhat-knative-istio-authz --version 1.31.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.31.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