乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具

扩展,seal,软件,供应链,防火墙,轻松,集成,代码,规范,工具 · 浏览次数 : 103

小编点评

## Summary of the Content This document describes the pluginization framework for the Seal software supply chain firewall v0.2. It introduces a new ⌈插件化框架⌋ to address the scalability and maintainability challenges of the previous SCA、SAST and configuration check features. **Key points:** * **Problem:** The previous version had limited extensibility due to its tightly coupled architecture and dependency on specific tools. * **Solution:** The new framework utilizes a new ⌈插件化框架⌋ to manage SCA, SAST and configuration check functionalities. * **Benefits:** * **Reduced cost:** By minimizing plugin modifications, it allows users to preserve the original configuration and only adapt to the plugin interface. * **Improved performance:** The streamlined design reduces plugin invocation overhead and execution time. * **Enhanced flexibility:** Users can extend scanning capabilities by integrating various plugins. **Implementation details:** * The framework integrates with the style checker tool for code style enforcement. * It allows users to define policies in the `policies.yaml` file, specifying plugin names, configurations and execution actions. * The framework reads and parses the policies file, generating the necessary plugin calls and configurations. * During plugin installation, the framework creates a tar.gz package containing the plugin binary, policy file and metadata. **Benefits of pluginization:** * **Reduced development effort:** It simplifies plugin development by providing a pre-configured and ready-to-use framework. * **Simplified maintenance:** Updates and changes to plugins are seamlessly applied to all relevant points in the supply chain. * **Enhanced security:** The pluginized architecture allows for granular control and reduces security risks. **Overall, this document highlights the significant improvements offered by the pluginization framework, enabling users to extend the security capabilities of the Seal software supply chain firewall while maintaining flexibility and control.**

正文

上个月,Seal 软件供应链防火墙 v0.2(以下简称“Seal”)正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力。

在前一个版本中,Seal 集成了 SCA、SAST 和配置检查等功能,在这一架构中最大的优势是调试方便、调用链路短,但同时也伴随着模块耦合、依赖树深以及扩展困难等问题。因此,在新版本中使用了新的 ⌈插件化框架⌋ 来重构了 SCA、SAST和配置检查的集成,并以此解决上面谈及的扩展性问题。

之前的演示中,我们展示了如何使用 v0.2.0 的插件管理:把IaC 配置检查 ⌈插件⌋,⌈无缝⌋地集成到 Seal 里。本文将介绍插件化框架的底层原理以及演示如何将代码规范工具集成到 Seal软件供应链防火墙中。

插件化框架的工作原理

通常,实现一个框架的插件化,我们需要考虑以下问题:

  1. 降低插件化的成本。

  2. 规范插件调用的输入输出。

  3. 配置(限制)插件调用的权限。

  4. (可选)管理插件调用的状态数据。

Seal 通过让插件的改动最小化来降低插件化的成本,换言之,Seal 可以让插件保留其原有的配置方式,用户仅需适配插件调用的输入输出即可。插件的配置项可以通过 Seal 的策略面板暴露成策略,最终作用到 Seal 的各个拦截点上。

# policies.yaml
- code: # <string>, 策略代码,唯一标识
  category: # <string>, 策略分类,所在的一级组
  type: # <string>, 策略类型,所在的二级组
  name: # <string>, 策略名称(或原有配置项的名称)
  description: # <string>, 策略描述(或原有配置项的描述)
  enabled: # <bool>, 默认启用
  builtIn: # <bool>, 默认内置(内置,是相对于使用插件的使用者而言)
  bindings: # 作用的拦截点
    isAllResource: # <bool>, 作用于源代码仓库
    isAllProxy: # <bool>, 作用于代理
  constraint: {} # 约束,结构化的配置
  expression: "" # 表达式或原配置项
  action: # <string>, 违反该策略后,应该做出的动作
  severity: # <string>, 违反该策略后,应该声明的严重程度
 - code: ...
   category: ...
   ...

然后, Seal 在某个拦截点上运行检查时,会拉取相应的已启用的策略,生成配置文件和拦截点上的状态数据(例如,对于源码仓库的检测,拦截点为源码仓库,状态数据为检测时刻的源代码)作为插件调用的输入。当插件检查完毕后,将结果以 SARIF的格式输出到指定路径。

最后, Seal 将所有插件的 SARIF 输出汇总,并根据策略定义的行为(action)决定实施拦截、通过还是告警。

另外,对于信任(trusted)的插件,Seal 会在插件调用时注入 API Token (SEAL_API_TOKEN),从而允许插件获得 Seal 的能力:风险评估、漏洞数据、合规信息等。

集成代码规范工具

假设,有个 style-checker 的组件,它可以检查源代码的书写规范,支持丰富的风格检查配置。其中,有一条配置项:K&R 风格检查。当源代码中有风格违反配置规则时,style-checker 会输出失败信息。

style-checker \
  --path="/path/to/your/code" \
  --kr-style="true" \
  --msvc-style="false" \
  --... \
  --report="/path/to/record/illegal/result"

首先,需要给 style-checker 做一个包裹器(wrapper-style-checker),这个包裹器是用来接收 Seal 的输入输出。wrapper-style-checker 可以用任何语言编写,在运行时,从环境变量中获取以下内容:

SOURCE_DIR="/path/to/your/code" \
PLUGIN_POLICY_FILENAME="/path/to/receive/configuration" \
PLUGIN_OUTPUT_FILENAME="/path/to/output/sarif_report" \
SEAL_API_TOKEN="" \
SEAL_URL="" \
  wrapper-style-checker

然后,规整 style-checker 的配置项,按照合适的粒度构建出相应的策略。这里,以每个配置项作为一条策略。Seal 会在安装插件的阶段阅读这个策略文件(policies.yaml),把其中的每一项都呈现到 Seal 的策略面板。


# policies.yaml
- code: STYLE-CHECKER-POL-1
  category: sast
  type: style
  name: kr-style
  description: 检查是否严格使用K&R风格编码。
  enabled: true
  builtIn: true
  bindings:
    isAllResource: true
  expression: |
    KRStyle: true
    MSVCStyle: false

接着,实现 wrapper-style-checker 对策略文件的理解(转换),把 expression 的信息转化成对 style-checker 的调用,并把执行后的结果按 SARIF 格式输出。

# pseudo code
var policies = read(${PLUGIN_POLICY_FILENAME})
var config = parseInput(policies)
var result = call("style-checker") on (${SOURCE_DIR}) with (config)
var sarif = parseOutput(result)
write(${PLUGIN_OUTPUT_FILENAME}) with (sarif)

最后,用元信息文件(metadata.yaml)描述 wrapper-style-checker 插件的信息,包括UI展示,多语言等。

category: sast
format: yaml
resourceKinds: ["repository"]
policies:
- type: style
  conditions: []
locales:
  en:
    "policy.style": "Style Checker"
  zh:
    "policy.style": "风格检查"

插件安装

完成以上步骤后,可以把 wrapper-style-checker(二进制可执行文件) 、策略文件(policies.yaml)和元信息文件(metadata.yaml)打包成一个 tar.gz 包,并通过 Seal 的 ⌈插件管理⌋ 页面进行下载安装,实现开箱即用。

总结

得益于插件化框架的扩展能力,Seal 为用户提供了 IaC 配置检查功能,并且可以快速适应部署环境已有的复杂性。用户也可以根据自身需求利用插件化框架灵活扩展扫描能力,轻松为代码安全提供进一步保障。在后续版本中,Seal 研发团队会持续丰富插件功能,优化插件策略及配置机制,为用户提供丝滑的可插拔体验。

欢迎访问下方链接,申请产品试用,体验灵活的插件化扩展:

https://seal.io/trial

与乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具相似的内容:

乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具

上个月,Seal 软件供应链防火墙 v0.2(以下简称“Seal”)正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力。 在前一个版本中,Seal 集成了 SCA、SAST 和配置检查等功能,在这一架构中最大的优势是调试方便、调用链路短,但同时也

六一新玩法!AI涂鸦秒变精美艺术画

摘要:上华为云ModelArts体验AI涂鸦新玩法,赢漫威复仇者联盟乐高!祝大小朋友们六一儿童节快乐~ 本文分享自华为云社区《【云享热点】六一新玩法!AI 涂鸦秒变精美艺术画》,作者:华为云社区精选 。 又是一年儿童节,记得小时候的涂涂画画吗 现在有了 AI 这只 “魔法棒”,它们变成了这样 登录华

[转帖]Python基础之函数(四)

https://www.jianshu.com/p/168e341fb81c 一、函数定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段;比如常用的print(),就是内建函数;通俗来讲,函数就是把代码打包成不通形状的乐高积木,以便可以根据需求调用拼装;当然这种函数叫做自定义函数

一次JVM GC长暂停的排查过程

作者:京东科技 徐传乐 背景 在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。 事情最初是线上某应用垃圾收集出现Full GC异

一键开启云原生网络安全新视界

本文作者:陈桐乐 李卓嘉 随着云原生的兴起,微服务、容器、kubernetes容器编排正在快速改变着企业软件架构的形态,单体架构、分布式架构、微服务架构,软件架构在持续演进的过程中,变得越来越复杂,管理和维护也越来越困难,不断出现的安全漏洞也在持续挑战着企业的安全运营响应能力,如何准确识别风险点,怎

把Mybatis Generator生成的代码加上想要的注释

作者:王建乐 1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题就是自动生成代码之

谈JVM参数GC线程数ParallelGCThreads合理性设置

作者:京东零售 刘乐 导读:本篇文章聚焦JVM参数GC线程数的合理配置,从ParallelGCThreads参数含义、参数设置,到参数实验以及修改意见进行解析。 1. ParallelGCThreads参数含义 在讲这个参数之前,先谈谈JVM垃圾回收(GC)算法的两个优化标的:吞吐量和停顿时长。JV

深耕零售行业数字化,乐檬软件与华为云携手共进

通过多轮交流,华为云开发者技术服务团队结合乐檬业务现场,提供多元技术和全流程支持。

Arduino实现温湿度传感器以及数据上传到云(乐维互联)

0 准备材料 0.1 ESP-01S 引脚及定义 官方定义: 序号 pin 功能 1 GND 地线 2 IO0/GPIO0 工作模式选择:①悬空:Flash Boot,工作模式 ②下拉:UART DownLoad 下载模式 3 IO2/GPIO2 通用IO 4 RX/RXD 数据接收端 5 TX/T

哈密顿路径

题目描述 有一张n个节点的无向图,对于所有 (i,j),判断 i 和 j 之间是否存在哈密顿路径 1<=n<=24 哈密顿路径:经过每个点恰好一次 乐乐乐乐乐 考虑暴力:\(dp[i][j][st]\)表示从\(i\)开始到\(j\)的经过的点的状态\(st\)(\(st\)状压每一个点是否被经过)