Введение в Apigee mTLS

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

Архитектурный обзор

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

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

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

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

Источник Место назначения
Сервер управления Узлы Router, MP, QPid, LDAP, Postgres, Zookeeper и Cassandra
Маршрутизатор Петлевая обратная связь; Узлы Qpid, Zookeeper и Cassandra
Процессор сообщений Петлевая обратная связь; Узлы Qpid, Zookeeper и Cassandra
Zookeeper и Кассандра Другие узлы Zookeeper и Cassandra
Пограничный интерфейс SMTP (только для внешнего IDP)
Постгрес Другие узлы Postgres, Zookeeper и Cassandra.

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

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

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

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

Все это происходит прозрачно для 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. Создайте и распространите пару сертификат/ключ и ключ шифрования сплетен.
  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), чтобы принимать запросы от всех узлов в кластере:

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

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

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, должны разрешать внешние подключения к портам в следующих диапазонах:

Компонент Апигей Диапазон Количество портов, необходимых на узел
Апиджи mTLS с 10700 до 10799 1
Кассандра от 10100 до 10199 2
Процессор сообщений от 10500 до 10599 2
OpenLDAP от 10200 до 10299 1
Постгрес от 10300 до 10399 3
Qpid от 10400 до 10499 2
Маршрутизатор от 10600 до 10699 2
Работник зоопарка от 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 .

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

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

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