我有一个存储库,其中包含多个微服务。作为其中的一部分,每个服务都有自己的 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/