{ "info": { "author": "eGT Labs", "author_email": "egtlabs@eglobaltech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Utilities" ], "description": "# jmpr\n[![pipeline status](https://git.egt-labs.com/robert.patt-corner/jmpr/badges/master/pipeline.svg)](https://git.egt-labs.com/robert.patt-corner/jmpr/commits/master) [![PyPI version](https://badge.fury.io/py/jmpr.svg)](https://badge.fury.io/py/jmpr)\n\n![eGT Labs Logo](https://avatars0.githubusercontent.com/u/5140903?s=200&v=4)\n\n## What this is?\nTooling to permit AWS account navigation\n\n## How does it work?\n![Magic](https://media.giphy.com/media/12NUbkX6p4xOO4/giphy.gif)\n\nBut seriously, it does some cool stuff in really cool ways...\n\n## How do I use it?\n\nTo get started using jmpr install via pip: `pip install jmpr`.\n\n (You may need to `pip install boto3 pyyaml` to preinstall the dependencies) \n \n To run jmpr use `jmpr -y yourfile.yml`\n\n Use the following gitlab-ci.yml configuration to run in a GitLab CI/CD Pipeline:\n\n ```yaml\nDeploy Test:\n stage: deploy\n before_script:\n - pip install . --quiet\n script:\n - jmpr -y test.yaml\n ```\n\n### AWS Organization Configuration\nTODO: EXPLAIN HOW TO SETUP THE AWS ORGS CONFIG\n\n### AWS Account Configuration\nTODO: EXPLAIN HOW TO CONFIGURE AWS ACCOUNTS TO BE USED. BOTH ORG ACCOUNTS AND NON ORG ACCOUNTS\n\n### Your jmpr Manifest File\njmpr accepts yaml files as input. These files define your entire authentication infrastructure. Including Accounts, Roles, Users, and Policies. \n\n**Example Users**\n```yaml\nusers:\n - name: testuser\n additional_path: \"something\"\n cloud: AWS\n target_roles:\n - account: 540253368830\n role_name: ROLE-ADMIN\n region: us-west-2\n - account: 879397242692\n role_name: ROLE-DEV\n - account: 611424868009\n role_name: ROLE-NEW-ROLE\n - account: 333422963795\n role_name: ROLE-BILLING\n - account: 355841365103\n role_name: ROLE-BILLING\n\n```\n\n\n**Example Roles**\n```yaml\nroles:\n - name: ROLE-ADMIN\n import:\n - arn:aws:iam::aws:policy/AdministratorAccess\n - name: ROLE-RO\n import:\n - arn:aws:iam::aws:policy/ReadOnlyAccess\n - arn:aws:iam::aws:policy/job-function/Billing\n - name: ROLE-BILLING\n import:\n - arn:aws:iam::aws:policy/job-function/Billing\n - name: ROLE-FOO\n import:\n - arn:aws:iam::aws:policy/ReadOnlyAccess\n - arn:aws:iam::aws:policy/job-function/Billing\n```\n\n**Example Accounts**\n```yaml\naccounts:\n test_acct_1:\n account_number: 616552976502\n\n test_acct_2:\n name: My Account\n account_number: 426276006285\n color: ffbd05\n default_region: us-east-1\n\n test_acct_3:\n name: Your Account\n account_number: 343074669674\n color: 225f91\n default_region: us-east-2\n purge: false\n allowed_roles:\n - admin\n - ro\n - billing\n\n '420355987158':\n name: No One's Account\n```\nFor more examples please see [test.yml](test.yaml).\n\n## Developer Notes: \nTo work on this project the following two commands will be your best friends\n\n`pip install . --no-deps` - Quickly install the local repo via pip without worring about dependencies\n\n`jmpr -y test.yaml` - Runs jmpr on the test yaml file that is designed to exersize the yaml parser\n\nThe core library file is [cloudassets.py](./jmpr/cloudassets.py).\n\nThe jmpr cli configuration is [cli.py](./jmpr/cli.py)\n\n### Note on paths:\nAWS IAM fetch and create are carried out only using the name of an entity (user, group, role) by a client associated with an account. Path does not play into AWS IAM entity retrieval or creation.\n\nPaths are embedded in resulting entity ARN's, and ARNs are used to relate entities to each other, for instance in an 'assume role policy'. In addition, paths can be used in policies to include or exclude.\n\nSo:\n* Entities (users, roles, etc.) with the same name and different paths will collide\n* Entities specified with an ARN that does not include the correct path will not be properly referenced.\n\nMaintaining and managing YAML or JSON ARNs including path is likely to introduce frequent errors and failures. \n\nIn consequence, the jmpr approach constructs entities in the way that they are fetched, by account and name, retaining any path information as decoration. \n\nWhen ARNs are needed for a call, the ARN is constructed dynamically in code from the attributes of the entity, which can include the path decoration. This ensures consistent ARNs.\n\nInitially in early release entity paths are guaranteed consistent and all equal to the asset_path, but in later releases entity-specific paths may be introduced so long as they are not embedded in ARNs.\n\n## For More Information\n[Roadmap](./ROADMAP.md)\n\n[Tests](./TESTS.md)\n\nDeveloped in [eGT Labs](https://www.eglobaltech.com/egt-labs/) by [eGlobalTech](https://www.eglobaltech.com/) a [TetraTech](https://www.tetratech.com/) Company\n\n![eGT Labs Logo](https://avatars0.githubusercontent.com/u/5140903?s=200&v=4)\n\n## License\njmpr - Python tooling to enable and manage AWS account navigation\n\nCopyright (C) 2019 [eGlobalTech](https://www.eglobaltech.com)\n\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .", "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/eGT-Labs/jmpr", "keywords": "", "license": "GPL-3.0-only", "maintainer": "", "maintainer_email": "", "name": "jmpr", "package_url": "https://pypi.org/project/jmpr/", "platform": "", "project_url": "https://pypi.org/project/jmpr/", "project_urls": { "Homepage": "https://github.com/eGT-Labs/jmpr" }, "release_url": "https://pypi.org/project/jmpr/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "Tooling to permit AWS account navigation", "version": "0.2.1" }, "last_serial": 5929895, "releases": { "0.0.6": [ { "comment_text": "", "digests": { "md5": "27f22cc7a12363b81ea43318c42929dd", "sha256": "87d1d8bfb643169366b6773e9ad4a78ebe0a2bf655e52b1b32fa6f6547efe473" }, "downloads": -1, "filename": "jmpr-0.0.6.tar.gz", "has_sig": false, "md5_digest": "27f22cc7a12363b81ea43318c42929dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14912, "upload_time": "2019-08-22T22:17:36", "url": "https://files.pythonhosted.org/packages/39/5a/dd41f4cf77404513106ed9ce488a38e7a90f2471655c1da551cdc77b4a94/jmpr-0.0.6.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "93d34743b6b16430716315cb9c8e3fbe", "sha256": "72570b5bcfab85632621ad2ec6b6ed1ab3f94d145c386f3623e6d921b2124716" }, "downloads": -1, "filename": "jmpr-0.1.1.tar.gz", "has_sig": false, "md5_digest": "93d34743b6b16430716315cb9c8e3fbe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20392, "upload_time": "2019-09-04T20:47:17", "url": "https://files.pythonhosted.org/packages/24/8b/64bea1c6b33221db53d38adf0123092359a8d192884a98faf363f1b8b25c/jmpr-0.1.1.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "41e6ef47615ea07ae0b1eff38b294495", "sha256": "e8f3b6388bcbdb11949b0421e7458e2de93f640266b9ba2bbdc125fa0001d053" }, "downloads": -1, "filename": "jmpr-0.2.1.tar.gz", "has_sig": false, "md5_digest": "41e6ef47615ea07ae0b1eff38b294495", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21429, "upload_time": "2019-10-04T19:34:18", "url": "https://files.pythonhosted.org/packages/45/d0/b65aa00b5e4b8d19d4834aa327f23e7ee440488a04a57b60abc26a04298f/jmpr-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "41e6ef47615ea07ae0b1eff38b294495", "sha256": "e8f3b6388bcbdb11949b0421e7458e2de93f640266b9ba2bbdc125fa0001d053" }, "downloads": -1, "filename": "jmpr-0.2.1.tar.gz", "has_sig": false, "md5_digest": "41e6ef47615ea07ae0b1eff38b294495", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21429, "upload_time": "2019-10-04T19:34:18", "url": "https://files.pythonhosted.org/packages/45/d0/b65aa00b5e4b8d19d4834aa327f23e7ee440488a04a57b60abc26a04298f/jmpr-0.2.1.tar.gz" } ] }