Skip to content

Latest commit

 

History

History
 
 

regex-role-changer

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Regex Role Changer

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