-
Notifications
You must be signed in to change notification settings - Fork 1
serviceprototypinglab/cipolice
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
CIPolicE - Container Image Policy Engine
========================================
When Docker container images are scanned for quality deficiencies and
security vulnerabilities, the outcome is a set of metrics. What would be
the next steps to act on that?
CIPolicE! This tool builds on the rule_engine framework to allow for
rule-controlled follow-up actions based on image metrics, and
furthermore ships with powerful default rules useful in containerised
environments, e.g. OpenShift.
CIPolicE integrates with web hooks from scan tools to make it work as
invisible but decisive part of your container image workflow; although
other triggers are possible as well. HTTP and AMQP are implemented.
+-------------------------------------------+ +------------------+
| Docker Hub/Registry/RH Registry/OpenShift | | Single container |
+-------------------------------------------+ +------------------+
|--------------------------------------| ^
+---------| ^-----------|
| v |
| +----------------------+ +----------+-> shell/oc command, web hook
| | Quay + Clair scanner |->| CIPolicE |-> digital signature on image
| +----------------------+ +----------+-> simple accept/reject
| +----------------------+ ^
|>| Other image scanners |-----|
+----------------------+
CIPolicE can therefore enforce policies regarding security issues (CVEs,
malware, permissions), quality issues (consistency, layers),
compatibility issues (hardware, container engine flavours) or any other
issues that can be expressed as metrics.
CIPolicE is the result of a joint academic-industry research project
involving the Service Prototyping Lab of Zurich University of Applied
Sciences and Puzzle ITC, changing IT for the better.
Installation and Usage
----------------------
From source:
cd src/
pip(3) install -r requirements.txt
# built-in test trigger, with optional message
python3 cipolice.py -t [{"msg..."}]
# message queue trigger; needs RabbitMQ running
python3 misc/mq-publisher.py
python3 cipolice.py -mr clair.rules
# web request trigger
python3 cipolice.py -w
sh misc/http-publisher.sh example # in 2nd terminal
With container:
docker pull nginx:latest
sh misc/cipolice-docker.sh
sh misc/http-publisher.sh clair # in 2nd terminal
Integrated scenario with container composition:
cd src/test
docker-compose up
Rules
-----
Rules follow a condition-action model, with actions indented as block
under each condition. Comments (#) are allowed. Actions can be shell
scripts (must end in .sh), Python functions (must end in .py with
colon-separated function name), or web hooks. Conditions are evaluated
over JSON-formatted dictionary messages. The special action break
terminates the rule processing per event. For an example including some
invalid rules, have a look at src/*.rules.
The conditions syntax is documented at:
https://zerosteiner.github.io/rule-engine/
In the "src/sign" folder there are also experimental actions to
cryptographically sign that images have been scanned and passed the
policy.
Image Scanners
--------------
Please have a look at the separate README file within the "scanning"
folder for a sophisticated CVE scanner. It scans individual images or
whole registries and generates suitable input for the policy engine. It
is supposed to be integrated with OpenShift, although that part is under
development.
A simple metadata scanner is available in the "src/test" folder.
About
Container Image Policy Engine
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published