py-iam-expand
py-iam-expand is a Python tool to expand and deobfuscate AWS IAM actions.
This can help you to understand and analyze AWS IAM policies more effectively.
Features
- Expand IAM actions with wildcards (
*,?). - Invert IAM action sets to find actions not matching specified patterns.
- Process IAM policies in JSON format.
- Command-line interface for easy use.
- Removes whitespaces or other characters used to obfuscate policies.
- Decide how to handle non valid actions: Raise an error, keep them or remove them.
Installation
Install py-iam-expand using pip:
pip install py-iam-expand
Usage
Command-Line Interface (CLI)
The py-iam-expand tool can be used via the command line to expand IAM actions.
Basic Expansion
Expand IAM actions from the command line:
py-iam-expand "s3:Get*"
This will output the expanded actions to the console:
s3:GetAccelerateConfiguration
s3:GetAccessGrant
s3:GetAccessGrantsInstance
s3:GetAccessGrantsInstanceForPrefix
s3:GetAccessGrantsInstanceResourcePolicy
...
Using Standard Input (stdin)
You can pipe IAM action patterns to py-iam-expand via stdin:
echo "s3:Get*Tagging" | py-iam-expand
Expanding IAM Policies
Expand actions within a JSON IAM policy document:
py-iam-expand < example_policy.json > expanded_policy.json
Inverting Actions
Invert a set of actions to find all actions not matching the provided patterns:
py-iam-expand -i s3:Get* ec2:Describe*
Command-Line Options
usage: py-iam-expand [-h] [--version] [-i] [--invalid-action {raise,remove,keep}]
[--invalid-notaction {raise,remove,keep}]
[ACTION_PATTERN ...]
Expand AWS IAM action patterns provided as arguments/stdin lines OR expand actions within an IAM Policy JSON provided
via stdin.
positional arguments:
ACTION_PATTERN IAM action pattern(s) to expand/invert (e.g., 's3:Get*' 'ec2:*'). If omitted, reads from
stdin. Cannot be used if stdin is a JSON policy.
optional arguments:
-h, --help show this help message and exit
--version Show the package version and exit
-i, --invert Invert pattern expansion result. Cannot be used if stdin is a JSON policy.
--invalid-action {raise,remove,keep}
How to handle invalid patterns in Action elements: raise - raise an error (default), remove -
silently remove invalid patterns, keep - keep invalid patterns in the result
--invalid-notaction {raise,remove,keep}
How to handle invalid patterns in NotAction elements: raise - raise an error, remove -
silently remove invalid patterns, keep - keep invalid patterns in the result (default)
Library
This package can be used as library, check examples in examples folder.
Running Tests
To run the tests:
poetry run pytest tests
Data
This project leverages the iam-data package for up-to-date AWS IAM data.
Contributing
Contributions are welcome! Please submit pull requests or open issues on GitHub.
Acknowledgment
This project was inspired by previous projects like cloud-copilot/iam-expand and ecdavis/iampoliciesgonewild
Release files for py-iam-expand 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_iam_expand-0.3.0.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_iam_expand-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.8 kB
Release files / py_iam_expand-0.3.0.tar.gz
| Download URL | py_iam_expand-0.3.0.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ccfe25f40ba0633a152c4f86b49cde8972ee3d4b6009b017a4310cc4b9e64c7
|
|
BLAKE2b-256 checksum How to use checksums |
a308f6e11a029b81f0bec4b7b1f18704aadf509a882cc386c90ef1ac043c18cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.12.3 Linux/6.11.0-1018-azure
|
Release files / py_iam_expand-0.3.0-py3-none-any.whl
| Download URL | py_iam_expand-0.3.0-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
94c0a1e9dd60316ce60ddc0cdc9a046119bde335b5bb9593ee29224857860d5a
|
|
BLAKE2b-256 checksum How to use checksums |
5add4056d0bc3d6317039d2dd2ee7cd6a5389575603e270399a8f9f20e11e721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.12.3 Linux/6.11.0-1018-azure
|