jonrau1/ElectricEye
GitHub: jonrau1/ElectricEye
一款多云与 SaaS 安全态势管理工具,提供资产清点、合规审计及攻击面监控功能。
Stars: 1034 | Forks: 137
# ElectricEye
***我俯视着你***
***我的激光追踪***
***你所做的一切***
*Judas Priest, 1982* ## 目录 - [工作流程](#workflow) - [快速概览](#quick-run-down-running-running) - [配置 ElectricEye](#configuring-electriceye) - [云资产管理](#cloud-asset-management-cam) - [支持的服务和检查项](#supported-services-and-checks) - [Docker 版 ElectricEye](#electriceye-on-docker) - [输出](./docs/outputs/OUTPUTS.md) - [贡献](#contributing) - [常见问题解答](#faq) - [开发者与测试指南](./docs/new_checks/DEVELOPER_GUIDE.md) - [仓库安全](#repository-security) - [许可证](#license) ## 工作流程  ## 快速概览 :running: :running: - ElectricEye 是一个 Python CLI 工具,提供跨账户、跨区域、多云和 SaaS 的资产管理、安全态势管理和攻击面监控功能,支持 [AWS(支持所有分区!)](https://aws.amazon.com/)、[GCP](https://cloud.google.com/)、[Oracle Cloud Infrastructure (OCI)](https://www.oracle.com/cloud/)、[ServiceNow](https://www.servicenow.com/)、[Microsoft 365 Enterprise (*M365*)](https://www.microsoft.com/en-us/microsoft-365/compare-microsoft-365-enterprise-plans)、[Salesforce (*SFDC*)](https://help.salesforce.com/s) 和 [Azure](https://portal.azure.com/)。 - ElectricEye 针对超过 100 种 CSP 和 SaaS 服务提供 *1000 多项* 检查,涵盖安全性、弹性、性能和财务最佳实践,包括 CSP/SaaS 原生资产管理工具/视图或主流 CSPM 和 CNAPP 工具不支持的非典型服务。 - 每一项检查都映射到 20 多个控制框架,涵盖通用最佳实践、监管、行业特定和法律框架,例如 NIST CSF、AICPA TSCs(用于 SOC 2)、HIPAA 安全规则、NIST 800-171 Rev. 2、CMMC V2.0、欧洲央行 CROE 第 2 节、PCI-DSS V4.0、CIS 基础基准等! - 多维度的攻击面监控使用 VirusTotal、Nmap、Shodan.io、Detect-Secrets 和 CISA 的 KEV 等工具,分别用于定位互联网上索引的资产、发现暴露的服务、查找可利用的漏洞以及工件仓库中的恶意软件包。 - 输出至 [AWS Security Hub](https://aws.amazon.com/security-hub/)、[开放网络安全框架 (OCSF)](https://github.com/ocsf/) [V1.1.0](https://schema.ocsf.io/1.1.0/?extensions=) JSON、[AWS DocumentDB](https://aws.amazon.com/documentdb/)、JSON、CSV、HTML 报告、[MongoDB](https://www.mongodb.com/)、[Amazon SQS](https://aws.amazon.com/sqs/)、[PostgreSQL](https://www.postgresql.org/)、[Slack](https://slack.com/)(通过 Slack App Bots)和 [FireMon Cloud Defense](https://www.firemon.com/introducing-disruptops/)。 ElectricEye 的核心概念是 **Auditor(审计器)**,它是一组 Python 脚本,针对称为 **Assessment Target(评估目标)** 的特定 SaaS 供应商或公有云服务提供商的每个服务运行 **Checks(检查)**。您可以运行整个评估目标、特定的审计器,或审计器中的特定检查。ElectricEye 完成评估后,支持十多种 **Outputs(输出)** 类型,从 HTML 执行报告到 AWS DocumentDB 集群——您可以根据需要运行多种输出。 ElectricEye 还利用其他工具,如 [Shodan.io](https://www.shodan.io/)、[Yelp 的 `detect-secrets`](https://pypi.org/project/detect-secrets/)、[VirusTotal](https://www.virustotal.com/gui/home/upload)、[美国网络安全和基础设施安全局 (CISA)](https://www.cisa.gov/) [已知被利用漏洞 (KEV)](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) 目录和 [NMAP](https://nmap.org/) 来执行检查并丰富其发现结果。 1. 首先,克隆此仓库并使用 `pip3` 安装依赖项:`pip3 install -r requirements.txt`。 2. 如果您要评估本地 AWS 账户以外的任何内容,请修改位于 `ElectricEye/eeauditor/external_providers.toml` 的 [TOML 配置](./eeauditor/external_providers.toml),或使用 `--toml-path` 提供您自己的配置路径。TOML 文件指定了多账户、多区域、凭证和输出的详细信息。 3. 最后,运行 Controller 以了解各种检查、审计器、评估目标和输出。 ``` 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-electricey),您可以在[此处阅读常见问题解答](./docs/faq/FAQ.md),[输出信息在此](./docs/outputs/OUTPUTS.md),或者,如果您想深入分析控制流和概念,请查阅[开发者指南](./docs/new_checks/DEVELOPER_GUIDE.md)。 ## 配置 ElectricEye 请参阅子标题以获取每个 CSP 或 SaaS 的设置说明。前往[输出](./docs/outputs/OUTPUTS.md)以了解输出和示例。 ### 公有云服务提供商 - [适用于 Amazon Web Services (AWS)](./docs/setup/Setup_AWS.md) - [适用于 Google Cloud Platform (GCP)](./docs/setup/Setup_GCP.md) - [适用于 Oracle Cloud Infrastructure](./docs/setup/Setup_OCI.md) - [适用于 Microsoft Azure](./docs/setup/Setup_Azure.md) 以下云服务提供商已在路线图中 - [适用于阿里云 (*即将推出*)](./docs/setup/Setup_AlibabaCloud.md) ### 软件即服务 提供商 - [适用于 ServiceNow](./docs/setup/Setup_ServiceNow.md) - [适用于 Microsoft M365](./docs/setup/Setup_M365.md) - [适用于 Salesforce](./docs/setup/Setup_Salesforce.md) - [适用于 Snowflake](./docs/setup/Setup_Snowflake.md) 以下 SaaS 提供商已在路线图中 - [适用于 Google Workspaces (*即将推出*)](./docs/setup/Setup_Google_Workspaces.md) ## 云资产管理 (CAM) 有关 ElectricEye 的 CAM 运作概念和架构的更多信息,请参阅[资产管理文档](./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) 中链接的各提供商设置文档。 ## Docker 版 ElectricEye 使用 [TOML 配置](./eeauditor/external_providers.toml) 为您的环境配置 ElectricEye 后,您可以改为使用 Docker 运行 ElectricEye,其镜像维护在 ECR Public、Oracle Cloud Container Registry (OCR) 和 Docker Hub 上。您可以在[此处](#repository-security)阅读有关安全保证活动的更多信息,未来将使用更多的注册中心和镜像签名。 ### 构建镜像 如果您想构建自己的镜像,请使用以下命令。如果您的系统中没有正确设置 `docker` 用户,请务必添加 `sudo`。 ``` git clone https://github.com/jonrau1/ElectricEye.git cd ElectricEye docker build -t electriceye:local . ``` 从这里,您可以推送到您选择的仓库,务必将标签从 `local` 更改为您的仓库期望的标签或您喜欢的任何标签。也许就像一位亿万富翁、西格玛奋斗者、超级猛男那样直接用 `latest`? ### 拉取镜像 您也可以从各个仓库拉取 ElectricEye 镜像,`latest` 镜像标签将始终与标记为工作流 SHA 哈希 `${{ github.sha }}` 的镜像一起推送,可以在各个 GitHub Action 工作流的 `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` ### 设置会话 #### 注意!!如果您在 TOML 中使用硬编码凭证,并且不使用任何 AWS 输出或运行任何 AWS 审计器,则可以跳过此部分 当与 AWS 凭证存储(如 AWS Systems Manager、AWS Secrets Manager)和输出(如 AWS Security)交互,以及代入 `aws_electric_eye_iam_role_name` TOML 参数中指定的角色时,ElectricEye 使用您当前的(默认)Boto3 会话,该会话源自您的凭证。 从附加了角色的 AWS 基础设施运行 ElectricEye,或从已实例化 `aws cli` 凭证的位置运行,此过程是透明处理的。 使用 Docker 时,您需要直接向容器提供[环境变量](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables)。 确保如果您将使用 AWS SSM (`ssm:GetParameter`)、AWS Secrets Manager (`secretsmanager:GetSecretValue`)、AWS Security Hub (`securityhub:BatchImportFindings`)、Amazon SQS (`sqs:SendMessage`) 和/或 Amazon DynamoDB (`dynamodb:PutItem`) 进行凭证和输出,请确保您拥有适当的权限!根据您是否使用 AWS Key Management Service (KMS) 客户托管密钥 (CMK) 进行机密/参数加密,您可能还需要 `kms:Decrypt`。 您需要 `sts:AssumeRole` 以代入 `aws_electric_eye_iam_role_name` TOML 参数中指定的角色。 您需要传入您的 AWS 区域、AWS 访问密钥和 AWS 秘密访问密钥。如果您使用的不是具有访问密钥的 AWS IAM 用户,您还需要提供 AWS 会话令牌,该令牌由临时凭证(如 IAM 角色或 EC2 实例配置文件)生成。 如果您使用的是用户,请继续下一步,您需要准备好凭证以进行复制。如果您使用的是 EC2 实例配置文件或您将代入的附加 IAM 角色,请确保已安装 `jq`:`apt install -y jq` 或 `yum install jq`。 ``` 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' ``` ``` 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') ``` ``` 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 服务上运行此容器,则不需要提供这些值! ``` 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/` 开头的文件名,因为 Docker 镜像中的 `eeuser` 仅在该目录内拥有权限。 要移除文件,您无法使用 `docker cp`,但您可以通过 `base64` 编码输出将其提交到您控制的远程 API,或者您可以使用具有 AWS S3 权限的会话将文件上传到 S3。 如果您正在评估 Oracle Cloud 或 Google Cloud Platform,您的凭证将在本地加载,您可以分别上传到 Oracle Object Storage 或 Google Cloud Storage 存储桶。 ``` 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" ``` 有关更多配置信息,请确保回顾各提供商的设置说明。 ### ElectricEye 待售 请通过 opensource@electriceye.cloud 联系我(我实际上 SaaS 工具),我很乐意出售此仓库的权利并将其下架,并将所有域名甚至我在幕后使用的 AWS 账户都给您。 ## 常见问题解答 这是按照亚马逊风格完成的,也就是说,这些问题都不是经常被问到的,而是旨在帮助产品经理弄清楚他们的想法是否靠谱…… 话虽如此,有些问题确实有人问。所以,不客气。 ### 1. 什么是 ElectricEye? ElectricEye 是一个无代理的 Python 命令行界面 (CLI) 工具,用于扫描和评估云服务提供商 和软件即服务 供应商的服务级配置。ElectricEye 针对多项检查为每个资源生成通过或失败的发现,这些检查符合安全态势管理最佳实践以及其他卫生检查,如弹性、恢复、性能优化和监控。ElectricEye 涵盖 AWS、GCP、ServiceNow 等热门提供商。 ### 2. 谁应该使用 ElectricEye? 云组织中的安全或 IT 职能部门的任何角色都可以使用 ElectricEye,包括(但不限于)安全工程师、Dev(Sec)Ops 工程师、SRE/平台工程师、架构师(各种类型)、治理/风险/合规分析师、SOC/SecOps 分析师、云顾问、进攻性安全(红/蓝/紫)团队和第三方风险分析师。ElectricEye 还可供 IT 运维、技术业务管理/ITFM 分析师、业务连续性分析师和资产管理者使用,因为 ElectricEye 提供原生的云资产管理功能。 ### 3. 为什么应该使用 ElectricEye? 任何希望确保其云供应商及其全方位服务配置达到最佳安全卫生状态的人都应该使用 ElectricEye。ElectricEye 拥有最广泛的服务覆盖范围,并且是唯一一款同时免费提供云安全态势管理 (CSPM) 和 SaaS 安全态势管理 (SSPM) 的双用途安全态势管理 (SPM) 工具。ElectricEye 还内置了机密检测和外部攻击面管理 (EASM) 功能,以及具有自身层级的云资产管理 (CAM),以支持跨云、跨边界的资产管理和报告。 ### 4. ElectricEye 是 CSPM 吗? 是的,ElectricEye 是一款云安全态势管理 (CSPM) 工具,它提供基于 API(无代理)的云基础设施扫描,并确保服务配置符合最佳实践。 ### 5. ElectricEye 是 SSPM 吗? 是的,ElectricEye 是一款 SaaS 安全态势管理 (SSPM) 工具,它提供基于 API(无代理)的 SaaS 供应商 API 扫描,并确保用户和服务配置符合最佳实践。 ### 6. ElectricEye 是 CIEM 吗? 不是,ElectricEye 不是云基础设施权利管理 (CIEM) 工具。虽然 ElectricEye 确实提供了一些身份与访问管理检查,并对每个用户进行 MFA、密码轮换和权限最小化评估,但它不是 CIEM。ElectricEye 不具备跨多个身份代理、提供商和边界的广泛策略评估能力,也不提供任何补救或即时 权利管理功能。 ### 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 来评估您的环境,您可以将其作为证据提供给评估员,但其最佳用例是为审计做准备或查看您的审计准备情况。然而,在实施控制时,您应该已经定义了自己的内部控制和管理策略。例如,您可能决定使用 AWS KMS CMK 加密所有 SQS 队列成本太高且安全优势不多,在使用 ElectricEye 支持您的内部 GRC 流程之前,您必须完成这些“基础工作”。 ### 10. ElectricEye 支持哪些控制框架? ElectricEye 支持的控制框架总是随着新版本和映射的可用而更新,截至 2024 年 6 月 21 日,支持以下标准、框架和法律要求。 - NIST 网络安全框架版本 1.1 - NIST 特别出版物 800-53 修订版 4 - NIST 特别出版物 800-53 修订版 5 - NIST 特别出版物 800-171 修订版 2 - 美国注册会计师协会 (AICPA) 信任服务标准 (TSC) 2017/2020(用于 SOC 2) - ISO/IEC 27001:2013/2017 附录 A - ISO/IEC 27001:2022 附录 A - 互联网安全中心 (CIS) 关键安全控制版本 8 - 云安全联盟 (CSA) 云控制矩阵 (CCM) 版本 4.0 - 美国国防部网络安全成熟度模型认证 (CMMC) 版本 2.0 - 美国联邦调查局 (FBI) 刑事司法信息服务 (CJIS) 安全策略版本 5.9 - 英国国家网络安全中心 (NCSC) 网络基础版本 2.2 - 英国国家网络安全中心 (NCSC) 评估框架版本 3.1 - HIPAA“安全规则”美国法典 45 CFR 第 164 部分子部分 C - 联邦金融机构检查委员会 (FFIEC) 网络安全评估工具 (CAT) - 北美电力可靠性公司 (NERC) 关键基础设施保护 (CIP) 标准 - 新西兰信息安全手册版本 3.5 - 纽约金融服务部 (NYDFS) 23 NYCRR 第 500 部分系列;又称 NYDFS500 - 关键风险研究院 (CRI) 关键风险概况版本 1.2 - 欧洲中央银行 (ECB) 网络弹性监管期望 - Equifax 安全控制框架版本 1.0 - 支付卡行业 数据安全标准 (DSS) 版本 4.0 - MITRE ATT&CK 企业框架 - CIS AWS 数据库服务基准 V1.0 - CIS Amazon Web Services 基础基准 V1.5 - CIS Amazon Web Services 基础基准 V2.0 - CIS Amazon Web Services 基础基准 V3.0 - CIS Microsoft Azure 基础基准 V2.0.0 - CIS Snowflake 基础基准 V1.0.0 - CIS Google Cloud Platform 基础基准 V2.0 ## 仓库安全 由于 ElectricEye 是一款安全工具,因此确保组件的高安全性是理所当然的。为此,配置了以下工具以供使用。有关每次运行的详细信息,请参阅构建徽章和 Actions。 #### [`Syft`](https://github.com/anchore/syft) 请参阅[此处结果](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)! 一个用于从容器镜像和文件系统生成软件物料清单 (SBOM) 的 CLI 工具和 Go 库。 ElectricEye 使用 Syft 根据构建的 ElectricEye Docker 镜像以 CycloneDX 格式构建 SBOM,并将其作为工件上传到每次成功的 GitHub Action 运行中。 #### [`Grype`](https://github.com/anchore/grype) 请参阅[此处结果](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)! 一个用于容器镜像和文件系统的漏洞扫描器。轻松安装二进制文件即可试用。与 Syft 配合使用,Syft 是用于容器镜像和文件系统的强大 SBOM(软件物料清单)工具。 ElectricEye 将来自 `Syft` 的 CycloneDX SBOM 传递给 `Grype`,以对构建的 Docker 镜像执行漏洞扫描,该镜像结合了 ElectricEye 使用的 `alpine` Docker 镜像父级中的所有 Python 依赖项和内置方法。存在严重漏洞的构建会自动中断。结果将发布到 GitHub Action 并作为 `sarif` 上传到 GitHub Security。 #### [`Dependabot`](https://github.com/dependabot) Dependabot 警告告诉您您的代码依赖于一个不安全的包。如果您的代码依赖于一个有安全漏洞的包,这可能会给您的项目或使用它的人带来一系列问题。您应该尽快升级到该包的安全版本。如果您的代码使用了恶意软件,您需要用一个安全的替代品替换该包。 ElectricEye 使用 Dependabot 作为软件组合分析 (SCA) 工具来运行每日扫描,并在 Docker、Python 或 GitHub-Action 依赖项需要安全补丁时打开 Pull Requests。 #### [`CodeQL`](https://docs.github.com/en/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` 还会查找代码中的机密。它在推送时和按计划运行。 ## 许可证 本库根据 Apache-2.0 许可证授权。请参阅 LICENSE 文件。
***我俯视着你***
***我的激光追踪***
***你所做的一切***
*Judas Priest, 1982* ## 目录 - [工作流程](#workflow) - [快速概览](#quick-run-down-running-running) - [配置 ElectricEye](#configuring-electriceye) - [云资产管理](#cloud-asset-management-cam) - [支持的服务和检查项](#supported-services-and-checks) - [Docker 版 ElectricEye](#electriceye-on-docker) - [输出](./docs/outputs/OUTPUTS.md) - [贡献](#contributing) - [常见问题解答](#faq) - [开发者与测试指南](./docs/new_checks/DEVELOPER_GUIDE.md) - [仓库安全](#repository-security) - [许可证](#license) ## 工作流程  ## 快速概览 :running: :running: - ElectricEye 是一个 Python CLI 工具,提供跨账户、跨区域、多云和 SaaS 的资产管理、安全态势管理和攻击面监控功能,支持 [AWS(支持所有分区!)](https://aws.amazon.com/)、[GCP](https://cloud.google.com/)、[Oracle Cloud Infrastructure (OCI)](https://www.oracle.com/cloud/)、[ServiceNow](https://www.servicenow.com/)、[Microsoft 365 Enterprise (*M365*)](https://www.microsoft.com/en-us/microsoft-365/compare-microsoft-365-enterprise-plans)、[Salesforce (*SFDC*)](https://help.salesforce.com/s) 和 [Azure](https://portal.azure.com/)。 - ElectricEye 针对超过 100 种 CSP 和 SaaS 服务提供 *1000 多项* 检查,涵盖安全性、弹性、性能和财务最佳实践,包括 CSP/SaaS 原生资产管理工具/视图或主流 CSPM 和 CNAPP 工具不支持的非典型服务。 - 每一项检查都映射到 20 多个控制框架,涵盖通用最佳实践、监管、行业特定和法律框架,例如 NIST CSF、AICPA TSCs(用于 SOC 2)、HIPAA 安全规则、NIST 800-171 Rev. 2、CMMC V2.0、欧洲央行 CROE 第 2 节、PCI-DSS V4.0、CIS 基础基准等! - 多维度的攻击面监控使用 VirusTotal、Nmap、Shodan.io、Detect-Secrets 和 CISA 的 KEV 等工具,分别用于定位互联网上索引的资产、发现暴露的服务、查找可利用的漏洞以及工件仓库中的恶意软件包。 - 输出至 [AWS Security Hub](https://aws.amazon.com/security-hub/)、[开放网络安全框架 (OCSF)](https://github.com/ocsf/) [V1.1.0](https://schema.ocsf.io/1.1.0/?extensions=) JSON、[AWS DocumentDB](https://aws.amazon.com/documentdb/)、JSON、CSV、HTML 报告、[MongoDB](https://www.mongodb.com/)、[Amazon SQS](https://aws.amazon.com/sqs/)、[PostgreSQL](https://www.postgresql.org/)、[Slack](https://slack.com/)(通过 Slack App Bots)和 [FireMon Cloud Defense](https://www.firemon.com/introducing-disruptops/)。 ElectricEye 的核心概念是 **Auditor(审计器)**,它是一组 Python 脚本,针对称为 **Assessment Target(评估目标)** 的特定 SaaS 供应商或公有云服务提供商的每个服务运行 **Checks(检查)**。您可以运行整个评估目标、特定的审计器,或审计器中的特定检查。ElectricEye 完成评估后,支持十多种 **Outputs(输出)** 类型,从 HTML 执行报告到 AWS DocumentDB 集群——您可以根据需要运行多种输出。 ElectricEye 还利用其他工具,如 [Shodan.io](https://www.shodan.io/)、[Yelp 的 `detect-secrets`](https://pypi.org/project/detect-secrets/)、[VirusTotal](https://www.virustotal.com/gui/home/upload)、[美国网络安全和基础设施安全局 (CISA)](https://www.cisa.gov/) [已知被利用漏洞 (KEV)](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) 目录和 [NMAP](https://nmap.org/) 来执行检查并丰富其发现结果。 1. 首先,克隆此仓库并使用 `pip3` 安装依赖项:`pip3 install -r requirements.txt`。 2. 如果您要评估本地 AWS 账户以外的任何内容,请修改位于 `ElectricEye/eeauditor/external_providers.toml` 的 [TOML 配置](./eeauditor/external_providers.toml),或使用 `--toml-path` 提供您自己的配置路径。TOML 文件指定了多账户、多区域、凭证和输出的详细信息。 3. 最后,运行 Controller 以了解各种检查、审计器、评估目标和输出。 ``` 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-electricey),您可以在[此处阅读常见问题解答](./docs/faq/FAQ.md),[输出信息在此](./docs/outputs/OUTPUTS.md),或者,如果您想深入分析控制流和概念,请查阅[开发者指南](./docs/new_checks/DEVELOPER_GUIDE.md)。 ## 配置 ElectricEye 请参阅子标题以获取每个 CSP 或 SaaS 的设置说明。前往[输出](./docs/outputs/OUTPUTS.md)以了解输出和示例。 ### 公有云服务提供商 - [适用于 Amazon Web Services (AWS)](./docs/setup/Setup_AWS.md) - [适用于 Google Cloud Platform (GCP)](./docs/setup/Setup_GCP.md) - [适用于 Oracle Cloud Infrastructure](./docs/setup/Setup_OCI.md) - [适用于 Microsoft Azure](./docs/setup/Setup_Azure.md) 以下云服务提供商已在路线图中 - [适用于阿里云 (*即将推出*)](./docs/setup/Setup_AlibabaCloud.md) ### 软件即服务 提供商 - [适用于 ServiceNow](./docs/setup/Setup_ServiceNow.md) - [适用于 Microsoft M365](./docs/setup/Setup_M365.md) - [适用于 Salesforce](./docs/setup/Setup_Salesforce.md) - [适用于 Snowflake](./docs/setup/Setup_Snowflake.md) 以下 SaaS 提供商已在路线图中 - [适用于 Google Workspaces (*即将推出*)](./docs/setup/Setup_Google_Workspaces.md) ## 云资产管理 (CAM) 有关 ElectricEye 的 CAM 运作概念和架构的更多信息,请参阅[资产管理文档](./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) 中链接的各提供商设置文档。 ## Docker 版 ElectricEye 使用 [TOML 配置](./eeauditor/external_providers.toml) 为您的环境配置 ElectricEye 后,您可以改为使用 Docker 运行 ElectricEye,其镜像维护在 ECR Public、Oracle Cloud Container Registry (OCR) 和 Docker Hub 上。您可以在[此处](#repository-security)阅读有关安全保证活动的更多信息,未来将使用更多的注册中心和镜像签名。 ### 构建镜像 如果您想构建自己的镜像,请使用以下命令。如果您的系统中没有正确设置 `docker` 用户,请务必添加 `sudo`。 ``` git clone https://github.com/jonrau1/ElectricEye.git cd ElectricEye docker build -t electriceye:local . ``` 从这里,您可以推送到您选择的仓库,务必将标签从 `local` 更改为您的仓库期望的标签或您喜欢的任何标签。也许就像一位亿万富翁、西格玛奋斗者、超级猛男那样直接用 `latest`? ### 拉取镜像 您也可以从各个仓库拉取 ElectricEye 镜像,`latest` 镜像标签将始终与标记为工作流 SHA 哈希 `${{ github.sha }}` 的镜像一起推送,可以在各个 GitHub Action 工作流的 `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` ### 设置会话 #### 注意!!如果您在 TOML 中使用硬编码凭证,并且不使用任何 AWS 输出或运行任何 AWS 审计器,则可以跳过此部分 当与 AWS 凭证存储(如 AWS Systems Manager、AWS Secrets Manager)和输出(如 AWS Security)交互,以及代入 `aws_electric_eye_iam_role_name` TOML 参数中指定的角色时,ElectricEye 使用您当前的(默认)Boto3 会话,该会话源自您的凭证。 从附加了角色的 AWS 基础设施运行 ElectricEye,或从已实例化 `aws cli` 凭证的位置运行,此过程是透明处理的。 使用 Docker 时,您需要直接向容器提供[环境变量](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html#using-environment-variables)。 确保如果您将使用 AWS SSM (`ssm:GetParameter`)、AWS Secrets Manager (`secretsmanager:GetSecretValue`)、AWS Security Hub (`securityhub:BatchImportFindings`)、Amazon SQS (`sqs:SendMessage`) 和/或 Amazon DynamoDB (`dynamodb:PutItem`) 进行凭证和输出,请确保您拥有适当的权限!根据您是否使用 AWS Key Management Service (KMS) 客户托管密钥 (CMK) 进行机密/参数加密,您可能还需要 `kms:Decrypt`。 您需要 `sts:AssumeRole` 以代入 `aws_electric_eye_iam_role_name` TOML 参数中指定的角色。 您需要传入您的 AWS 区域、AWS 访问密钥和 AWS 秘密访问密钥。如果您使用的不是具有访问密钥的 AWS IAM 用户,您还需要提供 AWS 会话令牌,该令牌由临时凭证(如 IAM 角色或 EC2 实例配置文件)生成。 如果您使用的是用户,请继续下一步,您需要准备好凭证以进行复制。如果您使用的是 EC2 实例配置文件或您将代入的附加 IAM 角色,请确保已安装 `jq`:`apt install -y jq` 或 `yum install jq`。 ``` 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' ``` ``` 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') ``` ``` 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 服务上运行此容器,则不需要提供这些值! ``` 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/` 开头的文件名,因为 Docker 镜像中的 `eeuser` 仅在该目录内拥有权限。 要移除文件,您无法使用 `docker cp`,但您可以通过 `base64` 编码输出将其提交到您控制的远程 API,或者您可以使用具有 AWS S3 权限的会话将文件上传到 S3。 如果您正在评估 Oracle Cloud 或 Google Cloud Platform,您的凭证将在本地加载,您可以分别上传到 Oracle Object Storage 或 Google Cloud Storage 存储桶。 ``` 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" ``` 有关更多配置信息,请确保回顾各提供商的设置说明。 ### ElectricEye 待售 请通过 opensource@electriceye.cloud 联系我(我实际上 SaaS 工具),我很乐意出售此仓库的权利并将其下架,并将所有域名甚至我在幕后使用的 AWS 账户都给您。 ## 常见问题解答 这是按照亚马逊风格完成的,也就是说,这些问题都不是经常被问到的,而是旨在帮助产品经理弄清楚他们的想法是否靠谱…… 话虽如此,有些问题确实有人问。所以,不客气。 ### 1. 什么是 ElectricEye? ElectricEye 是一个无代理的 Python 命令行界面 (CLI) 工具,用于扫描和评估云服务提供商 和软件即服务 供应商的服务级配置。ElectricEye 针对多项检查为每个资源生成通过或失败的发现,这些检查符合安全态势管理最佳实践以及其他卫生检查,如弹性、恢复、性能优化和监控。ElectricEye 涵盖 AWS、GCP、ServiceNow 等热门提供商。 ### 2. 谁应该使用 ElectricEye? 云组织中的安全或 IT 职能部门的任何角色都可以使用 ElectricEye,包括(但不限于)安全工程师、Dev(Sec)Ops 工程师、SRE/平台工程师、架构师(各种类型)、治理/风险/合规分析师、SOC/SecOps 分析师、云顾问、进攻性安全(红/蓝/紫)团队和第三方风险分析师。ElectricEye 还可供 IT 运维、技术业务管理/ITFM 分析师、业务连续性分析师和资产管理者使用,因为 ElectricEye 提供原生的云资产管理功能。 ### 3. 为什么应该使用 ElectricEye? 任何希望确保其云供应商及其全方位服务配置达到最佳安全卫生状态的人都应该使用 ElectricEye。ElectricEye 拥有最广泛的服务覆盖范围,并且是唯一一款同时免费提供云安全态势管理 (CSPM) 和 SaaS 安全态势管理 (SSPM) 的双用途安全态势管理 (SPM) 工具。ElectricEye 还内置了机密检测和外部攻击面管理 (EASM) 功能,以及具有自身层级的云资产管理 (CAM),以支持跨云、跨边界的资产管理和报告。 ### 4. ElectricEye 是 CSPM 吗? 是的,ElectricEye 是一款云安全态势管理 (CSPM) 工具,它提供基于 API(无代理)的云基础设施扫描,并确保服务配置符合最佳实践。 ### 5. ElectricEye 是 SSPM 吗? 是的,ElectricEye 是一款 SaaS 安全态势管理 (SSPM) 工具,它提供基于 API(无代理)的 SaaS 供应商 API 扫描,并确保用户和服务配置符合最佳实践。 ### 6. ElectricEye 是 CIEM 吗? 不是,ElectricEye 不是云基础设施权利管理 (CIEM) 工具。虽然 ElectricEye 确实提供了一些身份与访问管理检查,并对每个用户进行 MFA、密码轮换和权限最小化评估,但它不是 CIEM。ElectricEye 不具备跨多个身份代理、提供商和边界的广泛策略评估能力,也不提供任何补救或即时 权利管理功能。 ### 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 来评估您的环境,您可以将其作为证据提供给评估员,但其最佳用例是为审计做准备或查看您的审计准备情况。然而,在实施控制时,您应该已经定义了自己的内部控制和管理策略。例如,您可能决定使用 AWS KMS CMK 加密所有 SQS 队列成本太高且安全优势不多,在使用 ElectricEye 支持您的内部 GRC 流程之前,您必须完成这些“基础工作”。 ### 10. ElectricEye 支持哪些控制框架? ElectricEye 支持的控制框架总是随着新版本和映射的可用而更新,截至 2024 年 6 月 21 日,支持以下标准、框架和法律要求。 - NIST 网络安全框架版本 1.1 - NIST 特别出版物 800-53 修订版 4 - NIST 特别出版物 800-53 修订版 5 - NIST 特别出版物 800-171 修订版 2 - 美国注册会计师协会 (AICPA) 信任服务标准 (TSC) 2017/2020(用于 SOC 2) - ISO/IEC 27001:2013/2017 附录 A - ISO/IEC 27001:2022 附录 A - 互联网安全中心 (CIS) 关键安全控制版本 8 - 云安全联盟 (CSA) 云控制矩阵 (CCM) 版本 4.0 - 美国国防部网络安全成熟度模型认证 (CMMC) 版本 2.0 - 美国联邦调查局 (FBI) 刑事司法信息服务 (CJIS) 安全策略版本 5.9 - 英国国家网络安全中心 (NCSC) 网络基础版本 2.2 - 英国国家网络安全中心 (NCSC) 评估框架版本 3.1 - HIPAA“安全规则”美国法典 45 CFR 第 164 部分子部分 C - 联邦金融机构检查委员会 (FFIEC) 网络安全评估工具 (CAT) - 北美电力可靠性公司 (NERC) 关键基础设施保护 (CIP) 标准 - 新西兰信息安全手册版本 3.5 - 纽约金融服务部 (NYDFS) 23 NYCRR 第 500 部分系列;又称 NYDFS500 - 关键风险研究院 (CRI) 关键风险概况版本 1.2 - 欧洲中央银行 (ECB) 网络弹性监管期望 - Equifax 安全控制框架版本 1.0 - 支付卡行业 数据安全标准 (DSS) 版本 4.0 - MITRE ATT&CK 企业框架 - CIS AWS 数据库服务基准 V1.0 - CIS Amazon Web Services 基础基准 V1.5 - CIS Amazon Web Services 基础基准 V2.0 - CIS Amazon Web Services 基础基准 V3.0 - CIS Microsoft Azure 基础基准 V2.0.0 - CIS Snowflake 基础基准 V1.0.0 - CIS Google Cloud Platform 基础基准 V2.0 ## 仓库安全 由于 ElectricEye 是一款安全工具,因此确保组件的高安全性是理所当然的。为此,配置了以下工具以供使用。有关每次运行的详细信息,请参阅构建徽章和 Actions。 #### [`Syft`](https://github.com/anchore/syft) 请参阅[此处结果](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)! 一个用于从容器镜像和文件系统生成软件物料清单 (SBOM) 的 CLI 工具和 Go 库。 ElectricEye 使用 Syft 根据构建的 ElectricEye Docker 镜像以 CycloneDX 格式构建 SBOM,并将其作为工件上传到每次成功的 GitHub Action 运行中。 #### [`Grype`](https://github.com/anchore/grype) 请参阅[此处结果](https://github.com/jonrau1/ElectricEye/actions/workflows/sbom-vulns.yml)! 一个用于容器镜像和文件系统的漏洞扫描器。轻松安装二进制文件即可试用。与 Syft 配合使用,Syft 是用于容器镜像和文件系统的强大 SBOM(软件物料清单)工具。 ElectricEye 将来自 `Syft` 的 CycloneDX SBOM 传递给 `Grype`,以对构建的 Docker 镜像执行漏洞扫描,该镜像结合了 ElectricEye 使用的 `alpine` Docker 镜像父级中的所有 Python 依赖项和内置方法。存在严重漏洞的构建会自动中断。结果将发布到 GitHub Action 并作为 `sarif` 上传到 GitHub Security。 #### [`Dependabot`](https://github.com/dependabot) Dependabot 警告告诉您您的代码依赖于一个不安全的包。如果您的代码依赖于一个有安全漏洞的包,这可能会给您的项目或使用它的人带来一系列问题。您应该尽快升级到该包的安全版本。如果您的代码使用了恶意软件,您需要用一个安全的替代品替换该包。 ElectricEye 使用 Dependabot 作为软件组合分析 (SCA) 工具来运行每日扫描,并在 Docker、Python 或 GitHub-Action 依赖项需要安全补丁时打开 Pull Requests。 #### [`CodeQL`](https://docs.github.com/en/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` 还会查找代码中的机密。它在推送时和按计划运行。 ## 许可证 本库根据 Apache-2.0 许可证授权。请参阅 LICENSE 文件。
标签:ASPM, AWS, Azure, CSPM, CTI, DevSecOps, Docker, DPI, GCP, Python, SaaS安全, TinkerPop, 上游代理, 动态调试, 占用监测, 安全基线, 安全态势管理, 安全防御评估, 教学环境, 无后门, 网络安全审计, 网络空间测绘, 请求拦截, 资产管理, 足迹分析, 逆向工具