配置 GoSec 扫描

使用 gosec 检查扫描软件源中的 Golang 源代码。

必需参数

管道需要表 1 中的参数来运行 Gosec 扫描。 有关管道参数的完整列表,请参阅 管道参数

gosec 扫描参数
名称 类型 描述 必需或可选
opt-in-gosec text 要启用 gosec 扫描,请将该属性设置为任意非空值。 要禁用扫描,可将其设置为空值或完全删除该属性。 (默认为空) 必填

对专用 Git 存储库启用 gosec 扫描

如果项目需要位于专用 Git 存储库中的依赖关系,因此需要基于 SSH 的认证,那么您可以通过提供可选参数来启用管道以检索依赖关系。 有关更多信息,请参阅 允许下载专用存储库的依赖关系

如果必须指定一个代理来检索依赖项,可以使用管道参数指定其 URL 以及凭据(用户名和令牌)。 有关更多信息,请参阅 启用 GOPROXY

允许下载专用存储库的依赖关系

可通过提供以下所有管道参数来启用存储库的下载依赖关系。

管道参数
名称 类型 描述 必需或可选
gosec-private-repository-url 文本 (已废弃) 您的私有资源库基础 URL. 可选
gosec-private-repository-host 文本 您的私有版本库主机。 可选
gosec-private-repository-ssh-key secret 私人存储库的 SSH 密钥 可选项
gosec-private-repository-user 文本 具有 https 访问权限的私有存储库的用户(默认为 x-oauth-basic 可选
gosec-private-repository-token secret 用于 https 访问私有仓库的令牌(默认为工具链中第一个 git 集成配置的令牌,其仓库 URL 托管在 gosec-private-repository-host 的值上) 可选

启用 GOPROXY

如果必须指定 GOPROXY,那么必须提供以下所有参数。

GOPROXY 参数
名称 类型 描述 必需或可选
gosec-proxy-virtual-repository-user text gosec 代理的虚拟存储库用户 可选
gosec-proxy-virtual-repository-token secret gosec 代理的虚拟存储库令牌 可选
gosec-proxy-virtual-repository-url text gosec 代理的虚拟存储库 URL 可选

可选参数

gosec-scan-image 参数可用于指定要使用的其他 gosec 映像,例如定制映像或特定版本的官方 gosec 映像。

gosec-additional-flags 标志的用法见 示例 部分

gosec 可选参数
参数名称 缺省值 描述
gosec-additional-flags text 要附加到 gosec 命令开头的其他标志。
gosec-scan-image text 指定备用 gosec 映像,包括定制映像或特定版本的官方映像。
gosec-repo-path-$repo_owner-$repo_name text Go 模块根目录所在版本库的子目录路径。 当 go.mod 不在版本库根目录时,按版本库使用。

示例

gosec-additional-flags 的值定义为 -exclude-dir=<your_folder_1> -exclude-dir=<your_folder_2> -nosec=true,并将 gosec 命令运行更新为:

./gosec -exclude-dir=<your_folder_1> -exclude-dir=<your_folder_2> -nosec=true -no-fail -fmt=json -out=gosec-results.json -stdout -verbose=text ./...

要扫描位于子目录中的围棋模块,请设置 gosec-repo-path-$repo_owner-$repo_name 参数。 例如,如果版本库所有者是 myorg,版本库名称是 myrepo,而 Go 模块位于 cmd/myapp 目录中,则将参数定义为

  • 参数名称:gosec-repo-path-myorg-myrepo
  • 参数值:cmd/myapp

这将从 cmd/myapp 路径而不是版本库根目录开始扫描 Go 代码。

使用您自己的配置文件

如果要修改缺省配置,请在目标存储库中创建 config.json 文件。 有关配置文件中的分析参数的更多信息,请参阅 gosec configuration

使用另一静态扫描实现

如果要使用自己的静态扫描实现,请修改 .pipeline-config.yaml 文件并将自己的定制脚本添加到 static-scan 阶段。 有关更多信息,请参阅 定制脚本