Istio — это мощная сервисная сеть для управления микросервисами в средах Kubernetes. Одной из его ключевых функций является взаимная безопасность транспортного уровня (mTLS), которая обеспечивает безопасную связь между службами. В этой статье блога мы рассмотрим различные методы включения строгого mTLS Istio и предоставим примеры кода для каждого подхода.
Метод 1. Настройка mTLS с использованием Istio Sidecar Injection
Istio предоставляет функцию внедрения дополнительных модулей, которая автоматически внедряет дополнительные прокси-серверы Envoy в каждый модуль. Чтобы включить строгий mTLS, вы можете аннотировать пространство имен или конкретное развертывание с помощью sidecar.istio.io/inject: "true". Вот пример:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
spec:
template:
metadata:
annotations:
sidecar.istio.io/inject: "true"
spec:
containers:
- name: my-service
image: my-service:latest
Метод 2: политики авторизации Istio
Istio обеспечивает детальный контроль над авторизацией трафика с помощью политик. Вы можете определить политики PeerAuthenticationи RequestAuthenticationдля обеспечения соблюдения mTLS. Вот пример:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: my-service-peer-authn
spec:
selector:
matchLabels:
app: my-service
mtls:
mode: STRICT
Метод 3: настройка шлюза Istio
Если вы хотите включить строгий mTLS для входящего трафика, вы можете настроить шлюз Istio для принудительного применения mTLS. Вот пример:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: my-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- my-service.com
tls:
mode: MUTUAL
credentialName: my-service-certs
Метод 4. Настройка Istio VirtualService
Вы можете включить mTLS для определенных маршрутов или служб с помощью конфигурации Istio VirtualService. Вот пример:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: my-service
spec:
hosts:
- my-service.com
http:
- route:
- destination:
host: my-service
tls:
mode: MUTUAL
credentialName: my-service-certs
Включение Istio strict mTLS имеет решающее значение для повышения безопасности ваших микросервисов. В этой статье мы рассмотрели несколько методов достижения этой цели, включая внедрение дополнительных функций, политики авторизации, настройку шлюза и настройку виртуальных служб. Следуя этим примерам, вы сможете защитить свои развертывания Istio и микросервисы от несанкционированного доступа.