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.
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). |