Функция Apigee mTLS обеспечивает безопасность обмена данными между компонентами кластера Edge for Private Cloud. Она обеспечивает стандартный для отрасли способ настройки и установки сервисной сети. Она поддерживает управление пакетами и автоматизацию настройки.
Архитектурный обзор
Для обеспечения безопасной связи между компонентами 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 | |
Edge UI | 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 рекомендует иметь в кластере узел, на котором вы сможете выполнять различные административные задачи, описанные в этом документе, включая:
- Установите HashiCorp Consul 1.6.2.
- Сгенерируйте и распространите пару сертификат/ключ и ключ шифрования Gossip.
- Обновите и распространите файл конфигурации.
При настройке административной машины:
- Убедитесь, что у вас есть root-доступ к нему.
- Загрузите и установите на него утилиты
apigee-service
иapigee-setup
, как описано в разделе Установка утилиты Edge apigee-setup . - Убедитесь, что вы можете использовать
scp/ssh
для доступа ко всем узлам кластера с административной машины. Это необходимо для распространения файла конфигурации и учётных данных.
Использование и назначение портов
В этом разделе описывается использование портов и назначение портов для поддержки связи Consul с Apigee mTLS.
Использование порта: все узлы, на которых запущен apigee-mtls
Все узлы кластера, использующие службу apigee-mtls
должны разрешать подключения от служб на локальном хосте (127.0.0.1). Это позволит прокси-серверам Consul взаимодействовать с другими службами при обработке входящих и исходящих сообщений.
Использование порта: узлы сервера Consul (узлы, на которых работает ZooKeeper)
Вам необходимо открыть большинство из следующих портов на узлах сервера Consul (узлах, на которых работает ZooKeeper) для приема запросов от всех узлов в кластере:
Узел | Порт сервера консула | Описание | Протокол | Разрешить внешние mtls-агенты * |
---|---|---|---|---|
Консул-сервер (узлы ZooKeeper) | 8300 | Объединяет все серверы Consul в кластере. | RPC | |
8301 | Обрабатывает сообщения о членстве и широковещательные сообщения внутри кластера. | UDP/TCP | ||
8302 | Порт WAN, который обрабатывает сообщения о членстве и широковещательные сообщения в конфигурации с несколькими центрами обработки данных . | UDP/TCP | ||
8500 | Обрабатывает HTTP-подключения к API-интерфейсам Consul Server из процессов на том же узле. Этот порт не используется для удаленной связи или координации; он прослушивает только локальный хост. | HTTP | ||
8502 | Обрабатывает подключения gRPC+HTTPS к API-интерфейсам Consul Server с других узлов кластера. | gRPC+HTTPS | ||
8503 | Обрабатывает HTTPS-подключения к API-интерфейсам Consul Server с других узлов кластера. | 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 |
Кассандра | 10100 – 10199 | 2 |
Процессор сообщений | 10500–10599 | 2 |
SymasLDAP | 10200–10299 | 1 |
Постгрес | 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 .
Терминология
В этом разделе используется следующая терминология:
Срок | Определение |
---|---|
кластер | Группа машин, составляющих вашу установку Edge для частного облака. |
Консул | Сервисная сеть, используемая Apigee mTLS. Подробнее о том, как Consul защищает соединения в вашем частном облаке, см. в разделе «Модель безопасности Consul» . |
mTLS | Взаимная аутентификация TLS. |
сервисная сетка | Наложенная сеть (или сеть внутри сети). |
ТЛС | Transaction Layer Security (Безопасность транзакционного уровня). Стандартный протокол аутентификации для безопасной связи. |