gitlab - 如何在具有多个服务的存储库中的 Gitlab 中设置 Web API 模糊测试?

标签 gitlab gitlab-ci openapi fuzzing

我有一个存储库,其中包含多个微服务。作为其中的一部分,每个服务都有自己的 OpenAPI 3.0 规范。

仓库中只有一个.gitlab-ci.yaml文件,但existing documentation中并不清楚关于如何为每个服务进行单独的配置。

是否有人以前做过此操作或有解决方法的建议?

最佳答案

运行模糊测试的逻辑在 API-Fuzzing.gitlab-ci.yml 中配置。模板,您可以在此处查看该模板中包含的逻辑:https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/API-Fuzzing.gitlab-ci.yml

在该模板中,您可以看到包含一项作业:apifuzzer_fuzz 。每个作业可以运行一个模糊测试,因此如果您想对多个服务运行多个模糊测试,您只需使用extends: apifuzzer_fuzz创建新作业即可。您的 .gitlab-ci.yml 中的关键字文件。您可以将每个作业传递给它自己的变量来控制正在测试的内容。如果需要,您也可以关闭现有作业,以使命名更易于阅读。示例:

include:
  template: API-Fuzzing.gitlab-ci.yml

# disable the existing job so that names make more sense
apifuzzer_fuzz:
  rules:
    - when: never

fuzz_microservice_one:
  extends: apifuzzer_fuzz
  variables:
    FUZZAPI_TARGET_URL: https://my-microservice-1.com
    FUZZAPI_OPENAPI: my-spec.json

fuzz_microservice_two:
  extends: apifuzzer_fuzz
  variables:
    FUZZAPI_TARGET_URL: https://my-microservice-2.com
    FUZZAPI_OPENAPI: my-spec-two.json

可以根据需要重复多次。请注意,gitlab 会将模糊扫描器的所有安全发现合并到一份报告中,这可能会使结果读起来有点有趣。 GitLab 有点期望,如果您有真正独立的服务来扫描,那么您将把它们放在不同的存储库中,因此给定类型运行的任何扫描都会合并到 MR 内或安全仪表板上的同一报告中。

关于gitlab - 如何在具有多个服务的存储库中的 Gitlab 中设置 Web API 模糊测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75290281/

相关文章:

Gitlab API,构建成功时合并

ruby - 使用 SAML 连接 GitLab 帐户

gitlab - 在 Gitlab CI 中向 Rocket.Chat 推送通知

openapi - 如何在 Playground 更新函数中发出 http 请求?

java - 如何在 Open API 3.0 中为 GET API 定义 map 对象

gitlab - 如何从 gitlab-runner 中运行的作业获取即时输出?

git - 使用 API 将 Git 存储库导入 GitLab?

docker - 在Gitlab CI/CD中,如何提交和发布正在运行我们阶段的docker容器

bash - 如何根据控制台输出中的文本使 GitLab 的 CI/CD 作业失败?

google-cloud-platform - GCP API 网关创建失败并出现内部服务器错误