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

Функция 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-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, как описано в разделе Установка утилиты 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. Отраслевой стандартный протокол аутентификации для безопасной передачи данных.