对等身份验证

对等身份验证

PeerAuthentication 定义了传入连接的双向 TLS (mTLS) 要求。

在 Sidecar 模式下,PeerAuthentication 决定是否允许或要求使用 mTLS 连接到 Envoy 代理 Sidecar。

在 Ambient 模式下,ztunnel 节点代理会为 Pod 透明地启用安全功能。(代理之间的流量使用 HBONE 协议,其中包括使用 mTLS 的加密。)因此,不支持 DISABLE 模式。STRICT 模式用于确保无法绕过网格进行连接。

示例

策略要求所有 foo 命名空间下的工作负载使用 mTLS 流量。

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: foo
spec:
  mtls:
    mode: STRICT

对于网格级别,根据您的 Istio 安装,将策略放在根命名空间中。

策略允许所有 foo 命名空间下的工作负载使用 mTLS 和明文流量,但要求 finance 工作负载使用 mTLS。

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: foo
spec:
  mtls:
    mode: PERMISSIVE
---
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: finance
  namespace: foo
spec:
  selector:
    matchLabels:
      app: finance
  mtls:
    mode: STRICT

策略为所有 finance 工作负载启用严格的 mTLS,但将端口 8080 设为明文。请注意,portLevelMtls 字段中的端口值是指工作负载的端口,而不是 Kubernetes 服务的端口。

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: foo
spec:
  selector:
    matchLabels:
      app: finance
  mtls:
    mode: STRICT
  portLevelMtls:
    8080:
      mode: DISABLE

策略从命名空间(或网格)设置继承 mTLS 模式,并为工作负载端口 8080 禁用 mTLS。

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: foo
spec:
  selector:
    matchLabels:
      app: finance
  mtls:
    mode: UNSET
  portLevelMtls:
    8080:
      mode: DISABLE
字段类型描述必填
selectorWorkloadSelector

选择器确定要应用 PeerAuthentication 的工作负载。选择器将与与策略位于相同命名空间中的工作负载匹配。如果策略位于根命名空间中,则选择器还将与所有命名空间中的工作负载匹配。

如果未设置,则该策略将应用于与策略位于相同命名空间中的所有工作负载。如果它位于根命名空间中,它将应用于网格中的所有工作负载。

mtlsMutualTLS

工作负载的双向 TLS 设置。如果未定义,则从父级继承。

portLevelMtlsmap<uint32, MutualTLS>

特定于端口的双向 TLS 设置。这些仅在指定工作负载选择器时才适用。该端口是指工作负载的端口,而不是 Kubernetes 服务的端口。

PeerAuthentication.MutualTLS

双向 TLS 设置。

字段类型描述必填
mode模式

定义用于对等身份验证的 mTLS 模式。

PeerAuthentication.MutualTLS.Mode

名称描述
UNSET

从父级继承,如果有父级。否则被视为 PERMISSIVE

DISABLE

连接未被隧道化。

PERMISSIVE

连接可以是明文或 mTLS 隧道。

STRICT

连接为 mTLS 隧道(必须提供带有客户端证书的 TLS)。

这些信息是否有用?
您是否有任何改进建议?

感谢您的反馈!