June 1, 2022·6 min read·engineeringistiospireidentitytls

Istio 1.14 separates workload identity from its certificate provider

SPIRE integration uses Envoy's SDS interface to supply strongly attested identities. The release also adds conditional automatic SNI and changes the default load-balancing algorithm.

A workload certificate is useful only if the system issuing it has established which workload is asking. Istio 1.14 expands the identity choices behind mesh certificates by supporting SPIRE through Envoy's Secret Discovery Service interface. The change concerns the source and attestation of identity, while Istio continues to use that identity within its network configuration.

The June 1 release announcement describes SPIRE as an implementation of SPIFFE with pluggable attestation and federation. It credits changes to external certificate authority integration through SDS for enabling the support. This is a new integration boundary rather than a claim that merely installing the release replaces every mesh's certificate authority.

I consider identity attached to workloads a better foundation than identity inferred from network addresses. Its value still depends on how the workload obtains that identity and how policy uses it. SPIRE support makes that first part more configurable without making authorization an automatic consequence of certificate issuance.

Attestation precedes certificate use

The announcement describes SPIRE's use of multiple attestation mechanisms to establish identity. It names node and workload attestors for several infrastructure environments and a plugin architecture for custom attestors. The relevant property is the evidence used before an identity is issued.

That separates two questions commonly compressed into a statement that a workload has mTLS. One question is how the system decides which identity belongs to the workload. Another is how a proxy obtains and uses the resulting certificate. A secure transport needs an answer to both.

SPIRE support gives deployments an alternative source for the first question. The release integrates it through SDS for certificate delivery. Those responsibilities can cooperate without being the same implementation.

The project also describes integration with custom key-management systems and existing public-key infrastructure. Such facilities concern custody of CA keys and the upstream trust relationship. They do not eliminate the need for correct workload registration and attestation.

An organization's existing PKI can therefore be relevant without directly issuing every certificate through the mesh's original path. The integration offers a way to connect those systems, with the concrete configuration determining which trust and attestation rules apply.

SDS defines the certificate delivery boundary

The 1.14 change notes identify the new CA integration approach through Envoy's SDS API. This supplies a protocol boundary for delivering secrets needed by the proxy. It lets certificate sourcing evolve without requiring each application to implement its own mesh certificate retrieval.

The control plane's network configuration and the certificate provider's identity work remain separate concerns. The proxy needs compatible material through the expected delivery path. It also needs configuration describing where and how that material should be used.

That separation is useful for operations because it locates distinct failure classes. An allocation or attestation failure at the identity provider differs from a traffic policy that selects the wrong TLS behaviour. Treating every failed handshake as one undifferentiated mesh problem obscures those boundaries.

The release also adds PrivateKeyProvider support in SDS. That is another extension to secret handling, named separately in the change notes. Its presence should not be interpreted as proof that every SPIRE configuration requires or uses that provider facility.

The important contract is that the mesh can integrate certificate sources through a defined Envoy interface. The release announcement supplies the supported SPIRE use case, while the change notes identify the underlying integration mechanism.

Federation extends trust deliberately

SPIRE implements SPIFFE federation, and the announcement describes configurable trust for peers in another trust domain through its Federation API. This is relevant where workloads do not all belong to one identity administration boundary.

Trust in another domain is not the same as granting every workload in that domain access to every service. Federation establishes a relationship through which identities can be recognized. Authorization policy still determines permitted interactions.

That distinction follows the reason to use workload identity in the first place. A certificate supplies an identity assertion for a connection. The policy that consumes that assertion defines the access decision. Replacing address-based assumptions with identities is useful only if that second decision remains explicit.

The announcement's wording also makes federation a capability of the integrated identity system. It does not announce a universal trust relationship enabled for every upgraded Istio installation. Operators need to describe the domains and configured trust relevant to their deployment.

My preference is to preserve those distinctions in architecture documentation. Attestation, certificate delivery, and authorization have separate owners and evidence. The ability to integrate them through stable interfaces helps keep a failure in one stage from becoming an unexplained failure of the entire mesh.

Automatic SNI has explicit enabling conditions

Istio 1.14 also adds automatic Server Name Indication configuration. The announcement explains the problem as servers requiring SNI where users previously had to configure it manually or use an EnvoyFilter. The change notes give a more precise statement of its conditions.

Automatic SNI applies when a DestinationRule does not specify SNI and the ENABLE_AUTO_SNI flag is enabled. A related capability performs automatic subject alternative name validation based on the downstream HTTP host or authority header when both ENABLE_AUTO_SNI and VERIFY_CERTIFICATE_AT_CLIENT are enabled.

Those are related TLS functions with different purposes. Supplying a server name helps the upstream server select its TLS identity. Validating the certificate checks the identity presented by the server. Describing automatic SNI alone as complete server verification would combine two distinct decisions.

The conditions also matter for adoption. The release adds the capability; the change notes describe feature flags and the absence of an explicit SNI setting. An existing explicit DestinationRule value is not described as something the new logic indiscriminately replaces.

This provides a higher-level path for a recurring TLS requirement. Avoiding an EnvoyFilter for that case reduces dependence on the generated proxy configuration's internal structure. It still leaves the enabling choices and intended server identity visible as operating requirements.

Workload selectors refine TLS configuration scope

The change notes add WorkloadSelector support to DestinationRule. They also describe using a credentialName-based secret at sidecars for egress TLS when a WorkloadSelector is specified. The sidecar must have permission to list secrets in its namespace.

This is a scoped capability with an authorization prerequisite. A secret name in configuration does not grant the proxy access to the corresponding object. Namespace permissions remain part of whether the declared TLS arrangement can function.

The release also adds workload TLS configuration support and a minimum TLS version control. These settings concern the transport contract a workload accepts or initiates. They complement certificate sourcing but do not replace identity attestation.

Keeping scope explicit is useful in a polyglot fleet. Uniform mesh controls can remove duplicated application code, but a credential intended for one workload should not become an implicit mesh-wide default merely because the control plane manages both.

A changed load-balancing default affects existing traffic

Another operational change is independent of identity. Istio 1.14 changes its default load-balancing algorithm from ROUND_ROBIN to LEAST_REQUEST. The change notes explain the motivation as reducing overloaded endpoints, particularly when endpoint weights are involved.

Explicit ROUND_ROBIN configuration remains supported. The notes also provide ENABLE_LEGACY_LB_ALGORITHM_DEFAULT=true as a way to restore the previous default. Those controls separate an explicitly chosen policy from behaviour inherited through a release default.

This deserves attention because a configuration can retain its text while its omitted values acquire new meaning. The certificate integration adds an opt-in deployment choice, while a changed default can affect workloads whose manifests do not name an algorithm.

The announcement states support for Kubernetes 1.21 through 1.24. Within that release context, SPIRE integration, automatic TLS helpers, and the load-balancing default are distinct changes with different activation paths. An upgrade account needs to preserve those distinctions instead of treating every highlighted capability as enabled and applicable everywhere.

Istio 1.14 gives identity infrastructure a defined integration path through SDS. The useful outcome is the ability to combine attestation and certificate delivery with the mesh's existing traffic configuration. A deployment still needs to specify its trust domains, policy decisions, and TLS configuration conditions, because the new integration does not infer those requirements from the presence of a certificate.

The change notes also add user-group controls for outbound interception on virtual machines. Administrators can select groups whose traffic is redirected, or exclude groups when otherwise redirecting all groups. The two settings are mutually exclusive. This makes another boundary explicit, because a machine can run processes outside the intended mesh workload set while still hosting an Istio-managed application. The default continues to intercept traffic from all groups.