Настройка Apigee mTLS

После установки 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 (только один раз).

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

    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"
    TLS_MIN_VERSION="tls12"
    TLS_CIPHER_SUITES="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
    

    Установите значение каждого свойства в соответствии с вашей конфигурацией.

    В следующей таблице описаны эти свойства конфигурации:

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

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

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

    LDAP_MTLS_HOSTS IP-адрес частного хоста узла OpenLDAP в кластере.
    ZK_MTLS_HOSTS

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

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

    CASS_MTLS_HOSTS Разделенный пробелами список IP-адресов частных хостов, на которых в кластере размещены серверы Cassandra.
    PG_MTLS_HOSTS Разделенный пробелами список IP-адресов частных хостов, на которых в кластере размещены серверы Postgres.
    RT_MTLS_HOSTS Разделенный пробелами список IP-адресов частных хостов, на которых размещены маршрутизаторы в кластере.
    MTLS_ENCAPSULATE_LDAP Шифрует трафик LDAP между процессором сообщений и сервером LDAP. Установите значение y .
    MS_MTLS_HOSTS Разделенный пробелами список IP-адресов частных хостов, на которых в кластере размещены узлы Management Server.
    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: установите Consul и сгенерируйте учетные данные .

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

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

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

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

    Ключевой файл должен иметь кодировку X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

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

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

    TLS_MIN_VERSION Указывает минимально допустимую версию TLS. Установите значение tls12 чтобы обеспечить соблюдение минимума TLS 1.2.
    TLS_CIPHER_SUITES Список разрешенных наборов шифров TLS, разделенный запятыми.

    Например: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    В дополнение к свойствам, перечисленным выше, Apigee mTLS использует несколько дополнительных свойств при установке в конфигурации с несколькими центрами обработки данных. Дополнительные сведения см. в разделе Настройка нескольких центров обработки данных .

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

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

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

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

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

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

Для создания учетных данных необходимо выбрать один из следующих методов:

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

О полномочиях

Полномочия состоят из следующего:

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

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

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

Установите Consul и сгенерируйте учетные данные

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

Чтобы установить Consul и сгенерировать учетные данные mTLS:

  1. На своем административном компьютере загрузите двоичный файл Consul 1.8.0 с сайта HashiCorp .
  2. Извлеките содержимое скачанного архивного файла. Например, извлеките содержимое в /opt/consul/ .
  3. На компьютере администрирования создайте новый центр сертификации (CA), выполнив следующую команду:
    /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, а затем перезапустите 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 на всех узлах кластера, а не только на одном узле.