From 6e196e416da89eb8947cddc295157d7384c7073e Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Fri, 19 Feb 2016 16:23:59 -0500 Subject: [PATCH] README: add diagram & custom data sources --- README.md | 11 +++++++++++ img/simple_diagram.png | Bin 0 -> 12338 bytes 2 files changed, 11 insertions(+) create mode 100644 img/simple_diagram.png diff --git a/README.md b/README.md index c1da9d30..1629799f 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ [![GoDoc](https://godoc.org/github.com/chihaya/chihaya?status.svg "GoDoc")](https://godoc.org/github.com/chihaya/chihaya) [![IRC Channel](https://img.shields.io/badge/freenode-%23clair-blue.svg "IRC Channel")](http://webchat.freenode.net/?channels=clair) +![Simple Clair Diagram](img/simple_diagram.png) + Clair is an open source project for the static analysis of vulnerabilities in [AppC](https://github.com/appc/spec) and [Docker](https://github.com/docker/docker/blob/master/image/spec/v1.md) containers. Clair imports vulnerability data from a known set of sources and indexes the contents of container images in order to produce a list of vulnerabilities that threaten a container. @@ -101,6 +103,15 @@ By indexing the features of an image into the database, Clair can query for affe [rpm]: http://www.rpm.org +### Custom Data Sources + +In addition to the default data sources, Clair has been designed in a way that allows extension without forking the project. +*Fetchers*, which are Go packages that implement the fetching of upstream vulnerability data, are registered in [init()] similar to drivers for Go's standard [database/sql] package. +A fetcher can live in its own repository and custom versions of clair can contain a small patch that adds the import statements of the desired fetchers in `main.go`. + +[init()]: https://golang.org/doc/effective_go.html#init +[database/sql]: https://godoc.org/database/sql + ## Related Links - [Talk](https://www.youtube.com/watch?v=PA3oBAgjnkU) and [Slides](https://docs.google.com/presentation/d/1toUKgqLyy1b-pZlDgxONLduiLmt2yaLR0GliBB7b3L0/pub?start=false&loop=false&slide=id.p) @ ContainerDays NYC 2015 diff --git a/img/simple_diagram.png b/img/simple_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c29e1b4a9b2d89e66ba831b18dab92d22c7d4cd0 GIT binary patch literal 12338 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 literal 0 HcmV?d00001