Notarizer is a tool that provides a way of verifying the authenticity of docker images.
Project description
Notarizer
The following tool provides a way of verifying the authenticity of docker images. By providing a digital signature that gives a strong reason to believe that the image was created by a known source and was not altered. The following signature is generated by the content of the docker image history.
How does Notarizer work?
Notarizer signs each parent image with a private key and place that signature in a docker label LABEL signature=...
. The signature contents are obtained through the docker history command. With this command it is possible to verify if the label exists and validate if the image has a digital signature.
Usage
Basic commands that are available in Notarizer.
Sign
python notarizer/cli.py sign -i image_name:image_tag -p private-key.pem
Options:
-i
or--image
: the image name to verify in the formatimage_name:image_tag
. This option is required with at least one image and it can be used multiple times to validate multiple images at the same time.-p
or--private-key
: represents the path where the custom private key will be placed.-s
or--signature-label
: represents the custom label name given in the signature. Defaults tosignature
if the flag is not used.
Verify
python notarizer/cli.py verify -i "image_name:image_tag" -p "public-key.pub"
Options:
-i
or--image
: the image name to verify in the formatimage_name:image_tag
. This option is required with at least one image and it can be used multiple times to validate multiple images at the same time.-p
or--public-key
: represents the path where the custom public key will be placed.-s
or--signature-label
: represents the custom label name given in the signature used in the sign command. Defaults tosignature
if the flag is not used.
Exit Codes
After the validation runs the following exit codes are thrown:
- 0 - Verification OK / Signature OK
- 1 - Generic error
- 10 - No Signature Found
- 11 - Invalid Image Signature
- 12 - Verification Failure
- 13 - No Public Key Provided
- 14 - Image Not Found
- 15 - No Private Key Provided
- 16 - Error Creating Signed Docker Image
If there's more than one error on the run (for instance if the verification runs for several images) the exit code will be from the first error found. Although, on the output it's provided the list of all errors found during the run.
Generate Private and Public Key
openssl genpkey -algorithm RSA -out private-key.pem -aes-256-cbc -pkeyopt rsa_keygen_bits:4096
openssl rsa -in private-key.pem -pubout -out public-key.pub
Contributing
- Fork this repository
- Follow project guidelines
- Do your stuff
- Open a pull request following conventional commits
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file notarizer-1.0.1.tar.gz
.
File metadata
- Download URL: notarizer-1.0.1.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37c7111826fc35edc7694a9e58df099f1dafdc512079d0d6daf24af8acb268bd |
|
MD5 | 866b06cb11292310518c592ab46644e0 |
|
BLAKE2b-256 | 4830476647515350acab3554edccb1604abdfb73a501b8dad29053f1cb6c7c87 |
File details
Details for the file notarizer-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: notarizer-1.0.1-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aba25377f19f1323fd8f29622f61c7664877f1809ba1f46f509b6c73af8ba116 |
|
MD5 | 73f6f1a073f4da627cfa6d4c21543e94 |
|
BLAKE2b-256 | 2710021aa3904fd99991f826d33a5e430c33bd875ec2b32c7903f40c1336a1e6 |