Изучение методов включения Istio strict mTLS: подробное руководство

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 и микросервисы от несанкционированного доступа.