12 Securing microservices with Istio service mesh
This chapter covers
- Terminating Transport Layer Security (TLS) at the Istio ingress gateway
- Securing service-to-service communications with mutual Transport Layer Security (mTLS) in an Istio environment
- Securing service-to-service communication with JSON Web Token (JWT) in an Istio environment
- Enforcing Role-base Access Control (RBAC) with Istio
- Managing keys in an Istio deployment
In chapter 6 we discussed how to secure service-to-service communication with certificates and in chapter 7 we extended that discussion to use JSON Web Tokens (JWT) to secure service-to-service communication. Then in chapters 10 and 11 we discussed how to deploy a set of microservices as Docker containers in Kubernetes and then again secure service-to-service communication with JWT over mutual Transport Layer Security (mTLS). In all of these cases each microservice by itself had to worry about doing security processing. Or in other words, each microservice embedded a set of Spring Boot libraries to do security processing. This violates one key aspect of microservices architecture, the Single Responsibility Principle,[1] under which a microservice should be performing only one particular function.