Использование API Системы управления.
Использование API для Системы управления при создании чёрных/белых списков
API Системы управления используется для редактирования чёрных/белых списков, хранящихся в базе данных веб-интерфейса Системы управления. Это означает, что, например, при добавлении записи в тот или иной список, эта запись будет видна только в веб-интерфейсе. Чтобы запись заработала на шлюзах необходимо через веб-интерфейс выполнить публикацию, привязав измененный список к порталу или конфигурации, если список ещё не привязан. Использование API Системы управления подходит для не срочных блокировок и разрешений доступа пользователей.
Для добавления/удаления в чёрный/белый список, необходимо с устройства, находящегося вне кластера, послать на Систему управления один из описанных в данном разделе запросов.
Создание списка
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/
- name – наименование создаваемого списка;
- description – описание списка, необязательный параметр;
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PUT https://<ngate>:7023/ext/api/blacklist/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H ‘Content-Type: application/json’ -d '{"name": "BlackList", "description": "…"}'
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PUT https://<ngate>:7023/ext/api/whitelist/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H ‘Content-Type: application/json’ -d '{"name": "BlackList", "description": "…"}'
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
{ "configurations": [], "description": "…", "id": 1, "name": "BlackList", "portals": [], "type": "blacklist" }
- description – ранее введенное описание списка;
- configurations – список названий конфигураций, к которым привязан список;
- id – идентификатор списка, который потребуется для удаления списка или для его получения;
- name – ранее введенное наименование списка;
- portals – список названий порталов, к которым привязан список;
- type – тип списка: blacklist – черный список, whitelist – белый список.
Получение одного списка
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/<id>/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/<id>/
- <ngate> – имя машины;
-
<id> – идентификатор списка.
Запрос отправляется с пустым телом.
- /opt/cprocsp/bin/amd64/curl -q -k -v https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
- /opt/cprocsp/bin/amd64/curl -q -k -v https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
{ "configurations": [], "description": "…", "id": 1, "name": "BlackList", "portals": [], "type": "blacklist" "entries": […] }
- description – ранее введенное описание списка;
- configurations – список названий конфигураций, к которым привязан список;
- id – идентификатор списка, который потребуется для удаления списка или для его получения;
- name – ранее введенное наименование списка;
- portals – список названий порталов, к которым привязан список;
- type – тип списка: blacklist – черный список, whitelist – белый список;
- entries – список записей в списке.
Получение всех списков
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/
- <ngate> – имя машины;
Запрос отправляется с пустым телом.
- /opt/cprocsp/bin/amd64/curl -q -k -v https://<ngate>:7023/ext/api/blacklist/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
- /opt/cprocsp/bin/amd64/curl -q -k -v https://<ngate>:7023/ext/api/whitelist/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
{ "configurations": [], "description": "…", "id": 1, "name": "BlackList", "portals": [], "type": "blacklist" } { "configurations": [], "description": "Automatically generated Black List …", "id": 2, "name": " portal_name-API", "portals": [ "portal_name" ], "type": "blacklist" }
- description – ранее введенное описание списка;
- configurations – список названий конфигураций, к которым привязан список;
- id – идентификатор списка, который потребуется для удаления списка или для его получения;
- name – ранее введенное наименование списка;
- portals – список названий порталов, к которым привязан список;
- type – тип списка: blacklist – черный список, whitelist – белый список;
Удаление списка
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/<id>/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/<id>/
Запрос отправляется с пустым телом.
- <ngate> – имя машины;
-
<id> – идентификатор списка.
- /opt/cprocsp/bin/amd64/curl -q -k -v –X DELETE https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
- /opt/cprocsp/bin/amd64/curl -q -k -v –X DELETE https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
{ "detail": "BlackList deleted" }
Добавление и удаление из списка по сертификату
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/<id>/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/<id>/
- <ngate> – имя машины;
-
<id> – идентификатор списка.
В качестве запроса необходимо указать действие action: добавить add или удалить remove. А в URL указать объект запроса: чёрный список blacklist или белый список whitelist.
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a –F ‘action=”add”’ –F ‘file=@”cert.cer”’ –F ‘content_type=”serial”’ –F ‘comment=”…”’
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a –F ‘action=”remove”’ –F ‘file=@”cert.cer”’ –F ‘content_type=”serial”’ –F
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a –F ‘action=”add”’ –F ‘file=@”cert.cer”’ –F ‘content_type=”serial”’ –F ‘comment=”…”’
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a –F ‘action=”remove”’ –F ‘file=@”cert.cer”’ –F ‘content_type=”serial”’ –F
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
- action – действие, которое необходимо выполнить с полем сертификата: добавить (add) или удалить (remove), обязательный параметр;
- file – файл сертификата;
- content_type – тип содержимого сертификата, который нужно добавить в черный список, опционально, значение может быть только одним из следующих: cert_serial – серийный номер; cert_sha1_fingerprint – SHA-1 хеш; cert_gost_fingerprint – ГОСТ хеш, является значением по умолчанию; upn – User Principle Name;
- comment – комментарий к записи, который будет отображаться в журналах (logs), как причина блокировки. Опциональный параметр, может быть использован только при создании записи.
{ "comment": "…", "content_type": "cert_serial", "id": 1, "owner": "APITokenName", "owner_type": "api_mc", "user_identifier": "0x41C…AB" }
- comment – заданный ранее комментарий к записи;
- content_type – тип атрибута, по которому пользователь будет блокироваться;
- id – идентификатор записи;
- owner – владелец, в случае, если запись была создана через API, поле хранит название использованного токена, в случае, если запись была создана через веб интерфейс, поле хранит имя пользователя;
- owner_type – тип владельца, может быть одним из следующих: user – пользователь, создавший запись через веб-интерфейс; api_mc – владелец создал запись через API Системы управления; api_node – владелец создал запись через API-шлюз; crl – запись была создана из CRL.
- user_identifier – значение выбранного атрибута, которое теперь будет блокироваться.
{ “detail”: “User control entry deleted” }
Добавление и удаление из списка по атрибуту
- Чёрные списки: https://<ngate>:7023/ext/api/blacklist/<id>/
- Белые списки: https://<ngate>:7023/ext/api/whitelist/<id>/
- <ngate> – имя машины;
-
<id> – идентификатор списка.
В качестве запроса необходимо указать действие action: добавить add или удалить remove. А в URL указать объект запроса: чёрный список blacklist или белый список whitelist.
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H 'Content-Type: application/json' -d '{"action": "add", "login": "user1", “comment”: “…”}'
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/blacklist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H 'Content-Type: application/json' -d '{"action": "remove", "login": "user1"}'
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H 'Content-Type: application/json' -d '{"action": "add", "login": "user1", “comment”: “…”}'
- /opt/cprocsp/bin/amd64/curl -q -k -v –X PATCH https://<ngate>:7023/ext/api/whitelist/1/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H 'Content-Type: application/json' -d '{"action": "remove", "login": "user1"}'
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
- action – действие, которое необходимо выполнить с полем сертификата: добавить (add) или удалить (remove), обязательный параметр;
- атрибут сертификата в формате "<параметр>": "значение": cert_serial – серийный номер сертификата; cert_sha1_fingerprint – SHA-1 хеш сертификата; cert_gost_fingerprint – ГОСТ хеш сертификата; upn – User Principle Name; login – логин пользователя; ldap_dn – LDAP DN пользователя;
- comment – комментарий к записи, который будет отображаться в журналах (logs), как причина блокировки. Опциональный параметр, может быть использован только при создании записи.
{ "comment": "…", "content_type": "login", "id": 2, "owner": "APITokenName", "owner_type": "api_mc", "user_identifier": "user1" }
- comment – заданный ранее комментарий к записи;
- content_type – тип атрибута, по которому пользователь будет блокироваться;
- id – идентификатор записи;
- owner – владелец, в случае, если запись была создана через API, поле хранит название использованного токена, в случае, если запись была создана через веб интерфейс, поле хранит имя пользователя;
- owner_type – тип владельца, может быть одним из следующих: user – пользователь, создавший запись через веб-интерфейс; api_mc – владелец, который создал запись через API Системы управления; api_node – владелец создал запись через API-шлюз; crl – запись была создана из CRL.
- user_identifier – значение выбранного атрибута, которое теперь будет блокироваться.
{ “detail”: “User control entry deleted” }
Синхронизация списков со шлюзом
- При синхронизации списков СУ со шлюзом собранные со шлюзов записи сохраняются в автоматически создаваемом в базе данных веб-интерфейса СУ чёрном/белом списке с названием вида <имя-портала>-API (в случае добавления на шлюзе записи для конкретного портала) или в список с названием вида <имя-активной-конфигурации>-API (в случае добавления записи на шлюзе в глобальный список). Автоматически создаваемый список сразу привязывается к порталу или конфигурации соответственно.
- Синхронизация списков. В
процессе синхронизации чёрных/белых списков со шлюзов (узлов NGate кластера)
в уже существующий автоматически сгенерированный список (или в новый, если
список ранее не был создан) добавляются только отсутствующие в этом списке
записи. В то же время записи, существующие в списке, но удалённые на шлюзах,
не будут автоматически удалены.Важно, что синхронизация чёрных/белых списков автоматически выполняется перед каждой публикацией конфигурации. Поэтому, если администратор хочет проверить пришедшие со шлюзов записи и, например, удалить некоторые из записей, то Администратор должен:
- выполнить публикацию конфигурации;
- только после успешной публикации изменять или удалять автоматический созданный чёрно/белый список по своим требованиям;
- после завершения внесения изменений нужно выполнить повторную публикацию;
- оставшиеся в автоматически созданных списках записи будут добавлены в предварительно очищенную базу данных сессий на шлюзах при запуске соответствующего сервиса.
- https://<ngate>:7023/ext/api/cluster/<id>/blackwhitelist/
- /opt/cprocsp/bin/amd64/curl -q -k -v –X POST https://<ngate>:7023/ext/api/cluster/1/blackwhitelist/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a -H 'Content-Type: application/json' -d '{"action": "synchronize"}'
Где:
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
- action – действие, которое необходимо выполнить, в данном случае синхронизация synchronize.
Получение списка кластеров
- https://<ngate>:7023/ext/api/cluster/
Пример запроса: /opt/cprocsp/bin/amd64/curl -q -k -v –X GET https://<ngate>:7023/ext/api/cluster/ -H 'Authentication: Bearer cn2…YX' -E 14e…6a
Где:
- <ngate> – имя машины;
- cn2…YX – API токен, должен иметь права на редактирование списков;
- 14e…6a – отпечаток сертификата сервиса API.
[ { "cluster_codename": "Cluster-of-afraid-mastiff", "comment": "…", "id": 1, "name": "Cluster1" } ]
- cluster_codename – кодовое имя кластера;
- comment – описание кластера;
- id – идентификатор кластера;
- name – наименование кластера.