Расширения знаков
Каждое расширение, загружаемое в среду Ключ-АСТРОМ, должно быть подписано, чтобы Ключ-АСТРОМ мог проверить подлинность и целостность расширения.
- В среде разработки каждый разработчик должен иметь уникальный сертификат. Это обеспечивает прослеживаемость изменений.
- В производственной среде каждое расширение должно быть подписано собственным сертификатом. Это гарантирует подлинность каждого расширения.
Ниже описаны два способа подписания и создания вашего расширения:
- С использованием Ключ-АСТРОМ 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, выполните следующие действия:
- Установите Ключ-АСТРОМ CLI
- Сгенерируйте сертификаты
- Добавьте корневой сертификат в хранилище учетных данных Ключ-АСТРОМ
- Постройте и подпишите расширение
- Загрузите пакет расширения в вашу среду Ключ-АСТРОМ
- Загрузите корневой сертификат на хосты
Установка Ключ-АСТРОМ 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. Мы рекомендуем следовать другим практикам безопасности, таким как управление корневыми сертификатами и сертификатами разработчика разными субъектами, а не хранить их в одной директории.
Добавление корневого сертификата в хранилище учетных данных Ключ-АСТРОМ
- Перейдите в хранилище учетных данных.
- Выберите Добавить новые учетные данные.
- В качестве типа учетных данных выберите Открытый сертификат.
- Выберите область действия учетных данных проверки расширения.
- Добавьте имя учетных данных.
- Загрузите файл корневого сертификата.
- Выберите Сохранить.
Постройка и подписание расширения
В директории 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.
- Создайте корневой ключ и сертификат
- Добавьте свой корневой сертификат в хранилище учетных данных Ключ-АСТРОМ
- Создайте сертификат разработчика
- Подпишите свое расширение
- Проверьте подпись
- Создайте пакет расширения
Создание корневого ключа и сертификата
Ваша компания должна выдавать сертификаты разработчиков из общекорпоративного корневого сертификата. Когда разработчики подписывают свои расширения с помощью собственных сертификатов разработчиков, Ключ-АСТРОМ сможет проверить подлинность расширения по вашему корневому сертификату, хранящемуся в хранилище учетных данных Ключ-АСТРОМ и на хостах, где выполняются расширения.
Выполните следующие команды для генерации корневого сертификата вашей организации. Не устанавливайте пароль. Сертификаты, защищенные паролем, не поддерживаются Ключ-АСТРОМ.
| 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.
Добавление своего корневого сертификата в хранилище учетных данных Ключ-АСТРОМ
- Перейдите в хранилище учетных данных.
- Выберите Добавить новые учетные данные.
- В качестве типа учетных данных выберите Открытый сертификат.
- Выберите область действия учетных данных проверки расширения.
- Добавьте имя учетных данных.
- Загрузите файл корневого сертификата.
- Выберите Сохранить.
Создание сертификата разработчика
Чтобы создать свой сертификат разработчика, вам необходимо создать запрос на подпись сертификата разработчика, а затем выпустить сертификат.
Создание запроса на подпись сертификата разработчика
Выполните следующие команды для создания запроса на подпись сертификата (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