I'm currently exploring running an Istio / Kubernetes cluster on AWS using EKS. I would like to be able to assign a different IAM role to each service running in the cluster to limit the AWS privileges of each service.
In non-Istio Kubernetes clusters this facility is provided by projects such as kube2iam but this doesn't seem ideal in the Istio world as kube2iam
relies on iptables
rules and Istio is already using iptables
rules to divert all outbound traffic to the Envoy sidecar.
The Istio security documentation says that identity model caters for different underlying implementations and on AWS that implementation is IAM:
In the Istio identity model, Istio uses the first-class service identity to determine the identity of a service. This gives great flexibility and granularity to represent a human user, an individual service, or a group of services. On platforms that do not have such identity available, Istio can use other identities that can group service instances, such as service names.
Istio service identities on different platforms:
Kubernetes: Kubernetes service account
GKE/GCE: may use GCP service account
GCP: GCP service account
AWS: AWS IAM user/role account
But I haven't come across any additional documentation about how to assign IAM roles to Istio ServiceRoles.
Has anyone found a solution to this?
UPDATE: See IRSA