Как настроить mTLS в Apigee

После установки Apigee mTLS на всех узлах кластера необходимо настроить и инициализировать компонент apigee-mtls. Для этого нужно сгенерировать пару сертификат/ключ и обновить файл конфигурации на компьютере администратора. Затем вы развертываете те же сгенерированные файлы и файл конфигурации на всех узлах кластера и инициализируете локальный компонент apigee-mtls.

Как настроить apigee-mtls (после первоначальной установки)

В этом разделе описано, как настроить Apigee mTLS сразу после первоначальной установки. Информацию об обновлении существующей установки Apigee mTLS можно найти в статье Как изменить существующую конфигурацию apigee-mtls.

Этот раздел относится к установкам в одном центре обработки данных. Информацию о настройке Apigee mTLS в конфигурации с несколькими центрами обработки данных можно найти в статье Как настроить несколько центров обработки данных для Apigee mTLS.

Общий процесс настройки apigee-mtls выглядит следующим образом:

  1. Обновите файл конфигурации. На компьютере администратора обновите файл конфигурации, добавив в него настройки apigee-mtls.
  2. Установите Consul и создайте учетные данные. Установите Consul и (при необходимости) используйте его для создания учетных данных TLS (один раз).

    Кроме того, измените файл конфигурации mTLS Apigee, чтобы:

    1. Добавьте информацию об учетных данных
    2. Определите топологию кластера

    Вы можете использовать существующие учетные данные или сгенерировать их с помощью Consul.

  3. Распространите учетные данные и файл конфигурации. Распространите сгенерированную пару сертификата и ключа, а также обновленный файл конфигурации на все узлы в кластере.
  4. Инициализируйте apigee-mtls. Инициализируйте компонент apigee-mtls на каждом узле.

Ниже описаны все эти шаги.

Шаг 1. Обновите файл конфигурации

В этом разделе рассказывается, как изменить файл конфигурации, чтобы добавить свойства конфигурации mTLS. Общую информацию о файле конфигурации можно найти в разделе Создание файла конфигурации.

После того как вы добавите в файл конфигурации свойства, связанные с mTLS, скопируйте его на все узлы кластера, прежде чем инициализировать на них компонент apigee-mtls.

могут возникнуть проблемы.

Чтобы обновить файл конфигурации:

  1. На компьютере администратора откройте файл конфигурации для редактирования.
  2. Скопируйте приведенный ниже набор свойств конфигурации mTLS и вставьте их в файл конфигурации:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"

    Задайте для каждого свойства значение, соответствующее вашей конфигурации.

    В таблице ниже описаны свойства конфигурации.

    Свойство Описание
    ALL_IP Список частных IP-адресов хостов всех узлов в кластере, разделенных пробелами.

    Порядок IP-адресов не имеет значения, но он должен быть одинаковым во всех файлах конфигурации кластера.

    Если вы настраиваете Apigee mTLS для нескольких центров обработки данных, укажите все IP-адреса для всех хостов во всех регионах.

    LDAP_MTLS_HOSTS Частный IP-адрес хоста узла SymasLDAP в кластере.
    ZK_MTLS_HOSTS

    Список частных IP-адресов хостов, на которых размещены узлы ZooKeeper в кластере, разделенных пробелами.

    Обратите внимание, что согласно требованиям должно быть не менее трех узлов ZooKeeper.

    CASS_MTLS_HOSTS Список частных IP-адресов хостов, на которых размещены серверы Cassandra в кластере, разделенных пробелами.
    PG_MTLS_HOSTS Список IP-адресов частных хостов, на которых размещены серверы Postgres в кластере, разделенных пробелами.
    RT_MTLS_HOSTS Список частных IP-адресов хостов, на которых размещены маршрутизаторы в кластере, разделенных пробелами.
    MTLS_ENCAPSULATE_LDAP Шифрует трафик LDAP между Message Processor и сервером LDAP. Должен принимать значение y.
    MS_MTLS_HOSTS Список IP-адресов частных хостов, на которых размещены узлы сервера управления в кластере. Адреса разделяются пробелами.
    MP_MTLS_HOSTS Список IP-адресов частных хостов, на которых размещены процессоры сообщений в кластере. Адреса разделяются пробелами.
    QP_MTLS_HOSTS Список IP-адресов частных хостов, на которых размещены серверы Qpid в кластере, разделенных пробелами.
    ENABLE_SIDECAR_PROXY Определяет, должны ли Cassandra и Postgres знать о сервисной сетке.

    Укажите значение "y".

    ENCRYPT_DATA Ключ шифрования с кодировкой Base64, используемый Consul. Этот ключ был создан с помощью команды consul keygen на шаге 2: установите Consul и создайте учетные данные.

    Это значение должно быть одинаковым для всех узлов кластера.

    PATH_TO_CA_CERT Расположение файла сертификата на узле. Этот файл был создан на шаге 2.

    Этот путь должен быть одинаковым для всех узлов кластера, чтобы файлы конфигурации были одинаковыми.

    Сертификат должен быть закодирован в формате X509v3.

    PATH_TO_CA_KEY Местоположение файла ключа на узле. Вы создали этот файл на шаге 2.

    Этот путь должен быть одинаковым для всех узлов кластера, чтобы файлы конфигурации были одинаковыми.

    Файл ключа должен быть закодирован по стандарту X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    Количество дней, в течение которых действует сертификат, когда вы создаете специальный сертификат.

    Значение по умолчанию – 365. Максимальное значение – 7865 дней (5 лет).

    Помимо перечисленных выше свойств, при установке Apigee mTLS в конфигурации с несколькими центрами обработки данных используются ещё несколько свойств. Подробнее о том, как настроить несколько центров обработки данных…

  3. Убедитесь, что для параметра ENABLE_SIDECAR_PROXY задано значение "y".
  4. Обновите IP-адреса в свойствах, связанных с хостом. При обращении к каждому узлу используйте частные IP-адреса, а не общедоступные.

    На следующих этапах вы зададите значения других свойств, например ENCRYPT_DATA, PATH_TO_CA_CERT и PATH_TO_CA_KEY. Вы ещё не задали их значения.

    При редактировании свойств конфигурации apigee-mtls учитывайте следующее:

    • Все свойства являются строками, поэтому значения всех свойств нужно заключать в одинарные или двойные кавычки.
    • Если у значения, связанного с хостом, несколько частных IP-адресов, разделяйте их пробелами.
    • Для всех свойств, связанных с хостом, в файле конфигурации используйте частные IP-адреса, а не имена хостов или общедоступные IP-адреса.
    • Порядок IP-адресов в значении свойства должен быть одинаковым во всех файлах конфигурации кластера.
  5. Сохраните изменения в файле конфигурации.

Шаг 2. Установите Consul и создайте учетные данные

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

Вы можете создать учетные данные одним из следующих способов:

  • (Рекомендуется) Создайте собственный центр сертификации с помощью Consul, как описано в этом разделе.
  • Как использовать учетные данные существующего центра сертификации с Apigee mTLS (расширенная настройка)

Об учетных данных

Учетные данные состоят из следующих элементов:

  • Сертификат – сертификат TLS.
  • Ключ: открытый ключ TLS.
  • Сообщение Gossip: ключ шифрования в кодировке Base64.

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

Дополнительную информацию о реализации шифрования в Consul можно найти в следующих источниках:

Как установить Consul и создать учетные данные

Чтобы создать учетные данные, которые Apigee mTLS использует для аутентификации защищенной связи между узлами в кластере частного облака, используйте локальный двоичный файл Consul . Поэтому вам необходимо установить Consul на компьютер администратора, прежде чем вы сможете сгенерировать учетные данные.

Как установить Consul и сгенерировать учетные данные mTLS

  1. На компьютере администратора скачайте двоичный файл Consul 1.8.0 с сайта HashiCorp.
  2. Извлеките содержимое скачанного архива. Например, извлеките содержимое в папку /opt/consul/.
  3. На компьютере администратора создайте новый центр сертификации, выполнив следующую команду:
    /opt/consul/consul tls ca create

    Consul создает следующие файлы, которые образуют пару сертификата и ключа:

    • consul-agent-ca.pem (сертификат)
    • consul-agent-ca-key.pem (ключ)

    По умолчанию файлы сертификатов и ключей кодируются по стандарту X509v3.

    Позже вы скопируете эти файлы на все узлы кластера. Однако сейчас вам нужно только решить, где на узлах будут размещены эти файлы. Они должны находиться в одном и том же месте на каждом узле. Пример: /opt/apigee/.

  4. В файле конфигурации задайте для переменной PATH_TO_CA_CERT путь к местоположению, в которое вы скопируете файл consul-agent-ca.pem на узле. Пример:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Установите для параметра PATH_TO_CA_KEY значение местоположения, в которое вы скопируете файл consul-agent-ca-key.pem на узле. Пример:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. Создайте ключ шифрования для Consul, выполнив следующую команду:
    /opt/consul/consul keygen

    Consul выводит случайную строку, похожую на следующую:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Скопируйте сгенерированную строку и задайте ее в качестве значения свойства ENCRYPT_DATA в файле конфигурации. Пример:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. Сохраните файл конфигурации.

В примере ниже показаны настройки, связанные с mTLS, в файле конфигурации (с примерами значений):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

Шаг 3. Распространите файл конфигурации и учетные данные

Скопируйте следующие файлы на все узлы, используя такой инструмент, как scp:

  • Файл конфигурации. Скопируйте обновленную версию этого файла и замените существующую версию на всех узлах (не только на узлах, на которых работает ZooKeeper).
  • consul-agent-ca.pem: Скопируйте в местоположение, указанное в качестве значения PATH_TO_CA_CERT в файле конфигурации.
  • consul-agent-ca-key.pem: Скопируйте в местоположение, указанное в качестве значения PATH_TO_CA_KEY в файле конфигурации.

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

Шаг 4. Инициализируйте apigee-mtls

После того как вы установили apigee-mtls на каждом узле, обновили файл конфигурации, скопировали его и учетные данные на все узлы кластера, можно инициализировать компонент apigee-mtls на каждом узле.

Чтобы инициализировать apigee-mtls:

  1. Войдите в узел кластера как пользователь root. Вы можете выполнить эти действия на узлах в любом порядке.
  2. Сделайте пользователя apigee:apigee владельцем обновленного файла конфигурации, как показано в следующем примере:
    chown apigee:apigee config_file
  3. Настройте компонент apigee-mtls, выполнив следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. Выполните следующую команду, чтобы убедиться, что настройка выполнена успешно (необязательно):
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Запустите Apigee mTLS, выполнив следующую команду:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    После установки Apigee mTLS необходимо запустить этот компонент до любых других компонентов на узле.

  6. (Только для узлов Cassandra) Для работы в защищенной сети Cassandra требуются дополнительные аргументы. В результате вам нужно будет выполнить следующие команды на каждом узле Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Только для узлов Postgres) Для работы в защищенной сети Postgres требует дополнительных аргументов. Поэтому на узлах Postgres необходимо выполнить следующие действия:

    (только для основного адреса)

    1. Выполните следующие команды на основном узле Postgres:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (только в режиме ожидания)

    1. Создайте резервную копию существующих данных Postgres. Чтобы установить Apigee mTLS, необходимо повторно инициализировать основной и резервный узлы, поэтому произойдет потеря данных. Подробнее о том, как настроить репликацию основного и резервного серверов для Postgres…
    2. Чтобы удалить все данные Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Настройте Postgres, а затем перезапустите его, как показано в примере ниже.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    Если вы устанавливаете продукт в топологии с несколькими центрами обработки данных, используйте абсолютный путь к файлу конфигурации.

  8. Запустите оставшиеся компоненты Apigee на узле в порядке запуска, как показано в следующем примере:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. Повторите этот процесс для каждого узла в кластере.
  10. При необходимости проверьте, успешно ли выполнена инициализация apigee-mtls , одним или несколькими из следующих способов:
    1. Как проверить конфигурацию iptables
    2. Как проверить статус удаленного прокси-сервера
    3. Как проверить статус кворума

    Каждый из этих способов описан в разделе Проверка конфигурации.

Как изменить существующую конфигурацию apigee-mtls

Чтобы изменить существующую конфигурацию apigee-mtls, необходимо удалить и заново установить apigee-mtls. Кроме того, убедитесь, что настройки применены ко всем узлам.

При изменении существующей конфигурации Apigee mTLS:

  • Если вы измените файл конфигурации, сначала удалите apigee-mtls и снова запустите setup или configure:
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • Необходимо удалить и повторно запустить setup или configure на всех узлах кластера, а не только на одном.