From e9390fadc24e53e455360f709e79674f752c4a29 Mon Sep 17 00:00:00 2001 From: Arunprasad Rajkumar Date: Thu, 18 Mar 2021 08:16:57 +0530 Subject: [PATCH] config: add matchers settings A root level config key matchers is added to customize the Matcher construction. Signed-off-by: Arunprasad Rajkumar --- Documentation/reference/config.md | 42 +++++++++++++++++++++++++++++++ config.yaml.sample | 15 +++++++++++ config/config.go | 1 + config/matchers.go | 28 +++++++++++++++++++++ go.mod | 11 ++++---- go.sum | 30 +++++++++++++--------- initialize/services.go | 6 +++++ local-dev/clair/config.yaml | 6 +++++ 8 files changed, 122 insertions(+), 17 deletions(-) create mode 100644 config/matchers.go diff --git a/Documentation/reference/config.md b/Documentation/reference/config.md index 778ac5033d..99a4abe33f 100644 --- a/Documentation/reference/config.md +++ b/Documentation/reference/config.md @@ -52,6 +52,9 @@ matcher: period: "" disable_updaters: false update_retention: 2 +matchers: + names: nil + config: nil updaters: sets: nil config: nil @@ -233,6 +236,45 @@ Defaults to 10 If a value of 0 is provided GC is disabled. ``` +### matchers: \ + +``` +Matchers provides configuration for the in-tree Matchers and RemoteMatchers. +``` + +####  names: []string +``` +A list of string values informing the matcher factory about enabled matchers. + +If the value is nil the default list of Matchers will run: + "alpine" + "aws" + "debian" + "oracle" + "photon" + "python" + "rhel" + "suse" + "ubuntu" + "crda" + +If an empty list is provided zero matchers will run. +``` + +####  config: {} +``` +Provides configuration to specific matcher. + +A map keyed by the name of the matcher containing a sub-object which will be provided to the matchers factory constructor. + +A hypothetical example: + config: + python: + ignore_vulns: + - CVE-XYZ + - CVE-ABC +``` + ### updaters: \ ``` diff --git a/config.yaml.sample b/config.yaml.sample index fe62d7556d..09094dacc0 100644 --- a/config.yaml.sample +++ b/config.yaml.sample @@ -36,6 +36,21 @@ matcher: - "rhel" - "suse" - "ubuntu" +matchers: + names: + - "alpine" + - "aws" + - "debian" + - "oracle" + - "photon" + - "python" + - "rhel" + - "suse" + - "ubuntu" + - "crda" + config: + crda: + url: https://f8a-analytics-preview-2445582058137.production.gw.apicast.io/?user_key=3e42fa66f65124e6b1266a23431e3d08 notifier: indexer_addr: http://clair-indexer:8080/ matcher_addr: http://clair-matcher:8080/ diff --git a/config/config.go b/config/config.go index b57a998582..777baa8c1f 100644 --- a/config/config.go +++ b/config/config.go @@ -50,6 +50,7 @@ type Config struct { LogLevel string `yaml:"log_level" json:"log_level"` Indexer Indexer `yaml:"indexer" json:"indexer"` Matcher Matcher `yaml:"matcher" json:"matcher"` + Matchers Matchers `yaml:"matchers" json:"matchers"` Updaters Updaters `yaml:"updaters,omitempty" json:"updaters,omitempty"` Notifier Notifier `yaml:"notifier" json:"notifier"` Auth Auth `yaml:"auth" json:"auth"` diff --git a/config/matchers.go b/config/matchers.go new file mode 100644 index 0000000000..060142bbf3 --- /dev/null +++ b/config/matchers.go @@ -0,0 +1,28 @@ +package config + +import ( + "gopkg.in/yaml.v3" +) + +type Matchers struct { + // A slice of strings representing which + // matchers will be used. + // + // If nil all default Matchers will be used + // + // The following names are supported by default: + // "alpine" + // "aws" + // "debian" + // "oracle" + // "photon" + // "python" + // "rhel" + // "suse" + // "ubuntu" + // "crda" - remotematcher calls hosted api via RPC. + Names []string `yaml:"names" json:"names"` + // Config holds configuration blocks for MatcherFactories and Matchers, + // keyed by name. + Config map[string]yaml.Node `yaml:"config" json:"config"` +} diff --git a/go.mod b/go.mod index 762dcf3bea..35de261c40 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.13 require ( github.com/docker/docker v1.13.1 // indirect github.com/go-stomp/stomp v2.0.6+incompatible + github.com/golang/mock v1.5.0 // indirect github.com/google/go-cmp v0.5.4 github.com/google/go-containerregistry v0.0.0-20191206185556-eb7c14b719c6 github.com/google/uuid v1.1.2 @@ -16,24 +17,24 @@ require ( github.com/mattn/go-sqlite3 v1.11.0 // indirect github.com/prometheus/client_golang v1.9.0 github.com/prometheus/procfs v0.3.0 // indirect - github.com/quay/claircore v0.3.1 + github.com/quay/claircore v0.3.3 github.com/quay/zlog v0.0.0-20210113185248-ce16eed1dcec github.com/remind101/migrate v0.0.0-20170729031349-52c1edff7319 github.com/rs/zerolog v1.20.0 github.com/streadway/amqp v1.0.0 github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 github.com/ugorji/go/codec v1.2.4 - github.com/urfave/cli/v2 v2.2.0 + github.com/urfave/cli/v2 v2.3.0 go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.16.0 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.16.0 go.opentelemetry.io/otel v0.16.0 go.opentelemetry.io/otel/exporters/stdout v0.16.0 go.opentelemetry.io/otel/exporters/trace/jaeger v0.16.0 go.opentelemetry.io/otel/sdk v0.16.0 - golang.org/x/mod v0.4.0 // indirect + golang.org/x/mod v0.4.2 // indirect golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20210122093101-04d7465088b8 // indirect - golang.org/x/tools v0.0.0-20210112235408-75fd75db8797 // indirect + golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e // indirect + golang.org/x/tools v0.1.0 // indirect gopkg.in/square/go-jose.v2 v2.4.1 gopkg.in/yaml.v3 v3.0.0-20200506231410-2ff61e1afc86 ) diff --git a/go.sum b/go.sum index 5f5762f8ed..6f78b664eb 100644 --- a/go.sum +++ b/go.sum @@ -75,6 +75,10 @@ github.com/antchfx/xpath v1.1.8/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNY github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 h1:vmXNl+HDfqqXgr0uY1UgK1GAhps8nbAAtqHNBcgyf+4= +github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46/go.mod h1:olhPNdiiAAMiSujemd1O/sc6GcyePr23f/6uGKtthNg= +github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI490FF0a7zuvxOxen52ddygCfNVjP0XOCMl+M= +github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -235,8 +239,9 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -581,8 +586,8 @@ github.com/prometheus/procfs v0.3.0 h1:Uehi/mxLK0eiUc0H0++5tpMGTexB8wZ598MIgU8Vp github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/quay/alas v1.0.1 h1:MuFpGGXyZlDD7+F/hrnMZmzhS8P2bjRzX9DyGmyLA+0= github.com/quay/alas v1.0.1/go.mod h1:pseepSrG9pwry1joG7RO/RNRFJaWqiqx9qeoomeYwEk= -github.com/quay/claircore v0.3.1 h1:brcesSN42ftNYgC8Zh0w3uJTRxdnhpHj5LC7b9/3VSA= -github.com/quay/claircore v0.3.1/go.mod h1:gDvglP5JVrQcH0ErSjcXtcqzub1aIkqUgeOfm8uoPRg= +github.com/quay/claircore v0.3.3 h1:MIF3RLA30bwemwFo3Uoe7Q6C94h0Zc1vuWAPlUB/3po= +github.com/quay/claircore v0.3.3/go.mod h1:WqS0z0rnQfCPoFpoSNUYK6TilcFcVSyfIq7QmYa7lSg= github.com/quay/goval-parser v0.8.6 h1:h1Xg3SZR/6I7UVa1LcsQZvQft/q7sJbosmFrjzSmdqE= github.com/quay/goval-parser v0.8.6/go.mod h1:Y0NTNfPYOC7yxsYKzJOrscTWUPq1+QbtHw4XpPXWPMc= github.com/quay/zlog v0.0.0-20210113185248-ce16eed1dcec h1:v6gbUFTnms8pwArSDyE4rVK1ySLbxy9EQrbQqdOhAyY= @@ -659,7 +664,6 @@ github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJ github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE= github.com/ugorji/go v1.2.4 h1:cTciPbZ/VSOzCLKclmssnfQ/jyoVyOcJ3aoJyUV1Urc= github.com/ugorji/go v1.2.4/go.mod h1:EuaSCk8iZMdIspsu6HXH7X2UGKw1ezO4wCfGszGmmo4= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8 h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.2.4 h1:C5VurWRRCKjuENsbM6GYVw8W++WVW9rSxoACKIvxzz8= github.com/ugorji/go/codec v1.2.4/go.mod h1:bWBu1+kIRWcF8uMklKaJrR6fTWQOwAlrIzX22pHwryA= @@ -670,8 +674,8 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA= github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= -github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= @@ -767,8 +771,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -883,8 +887,9 @@ golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210122093101-04d7465088b8 h1:de2yTH1xuxjmGB7i6Z5o2z3RCHVa0XlpSZzjd8Fe6bE= -golang.org/x/sys v0.0.0-20210122093101-04d7465088b8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e h1:XNp2Flc/1eWQGk5BLzqTAN7fQIwIbfyVTuVxXxZh73M= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -958,8 +963,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210112235408-75fd75db8797 h1:kcvRujT1OsSzHGjvqsV0XWy92+z4TUgV2YwQH9aQt8I= -golang.org/x/tools v0.0.0-20210112235408-75fd75db8797/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1085,6 +1090,7 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/initialize/services.go b/initialize/services.go index 5f841b63ae..7a04021b62 100644 --- a/initialize/services.go +++ b/initialize/services.go @@ -176,6 +176,10 @@ func localMatcher(ctx context.Context, cfg *config.Config) (matcher.Service, err for name, node := range cfg.Updaters.Config { updaterConfigs[name] = node.Decode } + matcherConfigs := make(map[string]driver.MatcherConfigUnmarshaler) + for name, node := range cfg.Matchers.Config { + matcherConfigs[name] = node.Decode + } s, err := libvuln.New(ctx, &libvuln.Opts{ MaxConnPool: int32(cfg.Matcher.MaxConnPool), ConnString: cfg.Matcher.ConnString, @@ -184,6 +188,8 @@ func localMatcher(ctx context.Context, cfg *config.Config) (matcher.Service, err UpdateInterval: cfg.Matcher.Period, UpdaterConfigs: updaterConfigs, UpdateRetention: cfg.Matcher.UpdateRetention, + MatcherNames: cfg.Matchers.Names, + MatcherConfigs: matcherConfigs, }) if err != nil { return nil, mkErr(err) diff --git a/local-dev/clair/config.yaml b/local-dev/clair/config.yaml index ae69cc81d8..6eaf7ce431 100644 --- a/local-dev/clair/config.yaml +++ b/local-dev/clair/config.yaml @@ -13,6 +13,12 @@ matcher: connstring: host=clair-db port=5432 user=clair dbname=clair sslmode=disable max_conn_pool: 100 migrations: true +matchers: + names: + - crda + config: + crda: + url: https://f8a1-analytics-preview-2445582058137.production.gw.apicast.io/?user_key=3e42fa66f65124e6b1266a23431e3d08 notifier: indexer_addr: http://clair-traefik:6060/ matcher_addr: http://clair-traefik:6060/