2.6. 在 Service Mesh 中自定义安全性
查看不再支持的 Red Hat OpenShift Service Mesh 发行版本的文档。
Service Mesh 版本 1.0 和 1.1 control plane 不再被支持。有关升级服务网格 control plane 的详情,请参阅 升级 Service Mesh。
有关特定 Red Hat OpenShift Service Mesh 发行版本的支持状态的信息,请参阅产品生命周期页面。
如果您的服务网格应用程序由 一 组复杂的微服务组成,您可以使用 Red Hat OpenShift Service Mesh 来定制这些服务间的通信安全性。OpenShift Container Platform 的基础架构以及 Service Mesh 的流量管理功能可帮助您管理应用程序的复杂性,并为微服务提供服务和身份安全。
2.6.1. 启用 mutual Transport Layer Security(mTLS)
Mutual Transport Layer Security(mTLS)是一个双方可以同时相互验证对方的协议。在一些协议(IKE、SSH)中,它是身份验证的默认模式,在其他协议中(TLS)是可选的。
mtls 可在不更改应用程序或服务代码的情况下使用。TLS 完全由服务网格基础架构处理,并在两个 sidecar 代理之间进行处理。
默认情况下,Red Hat OpenShift Service Mesh 设置为 permissive 模式,Service Mesh 的 sidecar 接受明文网络流量以及使用 mTLS 加密的网络连接。如果网格中的服务需要与网格外的服务进行通信,则 strict 模式的 mTLS 可能会破坏这些服务之间的通信。在将工作负载迁移到 Service Mesh 时使用 permissive 模式。
2.6.1.1. 在网格中启用 strict 模式的 mTLS
如果您的工作负载没有与网格之外的服务进行通信,且只接受加密的连接不会破坏这些通信,则可以在您的网格间快速启用 mTLS。在 ServiceMeshControlPlane
资源中将 spec.istio.global.mTLS.enabled
设置为 true
。operator 创建所需资源。
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane spec: istio: global: mtls: enabled: true
2.6.1.1.1. 为特定服务的入站连接配置 sidecar
您可以通过创建一个策略来为各个服务或命名空间配置 mTLS。
apiVersion: "authentication.istio.io/v1alpha1" kind: "Policy" metadata: name: default namespace: <NAMESPACE> spec: peers: - mtls: {}
2.6.1.2. 为出站连接配置 sidecar
创建一个目标规则将 Service Mesh 配置为在向网格中的其他服务发送请求时使用 mTLS。
apiVersion: "networking.istio.io/v1alpha3" kind: "DestinationRule" metadata: name: "default" namespace: <CONTROL_PLANE_NAMESPACE>> spec: host: "*.local" trafficPolicy: tls: mode: ISTIO_MUTUAL
2.6.1.3. 设置最小和最大协议版本
如果您的环境对服务网格中的加密流量有具体要求,可以通过在 ServiceMeshControlPlane
资源中设置 spec.security.controlPlane.tls.minProtocolVersion
或 spec.security.controlPlane.tls.maxProtocolVersion
来控制允许的加密功能。这些值在 control plane 资源中配置,定义网格组件在通过 TLS 安全通信时使用的最小和最大 TLS 版本。
apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane spec: istio: global: tls: minProtocolVersion: TLSv1_2 maxProtocolVersion: TLSv1_3
默认为 TLS_AUTO
,且不指定 TLS 版本。
值 | 描述 |
---|---|
| default |
| TLS 版本 1.0 |
| TLS 版本 1.1 |
| TLS 版本 1.2 |
| TLS 版本 1.3 |