Общие сведения о Apigee mTLS

Функция Apigee mTLS повышает безопасность обмена данными между компонентами в кластере Edge для частного облака. Он предоставляет стандартный способ настройки и установки сервисной сетки. Она поддерживает управление пакетами и автоматизацию конфигурации.

Обзор архитектуры

Чтобы обеспечить безопасную связь между компонентами, Apigee mTLS использует сервисную сетку, которая устанавливает безопасные TLS-соединения с взаимной аутентификацией между компонентами.

На следующем изображении показаны соединения между компонентами Apigee, которые защищает Apigee mTLS (in red). Порты, показанные на изображении, являются примерами. Список диапазонов, которые может использовать каждый компонент, приведен в разделе Использование портов.

(Обратите внимание, что порты, помеченные буквой "M", используются для управления компонентом и должны быть открыты на компоненте для доступа со стороны сервера управления.)

Как показано на схеме выше, Apigee mTLS повышает безопасность подключений между большинством компонентов кластера, в том числе:

Источник Место назначения
Сервер управления Узлы Router, MP, QPid, LDAP, Postgres, Zookeeper и Cassandra
Маршрутизатор Loopback; узлы Qpid, Zookeeper и Cassandra
Message Processor Loopback; узлы Qpid, Zookeeper и Cassandra
ZooKeeper и Cassandra; Другие узлы Zookeeper и Cassandra
Интерфейс Edge SMTP (только для внешних поставщиков идентификационной информации)
Postgres Другие узлы Postgres, Zookeeper и Cassandra

Шифрование и расшифровка сообщений

Сервисная сетка Apigee mTLS состоит из серверов Consul, которые работают на каждом узле ZooKeeper в вашем кластере, и следующих сервисов Consul на каждом узле в кластере:

  • Прокси-сервер исходящего трафика, который перехватывает исходящие сообщения на узле хоста. Этот сервис шифрует исходящие сообщения перед отправкой.
  • Прокси-сервер Ingress, который перехватывает входящие сообщения на узле хоста. Этот сервис расшифровывает входящие сообщения перед отправкой в конечный пункт назначения.

Например, когда сервер управления отправляет сообщение маршрутизатору, прокси-сервис исходящего трафика перехватывает исходящее сообщение, шифрует его, а затем отправляет маршрутизатору. Когда узел маршрутизатора получает сообщение, прокси-сервис Ingress расшифровывает его и передает компоненту маршрутизатора для обработки.

Все это происходит прозрачно для компонентов Edge: они не знают о процессе шифрования и дешифрования, выполняемом прокси-сервисами Consul.

Кроме того, Apigee mTLS использует утилиту iptables – сервис брандмауэра Linux, который управляет перенаправлением трафика.

Требования

Прежде чем вы сможете установить Apigee mTLS, ваша среда должна соответствовать следующим требованиям:

Ниже подробно описано каждое из этих требований.

Требования к топологии

Для Apigee mTLS требуется, чтобы топология вашей среды включала как минимум три узла Zookeeper. В результате вы можете установить Apigee mTLS только в топологиях, использующих 5, 9, 12 (несколько центров обработки данных) или 13 узлов. Подробнее о топологиях установки…

Утилиты и пакеты

Перед началом установки Apigee mTLS на каждом компьютере в кластере, включая компьютер администрирования, должны быть установлены и включены следующие пакеты:

Утилита/пакет Описание Можно ли удалить после установки?
base64 Проверяет данные в скриптах установки.
gnu-bash
gnu-sed
gnu-grep
Используется скриптом установки и другими распространенными инструментами.
iptables Заменяет брандмауэр по умолчанию (firewalld).
iptables-services Обеспечивает работу утилиты iptables.
lsof Используется скриптом установки.
nc Проверяет iptables маршрут.
openssl Подписывает сертификаты локально во время начальной загрузки.

Во время установки вы также устанавливаете пакет Consul на администраторский компьютер, чтобы можно было генерировать учетные данные и ключ шифрования.

Пакет apigee-mtls устанавливает и настраивает серверы Consul, включая прокси-серверы входящего и исходящего трафика на узлах ZooKeeper в кластере.

Разрешения аккаунта пользователя

Перед установкой создайте новый аккаунт пользователя или убедитесь, что у вас есть доступ к аккаунту с повышенными привилегиями.

Аккаунт, который выполняет установку Apigee mTLS на каждом узле в кластере, должен иметь возможность:

  • Запуск, остановка, перезапуск и инициализация компонентов Apigee
  • Как настроить правила брандмауэра
  • Создайте новый аккаунт пользователя ОС/системы
  • Включение, отключение, запуск, остановка и маскирование сервисов с помощью systemctl

Компьютер администратора (рекомендуется)

Apigee рекомендует иметь в кластере узел, на котором можно выполнять различные административные задачи, описанные в этом документе, в том числе:

  1. Установите HashiCorp Consul 1.6.2.
  2. Сгенерируйте и распространите пару сертификат/ключ и ключ шифрования Gossip.
  3. Обновите и распространите файл конфигурации.

При настройке компьютера администратора:

  • Убедитесь, что у вас есть root-доступ к нему.
  • Скачайте и установите на него утилиты apigee-service и apigee-setup, как описано в статье Как установить утилиту apigee-setup для Edge.
  • Убедитесь, что вы можете использовать scp/ssh для доступа ко всем узлам в кластере с администраторского компьютера. Это необходимо для распространения файла конфигурации и учетных данных.

Использование и назначение портов

В этом разделе описывается использование портов и их назначение для поддержки связи Consul с Apigee mTLS.

Использование портов: все узлы, на которых запущен apigee-mtls

Все узлы в кластере, использующие сервис apigee-mtls, должны разрешать подключения от сервисов на локальном хосте (127.0.0.1). Это позволяет прокси-серверам Consul взаимодействовать с другими сервисами при обработке входящих и исходящих сообщений.

Использование портов: узлы сервера Consul (узлы, на которых запущен ZooKeeper)

Чтобы принимать запросы от всех узлов в кластере, необходимо открыть большинство из следующих портов на узлах сервера Consul (узлах, на которых запущен ZooKeeper):

Узел Порт сервера Consul Описание Протокол Разрешить внешние агенты mTLS
*
Сервер Consul (узлы ZooKeeper) 8300 Подключает все серверы Consul в кластере. Доход от клика
8301 Управляет членством и широковещательными сообщениями в кластере. UDP/TCP
8302 Порт WAN, который обрабатывает сообщения о членстве и широковещательные сообщения в конфигурации с несколькими центрами обработки данных. UDP/TCP
8500 Обрабатывает HTTP-подключения к API сервера Consul от процессов на том же узле.

Этот порт не используется для удаленной связи или координации. Он прослушивает только localhost.

HTTP
8502 Обрабатывает подключения gRPC+HTTPS к API сервера Consul от других узлов в кластере. gRPC+HTTPS
8503 Обрабатывает HTTPS-подключения к API сервера Consul от других узлов в кластере. HTTPS
8600 Обрабатывает DNS сервера Consul. UDP/TCP
* Apigee рекомендует ограничить входящие запросы только участниками кластера (включая межхранилищные). Это можно сделать с помощью iptables.

Как показано в этой таблице, узлы, на которых запущен компонент consul-server (узлы ZooKeeper), должны открыть порты 8301, 8302, 8502 и 8503 для всех участников кластера, на которых запущен сервис apigee-mtls, даже в разных центрах обработки данных. На узлах, где ZooKeeper не запущен, открывать эти порты не нужно.

Назначения портов для всех узлов Consul (включая узлы, на которых запущен ZooKeeper)

Чтобы обеспечить связь с Consul, узлы, на которых запущены следующие компоненты Apigee, должны разрешать внешние подключения к портам в следующих диапазонах:

Компонент Apigee Диапазон Количество портов, необходимых для каждого узла
Apigee mTLS 10700–10799 1
Cassandra 10100–10199 2
Message Processor 10500–10599 2
OpenLDAP 10200–10299 1
Postgres 10300–10399 3
Qpid 10400–10499 2
Маршрутизатор 10600–10699 2
ZooKeeper 10000–10099 3

Consul назначает порты простым линейным способом. Например, если в кластере два узла Postgres, первый узел использует два порта, поэтому Consul назначает ему порты 10300 и 10301. Второй узел также использует два порта, поэтому Consol назначает ему порты 10302 и 10303. Это относится ко всем типам компонентов.

Как видите, фактическое количество портов зависит от топологии. Если в кластере два узла Postgres, вам нужно открыть четыре порта (по два на узел).

Обратите внимание:

  • Прокси-серверы Consul не могут прослушивать те же порты, что и сервисы Apigee.
  • У Consul только одно адресное пространство портов. Порты прокси-сервера Consul должны быть уникальными в пределах кластера, включая центры обработки данных. Это означает, что если прокси-сервер A на хосте A прослушивает порт 15000, то прокси-сервер B на хосте B не может прослушивать порт 15000.
  • Количество используемых портов зависит от топологии, как описано выше.

В конфигурации с несколькими центрами обработки данных на всех хостах, на которых выполняется mTLS, также должен быть открыт порт 8302.

Вы можете настроить порты по умолчанию, которые использует Apigee mTLS. Подробнее о том, как настроить диапазон портов прокси-сервера…

Ограничения

Apigee mTLS имеет следующие ограничения:

  • Не шифрует обмен данными между узлами Cassandra (порт 7000).
  • Конфигурация и настройка не являются идемпотентными. Это означает, что если вы вносите изменение на одном узле, то должны внести его и на всех остальных. Система не сделает это за вас. Подробнее о том, как изменить существующую конфигурацию apigee-mtls…

Терминология

В этом разделе используется следующая терминология:

Термин Определение
cluster Группа компьютеров, на которых установлена версия Edge для частного облака.
Consul Сервисная сетка, используемая Apigee mTLS. Информацию о том, как Consul защищает обмен данными в Private Cloud, можно найти в статье Модель безопасности Consul.
mTLS Взаимно аутентифицированный TLS.
сервисная сетка Оверлейная сеть (сеть внутри сети).
TLS Протокол TLS. Стандартный отраслевой протокол аутентификации для безопасной передачи данных.