GitLab CI/CD中Trivy扫描报错求助:文件系统与配置扫描错误
你在GitLab CI/CD执行Trivy扫描命令时遇到的错误,本质是自定义Rego规则里引用了Trivy当前版本不识别的字段。具体来说,disable_cluster_skip_final_snapshot.rego第26行里的cluster.skipfinalsnapshot.value,不在Trivy AWS RDS集群Schema支持的字段列表中。
以下是几种解决方法:
修正Rego规则的字段名
打开policies/cloud/policies/aws/rds/disable_cluster_skip_final_snapshot.rego文件,检查第26行的字段名。大概率是拼写或格式错误,比如应该是skip_final_snapshot(下划线分隔)而非skipfinalsnapshot(连写)。改成Trivy Schema支持的字段名即可。如果不确定正确字段,参考错误提示里列出的可选字段:backupretentionperioddays、encryption、engine、instances、performanceinsights、publicaccess、replicationsourcearn。升级Trivy到最新版本
如果你用的Trivy版本比较旧,可能还没添加skipfinalsnapshot(或对应正确命名的字段)的支持。在GitLab CI的前置步骤里安装最新版Trivy,比如:before_script: - curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin latest本地环境的话,用对应包管理器升级即可(Linux用apt/yum,macOS用brew)。
临时跳过有问题的规则
如果着急让流水线先跑起来,可以在Trivy命令里排除这个出错的规则文件:trivy fs --exit-code 0 --severity UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL --scanners vuln,config ./. --timeout $TRIVY_TIMEOUT --skip-policies policies/cloud/policies/aws/rds/disable_cluster_skip_final_snapshot.rego确认Trivy的Schema定义
可以查看Trivy内置的AWS RDS规则库,确认当前版本支持的字段,避免后续再出现类似的字段引用错误。
内容的提问来源于stack exchange,提问作者Ashish Karpe

