# Перенос политик и объектов 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-вызовы с нашей машины:

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.|