Включение взаимной Transport Layer Security

Alauda Service Mesh поддерживает настройку защищённого взаимодействия между сервисами с использованием взаимной Transport Layer Security (mTLS) — протокола, обеспечивающего взаимную аутентификацию между клиентами и серверами сервисов.

Содержание

О взаимной Transport Layer Security (mTLS)

В Alauda Service Mesh настройки mTLS можно конфигурировать с помощью ресурса Istio.

Режим STRICT mTLS настраивается с помощью ресурсов PeerAuthentication и DestinationRule.

Изучите следующие ресурсы и концепции Istio для правильной настройки mTLS:

  • PeerAuthentication
    Определяет режим mTLS, принимаемый sidecar-прокси.

    • PERMISSIVE: Принимает как незашифрованный, так и mTLS-трафик.
    • STRICT: Принимается только mTLS-трафик.
  • DestinationRule
    Определяет режим TLS, используемый для трафика, отправляемого sidecar-прокси.

    • DISABLE: Отправляет незашифрованный трафик.
    • SIMPLE, MUTUAL, ISTIO_MUTUAL: Отправляет трафик с использованием TLS.
  • Auto mTLS
    Автоматически включает mTLS для межсетевого взаимодействия независимо от режима PeerAuthentication. Эта функция контролируется полем enableAutoMtls в конфигурации mesh и включена по умолчанию.
    Auto mTLS работает на уровне прокси и не требует изменений в коде приложения.

По умолчанию PeerAuthentication установлен в режим PERMISSIVE, что позволяет sidecar в Service Mesh принимать как незашифрованный, так и mTLS-зашифрованный трафик.

Включение строгого режима mTLS с помощью namespace

Вы можете применить строгий режим mTLS ко всем рабочим нагрузкам в конкретном namespace, создав политику PeerAuthentication.

Пример политики PeerAuthentication для namespace

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: <namespace>
spec:
  mtls:
    mode: STRICT
  1. Укажите <namespace>, к которому применяется режим STRICT mTLS.

Вы можете включить mTLS для всех целевых хостов в <namespace>, создав ресурс DestinationRule с режимом MUTUAL или ISTIO_MUTUAL, если auto mTLS отключён и PeerAuthentication установлен в режим STRICT.

Пример политики DestinationRule для namespace

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: enable-mtls
  namespace: <namespace>
spec:
  host: "*.<namespace>.svc.cluster.local"
  trafficPolicy:
   tls:
    mode: ISTIO_MUTUAL

Включение строгого режима mTLS для всего service mesh

Вы можете применить строгий режим mTLS на уровне всего кластера, создав политику PeerAuthentication в namespace управляющей плоскости (например, istio-system). Namespace должен совпадать со значением поля spec.namespace в ресурсе Istio.

Пример политики PeerAuthentication для всего mesh

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT

Кроме того, создайте ресурс DestinationRule для отключения mTLS при взаимодействии с API-сервером, так как у него нет sidecar. Аналогичные конфигурации DestinationRule применяйте для других сервисов без sidecar.

Пример политики DestinationRule для всего mesh

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: api-server
  namespace: istio-system
spec:
  host: kubernetes.default.svc.cluster.local
  trafficPolicy:
    tls:
      mode: DISABLE

Проверка шифрования с помощью Kiali

Консоль Kiali предоставляет несколько способов проверить, включено ли шифрование mTLS для ваших приложений, сервисов и рабочих нагрузок.

  • Перейдите на страницу Services Detail Overview.
  • На ребрах графа, где активен mTLS, отображается иконка замка.
  • В разделе Network интерфейса mTLS-порты также отмечены иконкой замка.