
ElectricEye — это мультиоблачный, мульти-SaaS Python CLI инструмент для управления активами, управления состоянием безопасности и мониторинга поверхности атаки, поддерживающий сотни сервисов и оценок для укрепления ваших CSP и SaaS сред с контролем, сопоставленным с более чем 20 отраслевыми, нормативными и основанными на лучших практиках рамками контроля.
ElectricEye — это мультиоблачный, мультиSaaS CLI-инструмент на Python для управления активами, контроля безопасности и мониторинга поверхности атаки, поддерживающий сотни сервисов и оценок для укрепления ваших CSP и SaaS-сред, с привязкой элементов контроля к более чем 20 отраслевым, нормативным и практическим фреймворкам контроля.
Здесь, в космосе
Я смотрю на тебя сверху
Мои лазеры отслеживают
Всё, что ты делаешь
Judas Priest, 1982

ElectricEye — это CLI-инструмент на Python, который предоставляет возможности управления активами, контроля безопасности и мониторинга поверхности атаки для нескольких аккаунтов, регионов, облаков и SaaS, поддерживая AWS (все партиции!), GCP, Oracle Cloud Infrastructure (OCI), ServiceNow, Microsoft 365 Enterprise (M365), Salesforce (SFDC) и Azure.
ElectricEye предлагает более 1000 проверок по вопросам безопасности, устойчивости, производительности и финансовым лучшим практикам для более чем 100 сервисов CSP и SaaS, включая нетипичные сервисы, не поддерживаемые собственными инструментами/представлениями управления активами CSP/SaaS или основными CSPM и CNAPP инструментами.
Каждая проверка привязана к более чем 20 фреймворкам контроля, охватывающим общие лучшие практики, нормативные, отраслевые и юридические требования, такие как NIST CSF, AICPA TSCs (для SOC 2), Правило безопасности HIPAA, NIST 800-171 Rev. 2, CMMC V2.0, Раздел 2 CROE Европейского центрального банка, PCI-DSS V4.0, эталонные тесты CIS Foundations и другие!
Многоаспектный мониторинг поверхности атаки использует такие инструменты, как VirusTotal, Nmap, Shodan.io, Detect-Secrets и базу CISA KEV для поиска активов, проиндексированных в интернете, обнаружения открытых сервисов, уязвимых мест и вредоносных пакетов в репозиториях артефактов.
Вывод данных осуществляется в AWS Security Hub, Open Cyber Security Framework (OCSF) V1.1.0 в формате JSON, AWS DocumentDB, JSON, CSV, HTML-отчеты, MongoDB, Amazon SQS, PostgreSQL, Slack (через ботов приложения Slack) и FireMon Cloud Defense.
Основная концепция ElectricEye — это Auditor — наборы скриптов Python, которые выполняют Check для каждого сервиса, посвящённого конкретному SaaS-вендору или облачному провайдеру, называемому Assessment Target. Вы можете запустить весь Assessment Target, конкретный Auditor или конкретный Check внутри Auditor. После завершения оценок ElectricEye поддерживает более десятка типов Outputs — от исполнительного отчёта в HTML до кластеров AWS DocumentDB — вы можете запускать несколько Outputs по своему усмотрению.
ElectricEye также использует другие инструменты, такие как Shodan.io, detect-secrets от Yelp, VirusTotal, Каталог известных уязвимостей (KEV) Агентства кибербезопасности и инфраструктурной безопасности США (CISA), и NMAP для выполнения проверок и обогащения их результатов.
Сначала клонируйте этот репозиторий и установите зависимости с помощью pip3: pip3 install -r requirements.txt.
Если вы оцениваете что-то кроме вашего локального AWS-аккаунта, измените TOML-конфигурацию, расположенную в ElectricEye/eeauditor/external_providers.toml, или укажите путь к своей с помощью --toml-path. Файл TOML задаёт параметры нескольких аккаунтов, регионов, учётных данных и вывода.
Наконец, запустите Controller, чтобы узнать о различных Check, Auditor, Assessment Target и Outputs.``` python3 eeauditor/controller.py --help Usage: controller.py [OPTIONS]
Options: -t, --target-provider [AWS|Azure|OCI|GCP|Servicenow|M365|Salesforce|Snowflake] Public cloud or SaaS assessment target, ensure that any -a or -c arg maps to your target provider to avoid any errors. e.g., -t AWS -a Amazon_APGIW_Auditor -a, --auditor-name TEXT Specify which Auditor you want to run by using its name NOT INCLUDING .py. . Use the --list-checks arg to receive a list. Defaults to ALL Auditors -c, --check-name TEXT A specific Check in a specific Auditor you want to run, this correlates to the function name. Use the --list-checks arg to receive a list. Defaults to ALL Checks -d, --delay INTEGER Time in seconds to sleep between Auditors being ran, defaults to 0. Use this argument to avoid rate limiting -o, --outputs TEXT A list of Outputs (files, APIs, databases, ChatOps) to send ElectricEye Findings, specify multiple with additional arguments: -o csv -o postgresql -o slack [default: ocsf_stdout] -of, --output-file TEXT For file outputs such as JSON and CSV, the name of the file, DO NOT SPECIFY .file_type [default: output] -lo, --list-options Lists all valid Output options -lch, --list-checks Prints a table of Auditors, Checks, and Check descriptions to stdout - use this command for help with populating -a (Auditor selection) or -c (Check selection) args -lco, --list-controls Lists all ElectricEye controls - that is to say: the Check Titles - for an Assessment Target -tp, --toml-path TEXT The full path to the TOML file used for configure e.g., ~/path/to/mydir/external_providers.toml. If this value is not provided the default path of ElectricEye/eeauditor/external_providers. toml is used. --help Show this message and exit.
Дополнительную информацию см. [здесь](#configuring-electriceye), вы можете прочитать [FAQ здесь](https://github.com/jonrau1/electriceye/blob/HEAD/docs/faq/FAQ.md), информацию о [Outputs здесь](https://github.com/jonrau1/electriceye/blob/HEAD/docs/outputs/OUTPUTS.md) или, если хотите более глубокий анализ потока управления и концепций, ознакомьтесь с [Руководством разработчика](https://github.com/jonrau1/electriceye/blob/HEAD/docs/new_checks/DEVELOPER_GUIDE.md).
## Настройка ElectricEye
Обратитесь к подзаголовкам для получения инструкций по настройке для каждого CSP или SaaS. Перейдите к [Outputs](https://github.com/jonrau1/electriceye/blob/HEAD/docs/outputs/OUTPUTS.md), чтобы, собственно, узнать о Outputs и примерах.
### Провайдеры публичных облачных услуг
- [Для Amazon Web Services (AWS)](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_AWS.md)
- [Для Google Cloud Platform (GCP)](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_GCP.md)
- [Для Oracle Cloud Infrastructure](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_OCI.md)
- [Для Microsoft Azure](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_Azure.md)
Следующие провайдеры облачных услуг находятся в дорожной карте
- [Для Alibaba Cloud (*Скоро*)](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_AlibabaCloud.md)
### Провайдеры программного обеспечения как услуги (SaaS)
- [Для ServiceNow](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_ServiceNow.md)
- [Для Microsoft M365](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_M365.md)
- [Для Salesforce](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_Salesforce.md)
- [Для Snowflake](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_Snowflake.md)
Следующие SaaS-провайдеры находятся в дорожной карте
- [Для Google Workspaces (*Скоро*)](https://github.com/jonrau1/electriceye/blob/HEAD/docs/setup/Setup_Google_Workspaces.md)
## Управление облачными активами (CAM)
Дополнительную информацию о концепции и схеме работы CAM ElectricEye см. в [документации по управлению активами](https://github.com/jonrau1/electriceye/blob/HEAD/docs/asset_management/ASSET_MANAGEMENT.md).
## Поддерживаемые сервисы и проверки
Всего имеется:
- **4** Поддерживаемых публичных CSP: `AWS`, `GCP`, `OCI` и `Azure`
- **4** Поддерживаемых SaaS-провайдера: `ServiceNow`, `M365`, `Salesforce` и `Snowflake`
- **1196** проверок ElectricEye
- **179** поддерживаемых компонентов активов CSP и SaaS во всех сервисах
- **135** аудиторов ElectricEye
Таблицы поддерживаемых сервисов и проверок перенесены в соответствующую документацию по настройке для каждого провайдера, указанную выше в разделе [Настройка ElectricEye](#configuring-electriceye).
## ElectricEye на Docker
После настройки ElectricEye для вашего окружения (окружений) с помощью [TOML-конфигурации](https://github.com/jonrau1/electriceye/blob/HEAD/eeauditor/external_providers.toml) вы можете вместо этого использовать Docker для запуска ElectricEye; образы поддерживаются на ECR Public, Oracle Cloud Container Registry (OCR) и Docker Hub. Подробнее о мероприятиях по обеспечению безопасности можно прочитать [здесь](#repository-security), в будущем будут использоваться дополнительные реестры и подпись образов.
### Сборка образов
Если вы предпочитаете собрать собственный образ, используйте следующие команды. Обязательно добавьте `sudo`, если у вас нет пользователя `docker`, правильно настроенного в вашей системе.```bash
git clone https://github.com/jonrau1/ElectricEye.git
cd ElectricEye
docker build -t electriceye:local .
Отсюда вы можете отправить в выбранный репозиторий, не забудьте изменить тег с local на тот, который ожидает ваш репозиторий или который вы предпочитаете. Возможно, просто latest, как какой-нибудь декамиллиардер-сигма с подходом гриндсета? гигачад?
Вы также можете загрузить образ ElectricEye из различных репозиториев; тег latest всегда будет публиковаться вместе с образом, помеченным SHA-хешем рабочего процесса ${{ github.sha }}, и его можно увидеть в различных GitHub Action Workflows на шаге Print Image.
Для загрузки из различных репозиториев используйте эти команды, вы можете заменить latest по своему усмотрению. Зависимости внутри ElectricEye остаются относительно стабильными, пока не будет добавлено новое облако или крупная интеграция. Для уверенности проверьте Pull Requests.
Amazon Elastic Container Registry (ECR) Public: docker pull public.ecr.aws/t4o3u7t2/electriceye:latest
Oracle Cloud Infrastructure Registry (OCIR): docker pull iad.ocir.io/idudmagprsdi/electriceye:latest
Docker Hub: docker pull electriceye/electriceye
При взаимодействии с хранилищами учетных данных AWS, такими как AWS Systems Manager, AWS Secrets Manager, и выводами, такими как AWS Security, а также для принятия роли, указанной в параметре TOML aws_electric_eye_iam_role_name, ElectricEye использует вашу текущую (стандартную) сессию Boto3, которая получается из ваших учетных данных.
При запуске ElectricEye из инфраструктуры AWS, имеющей прикрепленную роль, или из местоположения с уже инициализированными учетными данными aws cli, это обрабатывается прозрачно.
При использовании Docker вам потребуется передать переменные окружения непосредственно контейнеру.
Убедитесь, что если вы будете использовать AWS SSM (ssm:GetParameter), AWS Secrets Manager (secretsmanager:GetSecretValue), AWS Security Hub (securityhub:BatchImportFindings), Amazon SQS (sqs:SendMessage) и/или Amazon DynamoDB (dynamodb:PutItem) для учетных данных и выводов, у вас есть соответствующие разрешения! Скорее всего, вам также потребуется kms:Decrypt в зависимости от того, используете ли вы управляемые клиентом ключи (CMK) AWS Key Management Service (KMS) для шифрования секретов/параметров.
Вам потребуется sts:AssumeRole, чтобы принять роль, указанную в параметре TOML aws_electric_eye_iam_role_name.
Вам нужно будет передать ваш регион AWS, ключ доступа AWS (AWS Access Key) и секретный ключ доступа AWS (AWS Secret Access Key). Если вы НЕ используете пользователя AWS IAM с ключами доступа, вам также потребуется предоставить токен сессии AWS (AWS Session Token), который создается временными учетными данными, такими как роль IAM или профиль экземпляра EC2.
Если вы используете пользователя, перейдите к следующему шагу, вам нужно будет подготовить учетные данные для копирования. Если вы используете профиль экземпляра EC2 или дополнительную роль IAM, которую вы будете принимать, убедитесь, что у вас установлен jq: apt install -y jq или yum install jq.
- Для принятия роли IAM и получения временных учетных данных```bash AWS_ACCOUNT_ID=$(aws sts get-caller-identity | jq -r '.Account') MY_ROLE_NAME='iam-role-name' TEMP_CREDS=$(aws sts assume-role --role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/$MY_ROLE_NAME --role-session-name ElectriceyeForDocker) AWS_ACCESS_KEY=$(echo $TEMP_CREDS | jq -r '.Credentials.AccessKeyId') AWS_SECRET_KEY=$(echo $TEMP_CREDS | jq -r '.Credentials.SecretAccessKey') AWS_SESSION_TOKEN=$(echo $TEMP_CREDS | jq -r '.Credentials.SessionToken') MY_REGION='aws-region-here'
> - Для получения временных учетных данных для EC2 Instance Profile с использованием Instance Metadata Service Version 1```bash
MY_INSTANCE_PROFILE_ROLE_NAME="my_ec2_role_name"
IMDS_SECURITY_CREDENTIALS=$(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/$MY_INSTANCE_PROFILE_ROLE_NAME)
MY_REGION='my_aws_region'
AWS_ACCESS_KEY=$(echo $IMDS_SECURITY_CREDENTIALS | jq -r '.AccessKeyId')
AWS_SECRET_KEY=$(echo $IMDS_SECURITY_CREDENTIALS | jq -r '.SecretAccessKey')
AWS_SESSION_TOKEN=$(echo $IMDS_SECURITY_CREDENTIALS | jq -r '.Token')
- Чтобы получить временные учетные данные для профиля экземпляра EC2 с помощью Instance Metadata Service Version 2```bash MY_INSTANCE_PROFILE_ROLE_NAME="my_ec2_role_name" TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 300") IMDSV2_SECURITY_CREDENTIALS=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/$MY_INSTANCE_PROFILE_ROLE_NAME) MY_REGION='my_aws_region' AWS_ACCESS_KEY=$(echo $IMDSV2_SECURITY_CREDENTIALS | jq -r '.AccessKeyId') AWS_SECRET_KEY=$(echo $IMDSV2_SECURITY_CREDENTIALS | jq -r '.SecretAccessKey') AWS_SESSION_TOKEN=$(echo $IMDSV2_SECURITY_CREDENTIALS | jq -r '.Token')
Вы также можете получить временные учетные данные из федеративных идентификаторов, подробнее читайте по ссылкам [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) или [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) или обратитесь к более полной документации по временным учетным данным [здесь](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerole).
### Запуск контейнера ElectricEye
Запустите ElectricEye с помощью следующих команд, передавая свои учетные данные сессии. Измените команды внутри контейнера, чтобы оценить различные среды с помощью ElectricEye. Измените значение `/path/to/my/external_providers.toml` на ваш точный путь, например, `~/electriceye-docker/external_providers.toml`.
**ВАЖНОЕ ПРИМЕЧАНИЕ** Если вы используете пользователя AWS IAM с ключами доступа, пропишите значения жестко и опустите значение для `AWS_SESSION_TOKEN`!! Если вы запускаете этот контейнер в сервисе контейнеров AWS/Kubernetes, вам не нужно указывать эти значения!```bash
sudo docker run \
--user eeuser:eeuser \
-e AWS_DEFAULT_REGION=$MY_REGION \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY \
-e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \
-v /path/to/my/external_providers.toml:/eeauditor/external_providers.toml \
electriceye /bin/bash -c "python3 eeauditor/controller.py --help"
Чтобы сохранить локальный вывод в файл, например, с флагами -o json, -o cam-json, -o csv или -o html и так далее, убедитесь, что вы указываете имя файла, начинающееся с /eeauditor/, так как пользователь eeuser внутри Docker-образа имеет разрешения только в пределах этого каталога.
Чтобы удалить файлы, вы не можете использовать docker cp, но вы можете отправить файл на удалённые API, которыми вы управляете, закодировав вывод в base64, или использовать сессию с разрешениями AWS S3 для загрузки файла в S3.
Если вы используете Oracle Cloud или Google Cloud Platform, ваши учётные данные будут загружены локально, и вы сможете загружать файлы соответственно в Oracle Object Storage или Google Cloud Storage.```bash
BUCKET_NAME="your_s3_bucket_you_have_access_to"
sudo docker run
--user eeuser:eeuser
-e AWS_DEFAULT_REGION=$MY_REGION
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
-e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN
-v /path/to/my/external_providers.toml:/eeauditor/external_providers.toml
electriceye /bin/bash -c "python3 eeauditor/controller.py -t AWS -o json --output-file /eeauditor/my-aws-findings
&& aws s3 cp /eeauditor/my-aws-findings.json s3://$BUCKET_NAME/eefindings.json"
Для получения дополнительной информации о конфигурации обязательно обратитесь к инструкциям по настройке для каждого Провайдера.
## Участие в разработке
Обратитесь к [Руководству разработчика](https://github.com/jonrau1/electriceye/blob/HEAD/docs/new_checks/DEVELOPER_GUIDE.md) за инструкциями по созданию новых проверок. Для поддержки новых SaaS и CSP, пожалуйста, откройте Issue.
Приветствуются Pull Request'ы и Issues, в которых обнаруживаются ошибки синтаксиса, грамматики и реализации в кодовой базе.
### ElectricEye продаётся
Пишите мне на [email protected] (на самом деле у меня нет SaaS-инструмента), и я с радостью продам права на этот репозиторий, удалю его и передам вам все домены и даже AWS-аккаунты, которые я использую за кулисами.
### Ранние участники
Быстрая благодарность тем, кто откликнулся на призыв раньше всех, чтобы протестировать ElectricEye и сделать его не-дерьм-бутербродом.
##### Альфа-тестирование:
- [Mark Yancey](https://www.linkedin.com/in/mark-yancey-jr-aspiring-cloud-security-professional-a52bb9126/)
##### Бета-тестирование:
- [Martin Klie](https://www.linkedin.com/in/martin-klie-0600845/)
- [Joel Castillo](https://www.linkedin.com/in/joelbcastillo/)
- [Juhi Gupta](https://www.linkedin.com/in/juhi-gupta-09/)
- [Bulent Yidliz](https://www.linkedin.com/in/bulent-yildiz/)
- [Guillermo Ojeda](https://www.linkedin.com/in/guillermoojeda/)
- [Dhilip Anand Shivaji](https://www.linkedin.com/in/dhilipanand/)
- [Arek Bar](https://www.linkedin.com/in/arkadiuszbar/)
- [Ryan Russel](https://www.linkedin.com/in/pioneerrussell/)
- [Jonathan Nguyen](https://www.linkedin.com/in/jonanguyen/)
- [Jody Brazil](https://www.linkedin.com/in/jodybrazil/)
- [Dylan Shields](https://www.linkedin.com/in/dylan-shields-6802b1168/)
- [Manuel Leos Rivas](https://www.linkedin.com/in/manuel-lr/)
- [Andrew Alaniz](https://www.linkedin.com/in/andrewdalaniz/)
- [Christopher Childers](https://www.linkedin.com/in/christopher-childers-28950537/)
## Часто задаваемые вопросы (FAQ)
Это сделано в амазоновском стиле, то есть ни один из этих вопросов не является часто задаваемым, и они призваны помочь менеджерам по продукту понять, хороши ли их идеи...
Тем не менее, некоторые из этих вопросов действительно задают. Так что, пожалуйста.
### 1. Что такое ElectricEye?
ElectricEye — это агентский инструмент командной строки (CLI) на Python, который сканирует и оценивает поставщиков облачных услуг (CSP) и поставщиков программного обеспечения как услуги (SaaS) на предмет конфигураций на уровне сервисов. ElectricEye генерирует результат прохождения или непрохождения проверки для каждого ресурса по множеству проверок, которые соответствуют лучшим практикам управления безопасностью, а также другим проверкам гигиены, таким как отказоустойчивость, восстановление, оптимизация производительности и мониторинг. ElectricEye охватывает популярных провайдеров, таких как AWS, GCP, ServiceNow и других.
### 2. Кто должен использовать ElectricEye?
ElectricEye может использоваться любым лицом в облачной организации, выполняющим функции безопасности или ИТ, такими как (но не ограничиваясь): инженеры по безопасности, Dev(Sec)Ops-инженеры, SRE/платформенные инженеры, архитекторы (различных направлений), аналитики по управлению/рискам/соответствию, SOC/SecOps-аналитики, облачные консультанты, команды наступательной безопасности (Red/Blue/Purple) и аналитики по управлению рисками третьих сторон. ElectricEye также может использоваться ИТ-операциями, аналитиками по управлению технологическим бизнесом/ITFM, аналитиками по непрерывности бизнеса и менеджерами по активам, так как ElectricEye предлагает встроенные возможности управления облачными активами.
### 3. Зачем кому-то использовать ElectricEye?
ElectricEye следует использовать любому, кто хочет убедиться, что его облачные вендоры и весь спектр их услуг настроены для обеспечения наилучшей гигиены безопасности. ElectricEye имеет самое широкое покрытие услуг и является единственным инструментом управления безопасностью двойного назначения (Security Posture Management, SPM), который предлагается бесплатно как для управления безопасностью облачных сред (CSPM), так и для управления безопасностью SaaS (SSPM). ElectricEye также имеет встроенные возможности обнаружения секретов и управления внешней поверхностью атак (EASM), а также управления облачными активами (CAM) с собственной иерархией для поддержки межоблачного, межграничного управления и отчётности по активам.
### 4. Является ли ElectricEye CSPM?
Да, ElectricEye — это инструмент управления безопасностью облачных сред (CSPM). Он предоставляет API-сканирование (без агентов) облачной инфраструктуры и гарантирует, что сервисы настроены в соответствии с лучшими практиками.
### 5. Является ли ElectricEye SSPM?
Да, ElectricEye — это инструмент управления безопасностью SaaS (SSPM). Он предоставляет API-сканирование (без агентов) API-интерфейсов SaaS-вендоров и гарантирует, что пользователи и сервисы настроены в соответствии с лучшими практиками.
### 6. Является ли ElectricEye CIEM?
Нет, ElectricEye не является инструментом управления правами доступа к облачной инфраструктуре (CIEM). Хотя ElectricEye предоставляет несколько проверок управления идентификацией и доступом (IAM) и выполняет оценку каждого пользователя на предмет MFA, ротации паролей и минимизации разрешений, он не является CIEM. ElectricEye не поддерживает широкую оценку политик в нескольких брокерах, провайдерах и границах идентичности, а также не предоставляет возможности исправления или управления правами Just In Time (JIT).
### 7. Является ли ElectricEye SIEM?
Нет, ElectricEye не является системой управления информацией и событиями безопасности (SIEM). SIEM-инструменты используются для сбора, индексации и корреляции журналов, событий безопасности и других полуструктурированных и структурированных данных для использования в операциях безопасности. Хотя результаты ElectricEye могут быть отправлены в SIEM, сам по себе ElectricEye не является SIEM.
### 8. Является ли ElectricEye инструментом аудита/соответствия?
Нет, ElectricEye не является *напрямую* инструментом аудита или соответствия. Хотя каждый результат сопоставлен с популярными и широко используемыми режимами соответствия требованиям безопасности, такими как NIST CSF v1.1 и AICPA 2020 TSCs, ElectricEye предоставляет только сопоставления для целей контроля с максимально возможным качеством и не заменяет аудитора или другого квалифицированного оценщика, проводящего аудит вашей среды. ElectricEye можно использовать как инструмент для оценки готовности к аудиту. Вы можете взять выборки результатов, если контроль облачной инфраструктуры важен для вашей общей программы безопасности. Контрольные меры — это технические или административные (т.е. политика или процедура) меры противодействия, предназначенные для защиты желаемых результатов программы безопасности или конфиденциальности. Контрольные меры защищают конфиденциальность, целостность и доступность информационных систем. ElectricEye может помочь определить, соответствует ли конфигурация вашей облачной инфраструктуры «духу» контрольных мер, но **НЕ** заменяет аттестацию, сертификацию или какой-либо другой оккультный ритуал.
### 9. Что такое «Готовность к аудиту»?
ElectricEye использует термин «Готовность к аудиту» при описании предполагаемых случаев использования сопоставлений с его структурами контроля. ElectricEye может использоваться квалифицированными оценщиками для проведения оценки вашей среды, может использоваться вами для предоставления доказательств оценщикам, но лучше всего его использовать для подготовки или проверки вашей готовности к аудиту. Однако у вас уже должны быть определены собственные внутренние контрольные меры и собственная стратегия управления конфигурацией при внедрении контрольных мер. Например, вы можете решить, что шифрование всех очередей SQS с помощью AWS KMS CMK стоит слишком дорого и не дает значительных преимуществ в безопасности. Вы должны выполнить эту «предварительную работу», прежде чем использовать ElectricEye для поддержки ваших внутренних процессов GRC.
### 10. Какие структуры контроля поддерживает ElectricEye?
Список поддерживаемых ElectricEye структур контроля постоянно обновляется по мере появления новых версий и сопоставлений. По состоянию на 21 ИЮНЯ 2024 года поддерживаются следующие стандарты, структуры и законодательные требования.
- NIST Cybersecurity Framework Version 1.1
- NIST Special Publication 800-53 Revision 4
- NIST Special Publication 800-53 Revision 5
- NIST Special Publication 800-171 Revision 2
- American Institute of Certified Public Accountants (AICPA) Trust Service Criteria (TSC) 2017/2020 для SOC 2
- ISO/IEC 27001:2013/2017 Приложение A
- ISO/IEC 27001:2022 Приложение A
- Center for Internet Security (CIS) Critical Security Controls Version 8
- Cloud Security Alliance (CSA) Cloud Controls Matrix (CCM) Version 4.0
- United States Department of Defense Cybersecurity Maturity Model Certification (CMMC) Version 2.0
- United States Federal Bureau of Investigation (FBI) Criminal Justice Information System (CJIS) Security Policy Version 5.9
- United Kingdom National Cybercrime Security Center (NCSC) Cyber Essentials Version 2.2
- United Kingdom National Cybercrime Security Center (NCSC) Assessment Framework Version 3.1
- HIPAA «Правило безопасности» (Security Rule) Кодекс США 45 CFR Part 164 Subpart C
- Federal Financial Institutions Examination Council (FFIEC) Cybersecurity Assessment Tool (CAT)
- North American Electric Reliability Corporation (NERC) Critical Infrastructure Protection (CIP) Standard
- New Zealand Information Security Manual Version 3.5
- New York Department of Financial Services (NYDFS) Series 23 NYCRR Part 500; также известный как NYDFS500
- Critical Risk Institute (CRI) Critical Risk Profile Version 1.2
- European Central Bank (ECB) Cyber Resilience Oversight Expectations (CROEs)
- Equifax Security Controls Framework Version 1.0
- Payment Card Industry (PCI) Data Security Standard (DSS) Version 4.0
- MITRE ATT&CK Enterprise Framework
- CIS AWS Database Services Benchmark V1.0
- CIS Amazon Web Services Foundations Benchmark V1.5
- CIS Amazon Web Services Foundations Benchmark V2.0
- CIS Amazon Web Services Foundations Benchmark V3.0
- CIS Microsoft Azure Foundations Benchmark V2.0.0
- CIS Snowflake Foundations Benchmark V1.0.0
- CIS Google Cloud Platform Foundation Benchmark V2.0
## Безопасность репозитория
Поскольку ElectricEye — это инструмент безопасности, вполне логично обеспечить высокий уровень безопасности компонентов. Для этого настроены следующие инструменты. Обратитесь к значкам сборки и Actions для получения подробной информации о каждом запуске.
#### [`Syft`](https://github.com/anchore/syft)
Смотрите [результаты здесь](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)!
Инструмент командной строки и библиотека Go для создания Software Bill of Materials (SBOM) из образов контейнеров и файловых систем.
ElectricEye использует Syft для создания SBOM на основе собранного Docker-образа ElectricEye в формате CycloneDX и загружает его как артефакт в каждый успешный запуск GitHub Action.
#### [`Grype`](https://github.com/anchore/grype)
Смотрите [результаты здесь](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)!
Сканер уязвимостей для образов контейнеров и файловых систем. Легко установите бинарный файл, чтобы попробовать. Работает с Syft — мощным инструментом SBOM (Software Bill of Materials) для образов контейнеров и файловых систем.
ElectricEye передаёт CycloneDX SBOM от `Syft` в `Grype` для выполнения сканирования уязвимостей собранного Docker-образа, который объединяет все зависимости Python и встроенные методы внутри родительского Docker-образа `alpine`, который использует ElectricEye. Сборки с критическими уязвимостями автоматически прерываются. Результаты публикуются в GitHub Action и загружаются как `sarif` в GitHub Security.
#### [`Dependabot`](https://github.com/dependabot)
Оповещения Dependabot сообщают вам, что ваш код зависит от пакета, который небезопасен. Если ваш код зависит от пакета с уязвимостью безопасности, это может вызвать ряд проблем для вашего проекта или людей, которые его используют. Вы должны как можно скорее обновиться до безопасной версии пакета. Если ваш код использует вредоносное ПО, вам необходимо заменить пакет на безопасную альтернативу.
ElectricEye использует Dependabot как инструмент анализа состава программного обеспечения (SCA) для ежедневного сканирования и открытия Pull Request'ов в случае, если зависимость Docker, Python или GitHub-Action требует исправления безопасности.
#### [`CodeQL`](https://docs.github.com/ru/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql)
Смотрите [результаты здесь](https://github.com/jonrau1/ElectricEye/actions/workflows/codeql-analysis.yml)!
CodeQL — это механизм анализа кода, разработанный GitHub для автоматизации проверок безопасности. Вы можете анализировать свой код с помощью CodeQL и отображать результаты в виде оповещений сканирования кода.
ElectricEye использует `codeql` как инструмент статического тестирования безопасности приложений (SAST) для сканирования всех аудиторов, написанных на Python. `codeql` также ищет секреты в коде. Он запускается при push и по расписанию.
## Лицензия
Эта библиотека лицензирована в соответствии с лицензией Apache-2.0. Смотрите файл LICENSE.