{ "info": { "author": "homoluctus", "author_email": "w.slife18sy@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only" ], "description": "# ECRanner\n\n![](https://github.com/homoluctus/ecranner/workflows/Test/badge.svg)\n![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/homoluctus/ecranner?include_prereleases)\n![GitHub](https://img.shields.io/github/license/homoluctus/ecranner)\n\nThis is that scan the vulnerability of Docker images stored in ECR.
\n\n# Table of contents\n- [Feature](#feature)\n- [Get Started](#get-started)\n - [Install Prerequirements](#install-prerequirements)\n - [Install ECRanner](#install-ecranner)\n - [Write ecranner.yml](#write-ecranner.yml)\n - [Execute](#execute)\n- [Configuration Parameter](#configuration-parameter)\n- [Command options](#command-options)\n\n# Feature\n- Pull Docker Image From ECR\n- Support multi account\n- Vulnerability Scan\n - [Trivy](https://github.com/aquasecurity/trivy) detects software (OS package and application library) vulnerabilities in Docker Image\n- Slack Integration\n - Push vulnerability information to Slack. Slack UI is as following:\n\n \"Slack-UI\"\n\n# Get Started\n## Install Prerequirements\n\n- [Trivy](https://github.com/aquasecurity/trivy)\n- Git (Used with Trivy)\n\n## Install ECRanner\n\n```\npip install ecranner\n```\n\n## Write ecranner.yml\n\nA `ecranner.yml` looks like this:\n\n```\naws:\n stg:\n account_id: xxxxxxxxx\n region: us-east-1\n aws_access_key_id: xxxxxxxxx\n aws_secret_access_key: xxxxxxxxx\n images:\n - image:latest\n - image:1.0-dev\n prod:\n account_id: xxxxxxxxx\n region: us-east-1\n aws_access_key_id: xxxxxxxxx\n aws_secret_access_key: xxxxxxxxx\n images:\n - image:1.4\n - image:5.3\n\ntrivy:\n path: ~/user/.local/bin/trivy\n options: --severity CRITICAL -q\n```\n\n## Execute\n\n```\necranner\n```\n\nYou execute the above and then output the scan result to the console as follows:\n\n```\n[ { 'Target': 'image_name:latest'\n '(alpine 3.10.1)',\n 'Vulnerabilities': [ { 'Description': 'aa_read_header in '\n 'libavformat/aadec.c in FFmpeg '\n 'before 3.2.14 and 4.x before 4.1.4 '\n 'does not check for sscanf failure '\n 'and consequently allows use of '\n 'uninitialized variables.',\n 'FixedVersion': '4.1.4-r0',\n 'InstalledVersion': '4.1.3-r1',\n 'PkgName': 'ffmpeg',\n 'References': [ 'https://git.ffmpeg.org/gitweb/ffmpeg.git/shortlog/n4.1.4',\n 'https://github.com/FFmpeg/FFmpeg/commit/ed188f6dcdf0935c939ed813cf8745d50742014b',\n 'https://github.com/FFmpeg/FFmpeg/compare/a97ea53...ba11e40',\n 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12730',\n 'http://www.securityfocus.com/bid/109317',\n 'https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/9b4004c054964a49c7ba44583f4cee22486dd8f2'],\n 'Severity': 'HIGH',\n 'Title': '',\n 'VulnerabilityID': 'CVE-2019-12730'}\n```\n\n# Configuration Parameter\nSpecify to use parameter in `ecranner.yml`.\n\n- [v1.0](conf/v1-0.md)\n\n# Command options\n\n|option|required|default|description|\n|:--:|:--:|:--:|:--|\n|-f, --file|false|`./ecranner.yml`|Filepath to configuration in YAML.
Specify this option if you change configuration filename.|\n|--env-file|false|`./.env`|Specify .env file path.
Automatically load .env file if this file is found in current directory.|\n|--slack|false|N/A|Send the scan result to Slack.
If you use this option, set incoming webhooks url as system environment variable like this:
`export SLACK_WEBHOOK=https://xxxxxxxxxx`|\n|--rm|false|N/A|Remove images after scan with Trivy.|\n|-q, --quiet|false|N/A|Suppress logging message.|\n|--no-cache|false|N/A|***Implement in the future, so you can not use this option***
Disable to store cache.
This command does not use cache, but Trivy command use cache.|\n|-h, --help|false|N/A|Show command option usage.|", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/homoluctus/ecranner", "keywords": "", "license": "MIT", "maintainer": "homoluctus", "maintainer_email": "w.slife18sy@gmail.com", "name": "ecranner", "package_url": "https://pypi.org/project/ecranner/", "platform": "", "project_url": "https://pypi.org/project/ecranner/", "project_urls": { "Homepage": "https://github.com/homoluctus/ecranner", "Repository": "https://github.com/homoluctus/ecranner" }, "release_url": "https://pypi.org/project/ecranner/0.0.2/", "requires_dist": [ "requests (>=2.22,<3.0)", "boto3 (>=1.9,<2.0)", "docker (>=4.0,<5.0)", "pyyaml (>=5.1,<6.0)", "jsonschema (>=3.0,<4.0)" ], "requires_python": ">=3.7,<4.0", "summary": "Scan the vulnerability of Docker images stored in ECR", "version": "0.0.2" }, "last_serial": 5906443, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ead4c0462780626c1ef555e2194d4f13", "sha256": "4577e40e5767f367085789c929195ef0ebeb13926dd3db4a56ef7c9d6198d48e" }, "downloads": -1, "filename": "ecranner-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ead4c0462780626c1ef555e2194d4f13", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 16505, "upload_time": "2019-09-24T17:24:54", "url": "https://files.pythonhosted.org/packages/67/64/f53fd7ba7fc76795d87c59c9281e6999cf77a8abfa31f3f91bb8d1557ead/ecranner-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b07a2d79cc74c5af2e277b008668abeb", "sha256": "55d38fdff81c180353d5bbbca9fcea6532c66047b9065e20c9412b3fb03e9407" }, "downloads": -1, "filename": "ecranner-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b07a2d79cc74c5af2e277b008668abeb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 15484, "upload_time": "2019-09-24T17:24:57", "url": "https://files.pythonhosted.org/packages/1f/d9/8ab0307a187bca12a1629cb54466117c58d5cd17115ec5c4d024ae210c99/ecranner-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "aab966f924ba075323c39065b8a53e00", "sha256": "2bd0c1250c77c95815d39adeccc9031d5a152c521ee054f27e352bd87de9958a" }, "downloads": -1, "filename": "ecranner-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "aab966f924ba075323c39065b8a53e00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 17928, "upload_time": "2019-09-30T10:46:50", "url": "https://files.pythonhosted.org/packages/e2/b3/979ccf502aace24dc52a06572e8e83c22d948161495ce8d91ab1336a7487/ecranner-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3751daf207f22e869a5df07d96df9ef0", "sha256": "20dfb0b38cfe7508c868964bbbd720f557ee22582f7afbd31d7f8bb1c6a5bb13" }, "downloads": -1, "filename": "ecranner-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3751daf207f22e869a5df07d96df9ef0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 15575, "upload_time": "2019-09-30T10:46:53", "url": "https://files.pythonhosted.org/packages/28/e5/e1a633e3ab8a25e601d88aba315e5d8e59b271d84ddccf991ad1d6a796b1/ecranner-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aab966f924ba075323c39065b8a53e00", "sha256": "2bd0c1250c77c95815d39adeccc9031d5a152c521ee054f27e352bd87de9958a" }, "downloads": -1, "filename": "ecranner-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "aab966f924ba075323c39065b8a53e00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 17928, "upload_time": "2019-09-30T10:46:50", "url": "https://files.pythonhosted.org/packages/e2/b3/979ccf502aace24dc52a06572e8e83c22d948161495ce8d91ab1336a7487/ecranner-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3751daf207f22e869a5df07d96df9ef0", "sha256": "20dfb0b38cfe7508c868964bbbd720f557ee22582f7afbd31d7f8bb1c6a5bb13" }, "downloads": -1, "filename": "ecranner-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3751daf207f22e869a5df07d96df9ef0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 15575, "upload_time": "2019-09-30T10:46:53", "url": "https://files.pythonhosted.org/packages/28/e5/e1a633e3ab8a25e601d88aba315e5d8e59b271d84ddccf991ad1d6a796b1/ecranner-0.0.2.tar.gz" } ] }