Modern microservice applications contain multiple services that communicate with one another over internal networks. Although these services may operate inside the same Kubernetes cluster or service mesh, network-level reachability does not necessarily mean that one workload should be permitted to access another workload.
Istio provides security controls for authenticating workloads and enforcing authorization policies between services. Istio mutual TLS can provide authenticated workload identity, while authorization policies can use the authenticated source identity to control access to target workloads. When peer authentication with mutual TLS is used, Istio exposes the authenticated workload identity through the `source.principal` authorization attribute.
In this use case, a controlled Istio service mesh is deployed on Ubuntu Linux inside an isolated VirtualBox laboratory. Multiple synthetic microservices are deployed to represent legitimate service-to-service communication.
A controlled unauthorized service-to-service access scenario is created by allowing a workload with a valid mesh identity to attempt communication with a protected service for which that workload has no authorization. The assessment verifies whether network reachability alone permits the unauthorized service to communicate with the protected workload and whether Istio can distinguish the authenticated workload identity from the authorization policy assigned to the target service.
Istio PeerAuthentication is used to enforce mutual TLS for protected workloads. Istio AuthorizationPolicy is then used to permit only explicitly authorized workload identities to access the protected service. Istio authorization policies support ALLOW, DENY, and CUSTOM actions, with DENY evaluated before ALLOW.
The controlled access attempt is generated from a test workload representing an unauthorized service. The workload possesses a valid Istio identity but attempts to access a service outside its permitted service-to-service authorization boundary. Kali Linux is used as the external security-testing environment for controlled service-discovery and validation activities, while Kubernetes test workloads generate the actual service-to-service requests inside the mesh.
Wazuh monitors relevant Ubuntu, Kubernetes, and security activity, while OpenSearch provides centralized investigation and correlation of the generated security telemetry. The same access attempts are repeated after the Zero Trust controls are configured to verify that unauthorized workload identities are denied while authorized service-to-service communication remains functional.
Complete Zero Trust Security Workflow: Istio Service Mesh → Workload Deployment → Workload Identity Assignment → Service-to-Service Communication → Unauthorized Access Attempt → mTLS Identity Verification → Source Workload Identification → Authorization Policy Evaluation → Unauthorized Request Denied → Security Event Monitoring → Authorized Communication Validation → Post-Remediation Verification