Функция mTLS Apigee обеспечивает дополнительную защиту при обмене данными между компонентами кластера Edge для частного облака. Это стандартный способ настройки и установки сетки сервисов. Он поддерживает управление пакетами и автоматизацию конфигурации.
Обзор архитектуры
Для обеспечения безопасной связи между компонентами Apigee mTLS использует сервисную сетку, которая устанавливает безопасные соединения TLS с взаимной аутентификацией между компонентами.
На изображении ниже показаны подключения между компонентами Apigee, которые защищает Apigee mTLS (in red). Порты, указанные на изображении, являются примерами. Список диапазонов, которые может использовать каждый компонент, приведен в разделе Использование портов.

(Обратите внимание, что порты, отмеченные буквой "М", используются для управления компонентом и должны быть открыты на компоненте для доступа к серверу управления.)
Как показано на схеме выше, Apigee mTLS обеспечивает безопасность подключений между большинством компонентов кластера, в том числе:
| Источник | Место назначения | |
|---|---|---|
| Сервер управления | Узлы маршрутизатора, 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 на каждом узле кластера:
- Исходящий прокси-сервер, который перехватывает исходящие письма на узле хоста. Этот сервис шифрует исходящие письма перед отправкой получателям.
- Прокси-сервер входящего трафика, который перехватывает входящие сообщения на узле хоста. Этот сервис расшифровывает входящие письма перед отправкой получателю.
Например, когда сервер управления отправляет сообщение маршрутизатору, исходящий прокси-сервис перехватывает исходящее сообщение, шифрует его и отправляет маршрутизатору. Когда узел маршрутизатора получает сообщение, входящий прокси-сервис расшифровывает его и передает компоненту маршрутизатора для обработки.
Все это происходит незаметно для компонентов Edge: они не знают о процессе шифрования и расшифровки, выполняемом прокси-сервисами Consul.
Кроме того, Apigee mTLS использует утилиту iptables – сервис межсетевого экрана Linux, который управляет перенаправлением трафика.
Требования
Прежде чем устанавливать Apigee mTLS, убедитесь, что ваша среда соответствует следующим требованиям:
- Требования к топологии
- Утилиты установлены и включены
- Аккаунт пользователя с нужным уровнем разрешений
- Административный компьютер (рекомендуется)
- Использование портов
Ниже вы найдете подробное описание каждого из этих требований.
Требования к топологии
Для Apigee mTLS требуется, чтобы топология вашей среды включала не менее трех узлов Zookeeper. Поэтому Apigee mTLS можно установить только на топологии, в которых используется 5, 9, 12 (несколько центров обработки данных) или 13 узлов. Дополнительную информацию можно найти в разделе Топологии установки.
Утилиты/пакеты
Для Apigee mTLS требуется, чтобы на каждой машине в кластере, включая административную машину, были установлены и включены следующие пакеты, прежде чем вы начнете процесс установки:
| Утилита/пакет | Описание | Можно ли удалить после установки? |
|---|---|---|
base64 |
Проверяет данные в скриптах установки. | |
gnu-bashgnu-sedgnu-grep |
Используется скриптом установки и другими распространенными инструментами. | |
iptables |
Заменяет брандмауэр по умолчанию, firewalld. |
|
iptables-services |
Предоставляет функции для утилиты iptables. |
|
lsof |
Используется скриптом установки. | |
nc |
Для подтверждения маршрутов iptables. |
|
openssl |
Подписывает сертификаты локально во время первоначальной загрузки. |
Во время установки на управляющий компьютер также устанавливается пакет Consul, чтобы вы могли сгенерировать учетные данные и ключ шифрования.
Пакет apigee-mtls устанавливает и настраивает серверы Consul, в том числе прокси-серверы входящего и исходящего трафика на узлах ZooKeeper в кластере.
Разрешения аккаунта пользователя
Перед установкой создайте новый аккаунт пользователя или убедитесь, что у вас есть доступ к аккаунту с повышенными правами.
Аккаунт, который выполняет установку Apigee mTLS на каждом узле кластера, должен иметь возможность:
- Как запускать, останавливать, перезапускать и инициализировать компоненты Apigee
- Как задать правила брандмауэра
- Создайте новый аккаунт пользователя ОС/системы
- Включение, отключение, запуск, остановка и маскировка сервисов с помощью
systemctl
Административный компьютер (рекомендуется)
Apigee рекомендует иметь в кластере узел, на котором можно выполнять различные административные задачи, описанные в этом документе, в том числе:
- Установите HashiCorp Consul 1.6.2.
- Сгенерируйте и распространите пару сертификатов/ключей и ключ шифрования gossip.
- Обновите и распространите файл конфигурации.
При настройке управляющего компьютера:
- Убедитесь, что у вас есть права root.
- Скачайте и установите на него утилиты
apigee-serviceиapigee-setup, как описано в разделе Установка утилиты Edge apigee-setup. - Убедитесь, что вы можете использовать
scp/sshдля доступа ко всем узлам кластера с компьютера администратора. Это необходимо, чтобы вы могли распространять файл конфигурации и учетные данные.
Использование и назначение портов
В этом разделе описывается использование портов и их назначение для поддержки связи Consul с Apigee mTLS.
Использование портов: все узлы, на которых выполняется apigee-mtls
Все узлы в кластере, использующие сервис apigee-mtls, должны разрешать подключения от сервисов на localhost (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 |
| SymasLDAP | 10200–10299 | 1 |
| Postgres | 10300–10399 | 3 |
| Qpid | 10400–10499 | 2 |
| Маршрутизатор | 10600–10699 | 2 |
| ZooKeeper | 10000–10099 | 3 |
Consul назначает порты в простом линейном порядке. Например, если в кластере два узла Postgres, первый узел использует два порта, поэтому Consul назначает ему порты 10300 и 10301. Второй узел также использует два порта, поэтому консоль назначает ему порты 10302 и 10303. Это относится ко всем типам компонентов.
Как видите, фактическое количество портов зависит от топологии. Если в вашем кластере два узла Postgres, вам нужно открыть четыре порта (два узла по два порта на каждый).
Обратите внимание:
- Прокси-серверы Consul не могут прослушивать те же порты, что и сервисы Apigee.
- У Consul только одно адресное пространство портов. Назначения портов прокси-сервера Consul должны быть уникальными в кластере, включая центры обработки данных. Это означает, что если прокси-сервер А на хосте А прослушивает порт 15000, то прокси-сервер Б на хосте Б не может прослушивать порт 15000.
- Количество используемых портов зависит от топологии, как описано выше.
В конфигурации с несколькими центрами обработки данных все хосты, на которых выполняется mTLS, также должны открыть порт 8302.
Вы можете настроить порты по умолчанию, которые использует Apigee mTLS. Подробнее о том, как настроить диапазон портов прокси-сервера…
Ограничения
У Apigee mTLS есть следующие ограничения:
- Не шифрует межсетевые коммуникации Cassandra (порт 7000)
- Настройка и установка не идемпотентны. Это означает, что если вы внесете изменение в один узел, вам нужно будет внести такое же изменение во все остальные узлы. Система не применит это изменение к другим узлам. Подробнее о том, как изменить существующую конфигурацию apigee-mtls…
Терминология
В этом разделе используются следующие термины:
| Термин | Определение |
|---|---|
| Кластер | Группа машин, составляющих установку Edge для частного облака. |
| Consul | Сервисная сетка, используемая Apigee mTLS. Информацию о том, как Consul защищает связь в частном облаке, можно найти в модели безопасности Consul. |
| mTLS | Взаимная аутентификация TLS. |
| сервисная сетка | Оверлейная сеть (сеть в сети). |
| TLS | Протокол TLS. Отраслевой стандартный протокол аутентификации для безопасной передачи данных. |