PT AI из коробки не поддерживает гибкое назначение проектных ролей для пользователей. Для решения этой проблемы мы предлагаем использовать данный скрипт. С помощью него можно быстро выдать разработчику доступ к сканированиям всех его микросервисов, если их названия можно сгруппировать по регулярному выражению.
Находясь в директории проекта написать в консоли:
pip install -r requirements.txt
python ./main.py -h
usage: main.py [-h] [--regcheck] filename
Скрипт для назначения ролей в проектах PTAI на основе регулярных выражений
Позиционные аргументы:
filename имя CSV файла с данными
Опции:
-h, --help показать данную справку и выйти
--regcheck вывести список проектов, попадающих под регулярные выражения из csv файла
Для начала работы необходимо указать данные для подключения к PTAI в файле consts.py
.
Формат записи:
URL = "https://ptai.site.com/" # Обязательно с "/" в конце
LOGIN = "root"
PASSWORD = "password"
Примечание: программа будет завершать работу, если по данным, указанным в consts.py
невозможно подключиться.
Примечание: подключение возможно ТОЛЬКО от локальной учетной записи (root).
Данный скрипт принимает в качестве входных данных CSV-файл в формате:
user,roleid,regex
Ivanov Ivan,3,\[TEST\].*
Ivanov Ivan,3,GRO-.*-test
Semenov Semen,5,ABCD-EF-.*
Alisovna Alisa,2,ali.*ss
Столбец | Описание | Принимаемые значения |
---|---|---|
user | Имя пользователя, которому будет назначен указанный проект | Имя пользователя по SSO, поле name (не login!). |
roleid | Роль, которую необходимо назначить пользователю | 2 - аудитор: работает с результатами сканирования проектов, может только ставить статусы.3 - менеджер безопасности: имеет полный доступ к проектам, на которые он назначен.5 - разработчик: просматривает проекты, на которые он назначен. |
regex | Регулярное выражение, по которому происходит поиск проектов | Любое регулярное выражение, поддерживаемое движком Python. Проверить можно здесь. |
Примечание: поскольку при отсутствии в csv файле пользователя с назначенным проектом, он будет снят с этого проекта, в репозитории присутствует скрипт для создания baseline файла, в него можно добавлять новые данные.
Использование:
python export_project_roles.py [куда сохранить]
Если не указан выходной файл, данные будут сохранены в output.csv
Данный режим позволяет обновить проектные роли, добавить новые и удалить старые.
Перед применением изменений скрипт выводит список новых и изменённых ролей и запрашивает подтверждение у пользователя.
Если пользователь напишет любое слово, кроме "д", "да", "y" или "yes", изменения не будут применены и скрипт завершит свою работу.
Внимание: скрипт не отображает удалённые проектные роли
====== Новые проектные роли для пользователей ======
## Ivanov Ivan
[TEST] MyProject: Менеджер безопасности
[TEST] TheWorld: Менеджер безопасности
GRO-123-test: Менеджер безопасности
GRO-abc-test: Менеджер безопасности
====== Изменённые проектные роли для пользователей ======
## Semenov Semen
ABCD-EF-123: Разработчик
ABCD-EF-xyz: Разработчик
## Alisovna Alisa
alisaexpress: Аудитор
Изменить? [y/N]
Данный режим позволяет проверить все регулярные выражения, указанные в файле.
Он выводит список всех проектов в системе, которые соответствуют данному регулярному выражению.
Чтобы использовать данный режим, необходимо перед указанием пути до файла добавить флаг --regcheck
.
\[TEST\].*: [TEST] MyProject, [TEST] TheWorld
GRO-.*-test: GRO-123-test, GRO-abc-test
ABCD-EF-.*: ABCD-EF-123, ABCD-EF-xyz
ali.*ss: alisaexpress