Расширения знаков

Материал из Документация Ключ-АСТРОМ

Каждое расширение, загружаемое в среду Ключ-АСТРОМ, должно быть подписано, чтобы Ключ-АСТРОМ мог проверить подлинность и целостность расширения.

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

Ниже описаны два способа подписания и создания вашего расширения:

  • С использованием Ключ-АСТРОМ CLI — рекомендуется
  • С использованием OpenSSL — ручная процедура

Использование Ключ-АСТРОМ CLI

Ключ-АСТРОМ CLI (ka-cli) — это утилита командной строки, которая поможет вам разрабатывать, подписывать и создавать расширения для фреймворка Ключ-АСТРОМ Расширения 2.0.

Это позволяет вам:

  • Собирать и подписывать расширения из исходного кода
  • Генерировать сертификаты разработки для подписи расширения
  • Генерировать сертификаты CA для разработки

Подробную информацию см. на GitHub.

Предустановка

Предварительные условия для использования Ключ-АСТРОМ CLI для подписи и сборки вашего расширения:

  • Python 3.8 или 3.9
  • Доступ к установщику пакетов pip для Python
  • Просмотр разрешения среды на уровне среды
  • Сохраните файл extension.yaml и ваши ресурсы в директории src, используя следующую структуру:
my-sample-extension/

  └── src/

      ├── extension.yaml

      dashboards/

      └── dashboard.json

      alerts/

      └── alert.json

Чтобы подписать и создать расширение с помощью Ключ-АСТРОМ CLI, выполните следующие действия:

  1. Установите Ключ-АСТРОМ CLI
  2. Сгенерируйте сертификаты
  3. Добавьте корневой сертификат в хранилище учетных данных Ключ-АСТРОМ
  4. Постройте и подпишите расширение
  5. Загрузите пакет расширения в вашу среду Ключ-АСТРОМ
  6. Загрузите корневой сертификат на хосты

Установка Ключ-АСТРОМ CLI

pip install dt-cli

Генерация сертификатов

Эта команда генерирует ваши корневые сертификаты и сертификаты разработчика. Перейдите в директорию my-sample-extension и выполните следующие команды:

mkdir secrets

cd secrets

dt extension genca --no-ca-passphrase

dt extension generate-developer-pem -o developer.pem --ca-crt ca.pem --ca-key ca.key --name 'JDoe'

Команда генерирует следующие файлы:

  • developer.pem- Ваш сертификат разработчика и ключ
  • ca.pem- Ваш корневой сертификат
  • ca.key- Ваш корневой ключ

Обратите внимание, что закрытый ключ генерируется в файле developer.pem вместе с сертификатом.

Пример успешного вывода:

>_ mkdir secrets

>_ cd secrets

>_ dt extension genca --no-ca-passphrase

Generating CA...

Wrote CA private key: ./ca.key

Wrote CA certificate: ./ca.pem

>_ dt extension generate-developer-pem -o developer.pem --ca-crt ca.pem --ca-key ca.key --name 'JDoe'

Loading CA private key ca.key

Loading CA certificate ca.pem

Generating developer certificate...

Wrote developer private key: developer.pem

Wrote developer certificate: developer.pem

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

Добавление корневого сертификата в хранилище учетных данных Ключ-АСТРОМ

  1. Перейдите в хранилище учетных данных.
  2. Выберите Добавить новые учетные данные.
  3. В качестве типа учетных данных выберите Открытый сертификат.
  4. Выберите область действия учетных данных проверки расширения.
  5. Добавьте имя учетных данных.
  6. Загрузите файл корневого сертификата.
  7. Выберите Сохранить.

Постройка и подписание расширения

В директории my-sample-extension выполните следующую команду:

dt extension assemble

Это создаст архив extension.zip, готовый к подписанию.

Для подписи выполните следующую команду:

dt extension sign --key secrets/developer.pem

Эта команда создает ваш пакет расширения , который содержит только архив extension.zip и файл подписи extension.zip.sig.

bundle.zip

|    extension.zip

|    extension.zip.sig

Пример успешного вывода:

>_ dt ext assemble

Building extension.zip from src

Adding file: src/alerts/palo-alto_temperature_max.json as alerts/palo-alto_temperature_max.json

Adding file: src/alerts/palo-alto_fan_speed.json as alerts/palo-alto_fan_speed.json

Adding file: src/extension.yaml as extension.yaml

Adding file: src/dashboards/palo-alto-generic-default.json as dashboards/palo-alto-generic-default.json

Wrote extension.zip file

>_ dt ext sign --key secrets/developer.pem

Загрузка пакета расширений в вашу среду Ключ-АСТРОМ

В директории my-sample-extension выполните следующую команду:

dt extension upload bundle.zip

Эта команда загружает пакет расширения в среду Ключ-АСТРОМ, откуда он распространяется на хосты ЕдиногоАгента или АктивногоШлюза.

Более подробную информацию см. в разделе Управление жизненным циклом расширений 2.0.

Загрузка корневого сертификата на хосты

Загрузите корневой сертификат на хосты, на которых запущены ваши расширения.

Для получения дополнительной информации см. раздел Загрузка корневого сертификата ниже.

Использование OpenSSL

Чтобы подписать расширение вручную, используйте OpenSSL. Для Windows вам необходимо загрузить и установить двоичный файл OpenSSL по вашему выбору. Мы протестировали процедуру с OpenSSL 1.1.1k.

  1. Создайте корневой ключ и сертификат
  2. Добавьте свой корневой сертификат в хранилище учетных данных Ключ-АСТРОМ
  3. Создайте сертификат разработчика
  4. Подпишите свое расширение
  5. Проверьте подпись
  6. Создайте пакет расширения

Создание корневого ключа и сертификата

Ваша компания должна выдавать сертификаты разработчиков из общекорпоративного корневого сертификата. Когда разработчики подписывают свои расширения с помощью собственных сертификатов разработчиков, Ключ-АСТРОМ сможет проверить подлинность расширения по вашему корневому сертификату, хранящемуся в хранилище учетных данных Ключ-АСТРОМ и на хостах, где выполняются расширения.

Выполните следующие команды для генерации корневого сертификата вашей организации. Не устанавливайте пароль. Сертификаты, защищенные паролем, не поддерживаются Ключ-АСТРОМ.

openssl genrsa -out root.key 2048

openssl req -new -key root.key -out root.csr

При генерации корневого сертификата необходимо указать расширение сертификата, указав свойство -extfile на файл ca.txt. Файл должен содержать следующие данные:

basicConstraints=critical, CA:true, pathlen:0

subjectKeyIdentifier    = hash

authorityKeyIdentifier  = keyid:always

keyUsage                = keyCertSign

openssl x509 -req -days 10000 -in root.csr -signkey root.key -out root.pem -extfile ca.txt

Это сгенерирует ваш корневой сертификат root.pem.

Обратите внимание, что вы также можете использовать существующий корневой сертификат для генерации сертификатов разработчика. Ключ-АСТРОМ принимает только форматы PFX, P12 и PEM, поэтому вам может потребоваться преобразовать существующий сертификат в один из разрешенных форматов. Инструкции по преобразованию см. в документации OpenSSL.

Добавление своего корневого сертификата в хранилище учетных данных Ключ-АСТРОМ

  1. Перейдите в хранилище учетных данных.
  2. Выберите Добавить новые учетные данные.
  3. В качестве типа учетных данных выберите Открытый сертификат.
  4. Выберите область действия учетных данных проверки расширения.
  5. Добавьте имя учетных данных.
  6. Загрузите файл корневого сертификата.
  7. Выберите Сохранить.

Создание сертификата разработчика

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

Создание запроса на подпись сертификата разработчика

Выполните следующие команды для создания запроса на подпись сертификата (CSR) для корневого центра сертификации:

openssl genrsa -out developer.key 2048
openssl req -new -key developer.key -out developer.csr

При заполнении полей отличительного имени (DN) убедитесь, что хотя бы одно из полей отличается от DN, которое вы определили для корневого сертификата.

Результатом является developer.csrCSR, который вы будете использовать для выпуска сертификата разработчика из корневого сертификата.

Генепация сертификата разработчика

Для генерации сертификата разработчика выполните следующие команды:

openssl req -new -key developer.key -out developer.csr

При генерации сертификата разработчика необходимо явно указать расширение сертификата, указав свойство -extfile на файл developer.txt. Файл должен содержать следующие данные:

subjectKeyIdentifier    = hash

authorityKeyIdentifier  = keyid:always

keyUsage                = digitalSignature

openssl x509 -req -days 10000 -in developer.csr -CA root.pem -CAkey root.key -CAcreateserial -out developer.pem -extfile developer.txt

Результатом является файл сертификата developer.pem, который вы будете использовать для подписи своих расширений.

Подписание своего расширение

При наличии сертификата разработчика используйте следующую команду для подписи вашего расширения. Убедитесь, что ваш файл extension.zip находится в директории, из которой вы запускаете команду.

openssl cms -sign -signer developer.pem -inkey developer.key -binary -in extension.zip -outform PEM -out extension.zip.sig

Результатом является файл подписи extension.zip.sig.

Проверка подписи

  • Проверка подписи на Linux:
openssl cms -verify -CAfile root.pem -in extension.zip.sig -binary -content extension.zip -inform PEM -out /dev/null
  • Проверка подписи на Windows:
openssl cms -verify -CAfile root.pem -in extension.zip.sig -binary -content extension.zip -inform PEM -out NUL

Вывод должен содержать фразу Verification successful.

Создание пакета расширения

На последнем этапе создайте пакет расширения, содержащий только архив extension.zip и файл подписи extension.zip.sig.

bundle.zip

|    extension.zip

|    extension.zip.sig

Теперь вы можете загрузить пакет расширения в свою среду Ключ-АСТРОМ. Для получения дополнительной информации см. Управление жизненным циклом расширений 2.0.

Загрузка своего корневого сертификата

Каждый хост, на котором запущено ваше расширение, будь то ЕдиныйАгент или АктивныйШлюз, должен иметь корневой сертификат, сохраненный в выделенной директории. Этот дополнительный шаг необходим для повышения безопасности фреймворка Расширений 2.0.

Сделав это:

  • Вы проверяете подлинность распространяемых расширений
  • Вы предотвращаете потенциальное распространение вредоносных расширений злоумышленником, который может взять под контроль вашу среду.

Для расширений JMX вам нужно только разместить сертификат в кластере Ключ-АСТРОМ.

Удаленные расширения

Загрузите свой корневой сертификат на каждый хост АктивногоШлюза в группе АктивныхШлюзов, выбранной для запуска ваших расширений.

Сохраните файл сертификата root.pem в следующем месте:

  • Linux: <CONFIG>/remotepluginmodule/agent/conf/certificates/ (по умолчанию: /var/lib/astromkey/remotepluginmodule/agent/conf/certificates/)
  • Windows: %PROGRAMDATA%\astromkey\remotepluginmodule\agent\conf\certificates

Локальные расширения

Загрузите свой корневой сертификат на каждый хост ЕдиногоАгента или каждый хост ЕдиногоАгента в группе хостов, выбранной для запуска ваших расширений.

Сохраните файл сертификата root.pem в следующем месте:

  • Linux: /var/lib/astromkey/oneagent/agent/config/certificates
  • Windows: %PROGRAMDATA%\astromkey\oneagent\agent\config\certificates