lambda函数“拆开”云信息模板并检查其是否符合安全性。
cfripper的Python项目详细描述
C裂土器
Lambda函数“拆开”云信息模板并检查其是否符合安全性
带cfripper的采样管道
CFripper是一个Python工具,旨在防止漏洞通过易受攻击的CloudFormation脚本进入生产基础设施与我们在Skyscanner上使用的其他安全工具一样,CFripper是CI/CD管道的一部分它在CloudFormation堆栈部署或更新之前运行,如果CloudFormation脚本未能通过安全检查,则部署失败并通知拥有该堆栈的团队这是一个如何将cfripper设置为aws lambda的示例:
我们在Skyscanner使用的另一种方法是将基础设施作为代码管道使用drone构建和测试代码,然后我们的内部cd工具处理调用cfripper来验证脚本,然后触发基础设施的部署,前提是cloudformation脚本有效:
开发
该项目附带了一组命令,您可以使用这些命令运行常见操作:
make install
:安装运行时依赖项。make install-dev
:安装开发依赖项和运行时依赖项make freeze
:冻结从setup.py
到requirements.txt
的依赖关系(包括传递依赖关系)make lint
:运行静态分析make coverage
:运行收集覆盖率的所有测试make test
:运行lint
和component
。
运行模拟器
要运行模拟器,请确保使用make install-dev
安装了依赖项,然后运行python simulator/simulator.py
您可以在simulator/test_cf_scripts
中向测试集添加更多脚本。
一定要将它们与它们的名称、服务名称和项目一起添加到scripts
字典中,以便模拟器能够提取它们。
自定义规则
若要添加自定义规则,请首先扩展Rule类。然后通过添加逻辑来实现invoke
方法
cfripper使用pycfmodel创建cloudformation脚本的python模型。此模型作为resources
参数传递给invoke
函数。您可以使用模型对模型的资源和其他对象进行迭代,并使用helper函数执行各种检查查看current rules以获取示例。
监视器模式
默认情况下,每个规则都将MONITOR_MODE
设置为false。监视器模型将在响应的另一个字段中返回失败的规则,而不是在主“失败的规则”中这种方法可以在新规则从监视模式中删除并开始触发警报之前对其进行测试。
贡献
请参见CONTRIBUTING.md文件以添加贡献
归因
我们的一些规则是受cfn-nag启发的我们还在测试用例中使用他们的示例脚本。
在将cloudformation脚本转换为python模型之前,我们使用aws-cfn-template-flip来转换它们。