
Платформа GRC для управления рисками, соответствия требованиям и аудита с более чем 200 фреймворками, автоматическим сопоставлением контролей, управлением уязвимостями и рабочими процессами реагирования на инциденты.
Поставьте звезду проекту 🌟, чтобы получать уведомления о релизах и помочь росту сообщества!
intuitem.com
·
Бесплатная пробная версия SaaS
·
Дорожная карта
·
Документация
·
Языки
·
Discord
·
Фреймворки

CISO Assistant предлагает свежий взгляд на управление кибербезопасностью и практики GRC (Governance, Risk, and Compliance — управление, риски и соответствие требованиям):

Наше видение — создать универсальное решение для управления кибербезопасностью, модернизируя GRC через упрощение и совместимость.
Как практики, работающие со специалистами по кибербезопасности и ИТ, мы сталкивались с теми же проблемами: фрагментация инструментов, дублирование данных и отсутствие интуитивных интегрированных решений. CISO Assistant родился из этих уроков, и мы строим сообщество вокруг прагматичных принципов здравого смысла.
Мы постоянно развиваемся с учётом мнений пользователей и клиентов. Как осьминог 🐙, CISO Assistant отращивает всё новые щупальца — принося ясность, автоматизацию и продуктивность командам по кибербезопасности, снижая усилия на ввод и вывод данных.
[!TIP] Самый простой способ начать — воспользоваться бесплатной пробной версией облачного экземпляра, доступной здесь.
Либо, если у вас установлены Docker и Docker-compose, на вашей рабочей станции или сервере:
клонируйте репозиторий:```sh git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
и запустите стартовый скрипт```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
Если вы ищете другие варианты установки для самостоятельного хостинга, ознакомьтесь с конструктором конфигурации и документацией.
[!NOTE] Скрипт docker-compose использует предварительно собранные образы Docker, поддерживающие большинство стандартных аппаратных архитектур. Если вы используете Windows, убедитесь, что у вас установлен Docker Desktop с WSL2, и запустите скрипт PowerShell. Он настроит Docker Desktop от вашего имени.
Файл docker compose можно скорректировать для передачи дополнительных параметров в соответствии с вашей конфигурацией (например, настроек почтового сервиса).
[!WARNING] Если вы получаете предупреждения или ошибки о несоответствии платформы образа платформе хоста, создайте issue с подробностями, и мы добавим её в ближайшее время. Вы также можете использовать
docker-compose-build.sh(см. ниже) для сборки под вашу конкретную архитектуру.
[!CAUTION] Не используйте код ветки
mainнапрямую в production, так как это ветка слияния upstream и в ней могут быть критические изменения в процессе нашей разработки. Используйте либоtagsдля стабильных версий, либо предварительно собранные образы.

Соответствие требованиям и фреймворки
Управление рисками
Риски третьих сторон
Операции и устранение последствий
Отчётность и аналитика
Совместная работа и продуктивность
Автоматизация и интеграции
Безопасность и доступ
Конфиденциальность
Управление программами
Платформа
Планируемые возможности перечислены в дорожной карте.
CISO Assistant разрабатывается и поддерживается компанией Intuitem, специализирующейся на кибербезопасности, облачных технологиях и данных/ИИ.
Ниже приведена выдержка из некоторых строительных блоков CISO Assistant, иллюстрирующая концепцию разделения, которая способствует повторному использованию:

Полные сведения см. в документации по модели данных.
В основе CISO Assistant лежит принцип разделения, который обеспечивает мощные сценарии использования и значительную экономию времени:
Ниже приведена иллюстрация принципа разделения и его преимуществ:

Ознакомьтесь с онлайн-документацией на https://intuitem.gitbook.io/ciso-assistant.
Подробнее здесь: AI-движок
[!NOTE] Фреймворки со знаком
*требуют дополнительного ручного шага — получения последней версии Excel-файла с их сайта, поскольку их лицензия запрещает прямое использование. Вы можете загрузить Excel-файл напрямую как библиотеку.
Ознакомьтесь с библиотекой и инструментами для изучения используемого Domain Specific Language и того, как можно определить собственные.
Indonesia PDP 🇮🇩
OWASP SAMM
COBAC R-2024/01
ICO Data protection self-assessment 🇬🇧
ASD ISM 🇦🇺
и многое другое: просто спросите в Discord. Если это открытый стандарт, мы сделаем это для вас, бесплатно 😉
Библиотека может представлять фреймворк, каталог угроз, набор эталонных контролей или даже пользовательскую матрицу рисков.
Библиотеки теперь можно загружать напрямую из файлов Excel. Нет необходимости предварительно вручную конвертировать их в YAML — конвертация выполняется внутри при загрузке Excel-файла.
Ознакомьтесь с каталогом tools и его специальным README, где описан ожидаемый формат исходных файлов библиотек в Excel. Подкаталог excel содержит примеры XLSX-файлов, используемых в качестве источников для существующих библиотек, и может использоваться как шаблон для создания собственных.
Чтобы загрузить библиотеку из Excel-файла, перейдите на страницу Governance → Library, нажмите Load и выберите исходный Excel-файл. Любые ошибки валидации или парсинга будут сообщены в процессе импорта.
Хотя Excel-файлы можно загружать напрямую, по-прежнему возможно конвертировать исходные файлы библиотек в YAML с помощью внешних Python-скриптов:
convert_library_v2.py помогает сгенерировать библиотеку из простого Excel-файла. Как только ваши элементы структурированы в ожидаемом формате, запустите скрипт, чтобы получить соответствующий YAML-файл.tools также содержит специализированные конвертеры для конкретных фреймворков (например, CIS или CCM Controls).Чтобы упростить создание сопоставлений между фреймворками, вы можете использовать инструмент prepare_mapping_v2.py. Он генерирует Excel-файл на основе двух существующих библиотек фреймворков в формате YAML. После заполнения сопоставлений полученный Excel-файл можно:
convert_library_v2.py.Присоединяйтесь к нашему открытому сообществу в Discord, чтобы взаимодействовать с командой и другими экспертами по GRC.
Самый быстрый и простой способ начать — воспользоваться бесплатной пробной версией облачного экземпляра, доступной здесь.
Чтобы запустить CISO Assistant локально простым способом, вы можете использовать Docker compose.
Убедитесь, что у вас установлена свежая версия docker (>= 27.0).
2. Запустите скрипт docker-compose для предварительно собранных образов:```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
В качестве альтернативы вы можете использовать этот вариант для сборки docker-образов под вашу конкретную архитектуру:```sh ./docker-compose-build.sh # Linux/MacOS ./docker-compose-build.ps1 # Windows
При запросе введите свой адрес электронной почты и пароль для суперпользователя.
После этого вы сможете получить доступ к CISO Assistant через веб-браузер по адресу [https://localhost:8443/](https://localhost:8443/)
Для следующих запусков используйте "docker compose up" напрямую.
## Настройка CISO Assistant для разработки
> [!WARNING]
>
> ### Важное примечание для пользователей Windows
>
> Наилучшее рабочее решение для пользователей, разрабатывающих на **Windows**, — использовать [Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv), установленную на [WSL2](https://apps.microsoft.com/detail/9p9tqf7mrm4r) (Docker не требуется).
>
> Теперь также возможно запускать и разрабатывать CISO Assistant нативно на Windows без WSL2 и Docker, но это потребует некоторых дополнительных шагов.
> Обратите внимание, что нативный запуск на Windows всё ещё находится в **ЭКСПЕРИМЕНТАЛЬНОЙ ФАЗЕ** и **НЕ** должен использоваться, если вы не уверены в том, что делаете, или если вы хотите обеспечить стабильность в процессе разработки.
> Тем не менее, мы будем рады услышать любые предложения по улучшению опыта разработки для пользователей Windows. Не стесняйтесь открывать Issue/PR по этому поводу!
### Требования
- Python 3.14+
- pip 25.3+
- uv 0.9+
- node 24+
- npm 10.2+
- pnpm 10.30+
- yaml-cpp (`brew install yaml-cpp libyaml` или `apt install libyaml-cpp-dev`)
<details>
<summary>[ЭКСПЕРИМЕНТАЛЬНО] Дополнительные требования для разработки на Windows без WSL2</summary>
Если вы хотите разрабатывать проект без WSL2, вам потребуется установить [MSYS2](https://www.msys2.org/), добавить бинарные файлы `MSYS2 UCRT64` в вашу [системную переменную среды PATH](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.6#set-environment-variables-in-the-system-control-panel) (обычно бинарные файлы находятся в `C:\msys64\ucrt64\bin`), а затем установить следующие зависимости через `pacman`, используя `MSYS2 UCRT64`.```sh
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
Вам также потребуется добавить эти 2 системные переменные окружения после установки зависимостей:```conf
MAGIC=Full path to the magic.mgc file (usually C:\msys64\ucrt64\share\misc\magic.mgc)
WEASYPRINT_DLL_DIRECTORIES=Same path as your MSYS2 UCRT64 binaries
Учитывая, что кодировка по умолчанию в Windows — не `UTF-8`, а `cp1252`, некоторые python-скрипты, выводящие символы `UTF-8`, такие как эмодзи, могут в некоторых случаях вызвать сбой или некорректную работу бэкенда (например, при импорте библиотеки).
Чтобы избежать этой проблемы в данном проекте, принудительно установите кодировку `UTF-8`, добавив эти 2 пользовательские переменные среды:```conf
PYTHONUTF8=1
PYTHONIOENCODING=utf-8:replace
[!NOTE]
Известные проблемы
- Библиотека
libmagicв Windows (определение MIME) с трудом распознаёт файл Excel (.xlsx), считывая его первые2048бит, так как в большинстве случаев возвращаетapplication/octet-streamпри импорте библиотеки Excel (бэкенд отображает предупреждающее сообщение[warning ] Invalid MIME type). Это не мешает импорту файла Excel благодаря резервному методу вbackend/library/views.py:StoredLibraryViewSet.upload_library.
2. Создайте файл в родительской папке (например, `../myvars`) и сохраните в нём переменные окружения, скопировав и изменив следующий код и заменив `"<XXX>"` на ваши личные значения. Следите за тем, чтобы не закоммитить этот файл в ваш git-репозиторий.
**Обязательные переменные**
Все переменные в бэкенде имеют удобные значения по умолчанию.
**Рекомендуемые переменные**```sh
export DJANGO_DEBUG=True
# Default url is set to http://localhost:5173 but you can change it, e.g. to use https with a caddy proxy
export CISO_ASSISTANT_URL=https://localhost:8443
# Setup a development mailer with Mailpit for example
export EMAIL_HOST_USER=''
export EMAIL_HOST_PASSWORD=''
export [email protected]
export EMAIL_HOST=localhost
export EMAIL_PORT=1025
export EMAIL_USE_TLS=True # true for STARTTLS
export EMAIL_USE_SSL=False # true for SMTPS
Другие переменные```sh
export POSTGRES_NAME=ciso-assistant export POSTGRES_USER=ciso-assistantuser export POSTGRES_PASSWORD= export POSTGRES_PASSWORD_FILE= # alternative way to specify password export DB_HOST=localhost export DB_PORT=5432 # optional, default value is 5432
export USE_S3=True export AWS_STORAGE_BUCKET_NAME= export AWS_S3_REGION_NAME= # optional, e.g., us-east-1
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_S3_ENDPOINT_URL= # required for S3-compatible services (e.g., MinIO)
export EMAIL_HOST_RESCUE= export EMAIL_PORT_RESCUE=587 export EMAIL_HOST_USER_RESCUE= export EMAIL_HOST_PASSWORD_RESCUE= export EMAIL_USE_TLS_RESCUE=True export EMAIL_USE_SSL_RESCUE=False
export CISO_SUPERUSER_EMAIL=
export DJANGO_SECRET_KEY=...
export ENABLE_SANDBOX=True # optional, default value is True in production enfironments (DJANGO_DEBUG=False) and False in development environments (DJANGO_DEBUG=True).
export LOG_LEVEL=INFO # optional, default value is INFO. Available options: DEBUG, INFO, WARNING, ERROR, CRITICAL export LOG_FORMAT=plain # optional, default value is plain. Available options: json, plain
export AUTH_TOKEN_TTL=3600 # optional, default value is 3600 seconds (60 minutes). It defines the time to live of the authentication token export AUTH_TOKEN_AUTO_REFRESH=True # optional, default value is True. It defines if the token TTL should be refreshed automatically after each request authenticated with the token export AUTH_TOKEN_AUTO_REFRESH_TTL=36000 # optional, default value is 36000 seconds (10 hours). It defines the time to live of the authentication token after auto refresh. You can disable it by setting it to 0.
<details>
<summary>[ЭКСПЕРИМЕНТАЛЬНО] Другая переменная для разработки на Windows без WSL2</summary>
Можно настроить только пользовательские переменные PostgreSQL.
Для получения дополнительной информации используйте вспомогательные скрипты, описанные в [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
3. Установите uv
Инструкции по установке смотрите на сайте uv: <https://docs.astral.sh/uv/getting-started/installation/>
4. Перейдите в backend и установите необходимые зависимости.```sh
cd backend
uv sync
6. Если вы хотите настроить Postgres:
- Запустите одну из этих команд, чтобы войти в Postgres:
- `psql as superadmin`
- `sudo su postgres`
- `psql`
- Создайте базу данных "ciso-assistant"
- `create database ciso-assistant;`
- Создайте пользователя "ciso-assistantuser" и предоставьте ему доступ
- `create user ciso-assistantuser with password '<POSTGRES_PASSWORD>';`
- `grant all privileges on database ciso-assistant to ciso-assistantuser;`
<details>
<summary>[ЭКСПЕРИМЕНТАЛЬНО] Настройка PostgreSQL на Windows</summary>
Для получения дополнительной информации см. документацию в [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
7. Если вы хотите настроить s3 bucket:
- Выберите своего s3-провайдера или протестируйте функцию s3 с помощью miniO этой командой:
- `docker run -p 9000:9000 -p 9001:9001 -e "MINIO_ROOT_USER=XXX" -e "MINIO_ROOT_PASSWORD=XXX" quay.io/minio/minio server /data --console-address ":9001"`
- Теперь вы можете проверить свой bucket по адресу <http://localhost:9001>
- Введите данные для входа, используя учётные данные, которые вы указали в переменных окружения docker run
- Экспортируйте в директории backend все переменные окружения, запрашиваемые для S3
- Список можно увидеть выше в рекомендуемых переменных
8. Примените миграции.```sh
uv run python manage.py migrate
Для получения дополнительной информации см. документацию в tools/.windows/README.md.
Если вы настроили почтовую программу и переменную CISO_SUPERUSER_EMAIL, нет необходимости создавать суперпользователя Django с помощью
createsuperuser, так как он будет создан автоматически при первом запуске. Вы должны получить электронное письмо со ссылкой для настройки пароля.```sh uv run python manage.py createsuperuser
<details>
<summary>[ЭКСПЕРИМЕНТАЛЬНО] Создание суперпользователя Django в Windows без WSL2</summary>
Для получения дополнительной информации см. документацию в [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md).
</details>
10. Запустите сервер разработки.```sh
uv run python manage.py runserver
При запуске сервера разработки Django нативно на Windows SvelteKit SSR может открыть достаточно одновременных API-соединений, чтобы исчерпать небольшой размер очереди прослушивания сервера по умолчанию. Это может вызвать периодические ошибки ECONNREFUSED / TypeError: fetch failed во фронтенде.
Используйте вспомогательные скрипты, описанные в tools/.windows/README.md, для настройки нативной разработки на Windows.
python manage.py run_huey -w 2 -k process или эквивалент в отдельной оболочке.MAIL_DEBUG, чтобы получать почту в консоли для упрощения отладки2. Установите зависимости```bash
npm install -g pnpm
pnpm install
4. Откройте фронтенд по адресу <http://localhost:5173>
> [!NOTE]
> Safari не будет корректно работать в такой конфигурации, так как для безопасных cookie требуется https. Самое простое решение — использовать Chrome или Firefox. Альтернативный вариант — использовать прокси caddy. Пожалуйста, обратитесь к [файлу readme](https://github.com/intuitem/ciso-assistant-community/blob/main/frontend/README.md) в директории frontend для получения дополнительной информации об этом.
5. Переменные окружения
Все переменные во фронтенде имеют удобные значения по умолчанию.
Если вы переносите фронтенд на другой хост, вам следует задать следующую переменную: `PUBLIC_BACKEND_API_URL`. Её значение по умолчанию — <http://localhost:8000/api>.
Переменная `PUBLIC_BACKEND_API_EXPOSED_URL` необходима для корректной работы SSO. Она указывает на URL API, видимый из браузера. Она должна быть равна конкатенации `CISO_ASSISTANT_URL` (в бэкенде) с "/api".
Когда вы запускаете "node server" вместо "pnpm run dev", вам нужно задать переменную ORIGIN с тем же значением, что и `CISO_ASSISTANT_URL` в бэкенде (например, <http://localhost:3000>).
### Управление миграциями
Миграции отслеживаются системой контроля версий, <https://docs.djangoproject.com/en/4.2/topics/migrations/#version-control>
Для первой версии продукта рекомендуется начать с чистой миграции.
Примечание: чтобы очистить существующие миграции, введите:```sh
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
После изменения (или очистки) необходимо повторно сгенерировать файлы миграции:```sh uv run python manage.py makemigrations uv run python manage.py migrate
Эти файлы миграции должны отслеживаться системой контроля версий.
### Набор тестов
Чтобы запустить API-тесты на бэкенде, просто введите `uv run pytest` в оболочке в папке бэкенда.
Чтобы запустить функциональные тесты на фронтенде, выполните следующие действия:
- в папке фронтенда запустите следующую команду:```shell
tests/e2e-tests.sh
Цель тестового окружения — предотвратить любые регрессии, то есть все тесты должны проходить успешно, как для бэкенда, так и для фронтенда.
export DJANGO_DEBUG=True перед запуском бэкенда.<backend_endpoint>/api/schema/swagger/,
например: http://127.0.0.1:8000/api/schema/swagger/.Чтобы взаимодействовать с API через Swagger или напрямую с помощью HTTP-запросов:
Authorization: Token <token>⚠️ Примечание: используйте Token, не Bearer.
PAT учитывают MFA: они выдаются из аутентифицированной сессии, поэтому аккаунт, защищённый MFA, остаётся защищённым. Для интерактивных/браузерных сценариев аутентификация проходит через стандартный вход (который применяет MFA, когда она включена).
Файл docker-compose.yml содержит важную конфигурацию для тестирования, с прокси Caddy перед фронтендом. Он предоставляет доступ ко всему API, что пока не рекомендуется для production.
Для production можно использовать config builder для генерации более защищённого и адаптированного файла docker-compose.yml, хотя всё ещё требуется выполнить несколько шагов по усилению защиты.
Для production применяются следующие рекомендации:
DJANGO_DEBUG=False по соображениям безопасности./api/iam/sso/redirect//api/accounts/saml/0/acs//api/accounts/saml/0/acs/finish//api/accounts/oidc/openid_connect/login/callback//api/accounts/saml/0/sls/ (только при включённом SAML single logout)[!NOTE] Фронтенд не может автоматически определить хост, поэтому вам нужно либо задать переменную ORIGIN, либо переменные
HOST_HEADERиPROTOCOL_HEADER. Пожалуйста, ознакомьтесь с документацией sveltekit по этому непростому вопросу. Учтите, что этот подход не работает с "pnpm run dev", что не должно быть проблемой для production.
[!NOTE] Caddy должен получать заголовок SNI. Поэтому для вашего публичного URL (того, что объявлен в
CISO_ASSISTANT_URL), вам нужно использовать FQDN, а не IP-адрес, так как SNI не передаётся браузером, если хост является IP-адресом. Ещё один непростой вопрос!
[!NOTE] Шаблонные файлы docker-compose теперь запускают бэкенд, huey и фронтенд в режиме непривилегированного пользователя. Если вы используете старый файл docker-compose.yml, рекомендуется его обновить. Контейнеры совместимы как с режимом root, так и с режимом непривилегированного пользователя.
docker-compose.yml теперь использует непривилегированного пользователя 1001:1001, который доступен в образе. Более старые развёртывания используют пользователя root, что по-прежнему поддерживается. Чтобы перейти на непривилегированный режим, выполните следующие шаги на хосте:
Эталон — en.json; покрытие = доля эталонных ключей, присутствующих в каждом файле локали. Автообновление ежедневно — полная разбивка на дашборде.
Были приложены большие усилия для соблюдения лучших практик безопасности. Пожалуйста, сообщайте о любых проблемах на [email protected].
Этот репозиторий содержит исходный код как открытой редакции CISO Assistant (Community Edition), выпущенной под AGPL v3, так и коммерческой редакции CISO Assistant (Pro и Enterprise Editions), выпущенной под коммерческой лицензией intuitem Commercial Software License. Такой подход с монорепозиторием принят для простоты.
Все файлы в каталоге верхнего уровня "enterprise" выпущены под коммерческой лицензией intuitem Commercial Software License.
Все файлы вне каталога верхнего уровня "enterprise" выпущены под AGPLv3.
Подробности см. в LICENSE.md. Для получения более подробной информации о коммерческих редакциях вы можете связаться с нами по адресу [email protected].
Если не указано иное, все файлы являются © intuitem.