Trivyとは
コンテナイメージ用のオープンソースの脆弱性スキャナーです。
https://trivy.dev/
エラー内容
2024-10-31T01:44:22Z ERROR [vulndb] Failed to download artifact repo="ghcr.io/aquasecurity/trivy-db:2" err="oci download error: failed to fetch the layer: GET https://ghcr.io/v2/aquasecurity/trivy-db/blobs/sha256:XXXXXXXXXXXX: TOOMANYREQUESTS: retry-after: 488.251µs, allowed: 44000/minute" 2024-10-31T01:44:22Z FATAL Fatal error init error: DB error: failed to download vulnerability DB: OCI artif
原因
Trivyが脆弱性スキャンに必要なtrivy-dbをダウンロードするときにTOOMANYREQUESTSエラーが発生しています。
GitHub Container Registryからのダウンロードする際にGitHubのレート制限にひっかかってしまっているようです。
解決策
デフォルトだと GitHub Container Registry がDBのpull元となっているため、--db-repository
を使用してpull元となる別のコンテナレジストリをこちらで指定してあげます。
config.ymlのtrivy imageを以下のように修正します。
今回は、Amazon ECR をpull元のリポジトリとして指定しました。
trivy image --exit-code 0 --no-progress nginx:${WORKFLOW_ID} --db-repository public.ecr.aws/aquasecurity/trivy-db
無事レート制限を回避し、trivy-dbをダウンロードすることができました。
2024-10-31T08:23:53Z INFO [vulndb] Downloading vulnerability DB... 2024-10-31T08:23:53Z INFO [vulndb] Downloading artifact... repo="public.ecr.aws/aquasecurity/trivy-db:2" 2024-10-31T08:23:55Z INFO [vulndb] Artifact successfully downloaded repo="public.ecr.aws/aquasecurity/trivy-db:2"
参考
https://aquasecurity.github.io/trivy/v0.56/docs/references/configuration/config-file/#db-options
https://github.com/aquasecurity/trivy/discussions/7668#discussion-7287552