PeerAuthentication
PeerAuthentication
PeerAuthentication defines mutual TLS (mTLS) requirements for incoming connections.
In sidecar mode, PeerAuthentication determines whether or not mTLS is allowed or required for connections to an Envoy proxy sidecar.
In ambient mode, security is transparently enabled for a pod by the ztunnel node agent. (Traffic between proxies uses the HBONE protocol, which includes encryption with mTLS.) Because of this, DISABLE mode is not supported. STRICT mode is useful to ensure that connections that bypass the mesh are not possible.// Examples:
Policy to require mTLS traffic for all workloads under namespace foo:
apiVersion: security.istio.io/v1 kind: PeerAuthentication metadata: name: default namespace: foo spec: mtls: mode: STRICT For mesh level, put the policy in root-namespace according to your Istio installation.
Policies to allow both mTLS and plaintext traffic for all workloads under namespace foo, but require mTLS for workload finance.
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 Policy that enables strict mTLS for all finance workloads, but leaves the port 8080 to plaintext. Note the port value in the portLevelMtls field refers to the port of the workload, not the port of the Kubernetes service.
apiVersion: security.istio.io/v1 kind: PeerAuthentication metadata: name: default namespace: foo spec: selector: matchLabels: app: finance mtls: mode: STRICT portLevelMtls: 8080: mode: DISABLE Policy that inherits mTLS mode from namespace (or mesh) settings, and disables mTLS for workload port 8080.
apiVersion: security.istio.io/v1 kind: PeerAuthentication metadata: name: default namespace: foo spec: selector: matchLabels: app: finance mtls: mode: UNSET portLevelMtls: 8080: mode: DISABLE PeerAuthentication.MutualTLS
Mutual TLS settings.
PeerAuthentication.MutualTLS.Mode
| Name | Description |
|---|---|
UNSET | Inherit from parent, if has one. Otherwise treated as |
DISABLE | Connection is not tunneled. |
PERMISSIVE | Connection can be either plaintext or mTLS tunnel. |
STRICT | Connection is an mTLS tunnel (TLS with client cert must be presented). |