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.yamlCopy 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.yamlCopy 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.yamlCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow