lambda函数“拆开”云信息模板并检查其是否符合安全性。

cfripper的Python项目详细描述


C裂土器

Build StatusPyPI version

Lambda函数“拆开”云信息模板并检查其是否符合安全性

带cfripper的采样管道

CFripper是一个Python工具,旨在防止漏洞通过易受攻击的CloudFormation脚本进入生产基础设施与我们在Skyscanner上使用的其他安全工具一样,CFripper是CI/CD管道的一部分它在CloudFormation堆栈部署或更新之前运行,如果CloudFormation脚本未能通过安全检查,则部署失败并通知拥有该堆栈的团队这是一个如何将cfripper设置为aws lambda的示例: CFripperPipeline

我们在Skyscanner使用的另一种方法是将基础设施作为代码管道使用drone构建和测试代码,然后我们的内部cd工具处理调用cfripper来验证脚本,然后触发基础设施的部署,前提是cloudformation脚本有效: CFripperPipeline

开发

该项目附带了一组命令,您可以使用这些命令运行常见操作:

  • make install:安装运行时依赖项。
  • make install-dev:安装开发依赖项和运行时依赖项
  • make freeze:冻结从setup.pyrequirements.txt的依赖关系(包括传递依赖关系)
  • make lint:运行静态分析
  • make coverage:运行收集覆盖率的所有测试
  • make test:运行lintcomponent

运行模拟器

要运行模拟器,请确保使用make install-dev安装了依赖项,然后运行python simulator/simulator.py 您可以在simulator/test_cf_scripts中向测试集添加更多脚本。 一定要将它们与它们的名称、服务名称和项目一起添加到scripts字典中,以便模拟器能够提取它们。

自定义规则

若要添加自定义规则,请首先扩展Rule类。然后通过添加逻辑来实现invoke方法

cfripper使用pycfmodel创建cloudformation脚本的python模型。此模型作为resources参数传递给invoke函数。您可以使用模型对模型的资源和其他对象进行迭代,并使用helper函数执行各种检查查看current rules以获取示例。

CFripperRule

监视器模式

默认情况下,每个规则都将MONITOR_MODE设置为false。监视器模型将在响应的另一个字段中返回失败的规则,而不是在主“失败的规则”中这种方法可以在新规则从监视模式中删除并开始触发警报之前对其进行测试。

贡献

请参见CONTRIBUTING.md文件以添加贡献

归因

我们的一些规则是受cfn-nag启发的我们还在测试用例中使用他们的示例脚本。

在将cloudformation脚本转换为python模型之前,我们使用aws-cfn-template-flip来转换它们。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在数据库中存储工作日数据以及开始时间和结束时间?   mysql Java JPA内部联接查询不起作用   java MQ消息在不同的客户端应用程序中显示不同   javascript如何在xPage上提高typeAhead性能?   java在尝试保存EditText时无法暂停   mongodb“未能使用带参数的构造函数NO_构造函数实例化java.util.List”,   java如何修改使IllegalArgumentException:列“\u id”不存在的游标   转换Android。网Uri到Java。伊奥。输入流   java NetBeans RCP居中弹出窗口无法按预期工作   java将sql开发人员与netbeans连接起来   带有xmldsig签名的java JAXB编组   java ORACLE JDBC批处理执行不会返回受影响行的实际计数   java无法理解如何在由swagger自动生成的jaxrs服务器中访问请求头   java如何处理漏洞CVE20181258,同时将Spring安全版本5与外部客户端(最新版本)一起使用?   JavaSpring数据JPA存储库多租户单模式技术