# Перенос политик и объектов Check Point с помощью скрипта ExportImportPolicyPackage на Python ## Принцип работы Данный скрипт экспортирует данные из сервера управления в файл tar.gz, который затем можно импортировать в любую другу базу данных управления R80.x и выше ## Условия 1. У Вас версия SMS 80.x и выше(версии ниже не поддерживают тот функционал API, который необходим) 2. На машине, с которой мы хотим выполнить скрипт, должен быть установлен: * Python (версия 3.7 и выше) * pip * git(опционально) ## Нюансы 1. Если Вы экспортируете пакет политик из CMA, важно, чтобы глобальная политика НЕ БЫЛА назначена на CMA.(как вариант - отменить ее назначение на время копирования) 4. Есть некоторые типы объектов, которые скрипт может не экспортировать. В таком случае вместо этого будет экспортирован соответствующий фиктивный объект, а в файлы журнала будет записано сообщение, уведомляющее вас об этом. В Check Point SmartConsole вы можете легко заменить каждый из этих объектов, выполнив поиск «export_error» в поле поиска, посмотреть, где используется каждый объект, создать нужный объект вручную, а затем заменить его 5. Этот скрипт экспорта/импорта не собирает все данные с заданного сервера управления/CMA. Как правило, он ограничен API-интерфейсами управления R80.x 6. Обработка типов объектов центра обработки данных — перед импортом в целевую базу данных управления необходимо вручную создать объект центра обработки данных с тем же именем, что и в исходной базе данных управления, и обеспечить подключение. ## Подготовка и запуск ### SMS 1. Находим настройку Management Api Settings(Для версии Smart Console 81.10 **Manage & Settings** -> **Blades** -> **Management Api** -> **Advanced Settings**) и выбираем опцию **All Ip addresses that can be used for GUI clients**. Это нужно для того, чтобы мы могли выполнять API-вызовы с нашей машины: ![](https://i.imgur.com/CvqLbub.png) 2. Далее нам необходимо перезапустить API. Подключаемся по ssh к SMS и вводим команду ``` api restart ``` 3. Узнаем имена политик, которые есть на SMS командой: ``` show packages ``` ### PC (Windows) 1. Скачиваем скрипт вот [отсюда](https://github.com/CheckPointSW/ExportImportPolicyPackage) и распаковываем. Либо, если установлен git, переходим в место, где будет храниться программа и вводим команду: ``` git clone https://github.com/CheckPoint-APIs-Team/ExportImportPolicyPackage ``` 2. Заходим в директорию ExportImportPolicyPackage 3. Устанавливаем необходимые зависимости командой(нужно для работы CheckPoint API) ``` pip install cp-mgmt-api-sdk ``` 4. Запускаем скрипт командой: ``` py ./import_export_package.py ``` После этого следует интерактивный режим. ## Опции, которые мы можем передать вместе с запуском программы: | Опция | Значение | | -------- | -------- | |-h | вывести справку | |-op {export,import} | тип операции | |-n NAME | имя политики для импорта/экспорта| |-f FILE| файл для импорта политик| |--all ALL| указывает, что надо импортировать/экспортировать все типы уровней политик| |-ac ACCESS| указывает, что надо импортировать/экспортировать уровень Access-Control | |-tp THREAT| указывает, что надо импортировать/экспортировать уровень Threat-Prevention| |--nat NAT | указывает, что надо импортировать/экспортировать правила NAT| |--https HTTPS |указывает, что надо импортировать/экспортировать уровень Https-инспекции | |-o OUTPUT_FILE| Имя выходного файла | |-u USERNAME| имя пользователя(переменная среды MGMT_CLI_USER) | |-p PASSWORD | пароль пользователя (переменная среды MGMT_CLI_PASSWORD)| |-m MANAGEMENT| указание Ip-адреса MGMT-сервера(переменная среды MGMT_CLI_MANAGEMENT)| |--port PORT | порт management-сервера(переменная среды MGMT_CLI_PORT) | |--proxy PROXY | прокси-сервер| |--proxy-port PROXY_PORT | порт прокси-сервера | |-d DOMAIN |имя, uid или IP-адрес домена управления Переменная среды: MGMT_CLI_DOMAIN | | -s SESSION_FILE|файл, содержащий информацию о сеансе, полученную при предыдущей операции входа в систему. (переменная среды MGMT_CLI_SESSION_FILE) | |-sid SESSION_ID | идентификатор сеанса (sid), полученный из предыдущей операции входа в систему. (переменная среды MGMT_CLI_SESSION_ID)| |-r ROOT| при работе на management-сервере используейте этот параметр для получения root-прав| |-v VERSION|заставляет использовать предоставленную версию WEB-API | |--non-user-created {true,false} |Указывает, показывать ли только данные, созданные пользователем. По умолчанию: true | |--debug {on,off} | указывает, запускать ли скрипт в режиме отладки. По умолчанию: off(переменная среды MGMT_CLI_DEBUG)| |--log-file LOG_FILE | путь к файлу журнала отладки. По умолчанию: get_objects.log(переменная среды MGMT_CLI_LOG_FILE) | |--unsafe UNSAFE |НЕБЕЗОПАСНО! Игнорировать проверку сертификата. | |--unsafe-auto-accept UNSAFE_AUTO_ACCEPT|НЕБЕЗОПАСНО! Автоматически принимать fingerprint во время проверки сертификата | |-t SESSION_TIMEOUT |время до истечения сессии в секундах | |--strict STRICT | остановить импортирование при первой API-ошибке | | --skip-import-sections SKIP_IMPORT_SECTIONS | пропустить указанные уровни политик при импортировании | | --tag-objects-on-import TAG_OBJECTS_ON_IMPORT|добавить тег к поддерживаемым объектам при импорте | | --skip-duplicate-objects SKIP_DUPLICATE_OBJECTS| пропустить импорт объекта, если объект с таким именем уже существует | | --cloud-mgmt-id CLOUD_MGMT_ID| UID управления облачным сервисом Smart-1.|