iam-policy-validator 1.4.0__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/METADATA +106 -78
- iam_policy_validator-1.6.0.dist-info/RECORD +82 -0
- iam_validator/__version__.py +1 -1
- iam_validator/checks/__init__.py +20 -4
- iam_validator/checks/action_condition_enforcement.py +165 -8
- iam_validator/checks/action_resource_matching.py +424 -0
- iam_validator/checks/condition_key_validation.py +24 -2
- iam_validator/checks/condition_type_mismatch.py +259 -0
- iam_validator/checks/full_wildcard.py +67 -0
- iam_validator/checks/mfa_condition_check.py +112 -0
- iam_validator/checks/principal_validation.py +497 -3
- iam_validator/checks/sensitive_action.py +250 -0
- iam_validator/checks/service_wildcard.py +105 -0
- iam_validator/checks/set_operator_validation.py +157 -0
- iam_validator/checks/utils/sensitive_action_matcher.py +74 -32
- iam_validator/checks/wildcard_action.py +62 -0
- iam_validator/checks/wildcard_resource.py +131 -0
- iam_validator/commands/cache.py +1 -1
- iam_validator/commands/download_services.py +3 -8
- iam_validator/commands/validate.py +72 -13
- iam_validator/core/aws_fetcher.py +114 -64
- iam_validator/core/check_registry.py +167 -29
- iam_validator/core/condition_validators.py +626 -0
- iam_validator/core/config/__init__.py +81 -0
- iam_validator/core/config/aws_api.py +35 -0
- iam_validator/core/config/aws_global_conditions.py +160 -0
- iam_validator/core/config/category_suggestions.py +104 -0
- iam_validator/core/config/condition_requirements.py +155 -0
- iam_validator/core/{config_loader.py → config/config_loader.py} +32 -9
- iam_validator/core/config/defaults.py +523 -0
- iam_validator/core/config/principal_requirements.py +421 -0
- iam_validator/core/config/sensitive_actions.py +672 -0
- iam_validator/core/config/service_principals.py +95 -0
- iam_validator/core/config/wildcards.py +124 -0
- iam_validator/core/formatters/enhanced.py +11 -5
- iam_validator/core/formatters/sarif.py +78 -14
- iam_validator/core/models.py +14 -1
- iam_validator/core/policy_checks.py +4 -4
- iam_validator/core/pr_commenter.py +1 -1
- iam_validator/sdk/__init__.py +187 -0
- iam_validator/sdk/arn_matching.py +274 -0
- iam_validator/sdk/context.py +222 -0
- iam_validator/sdk/exceptions.py +48 -0
- iam_validator/sdk/helpers.py +177 -0
- iam_validator/sdk/policy_utils.py +425 -0
- iam_validator/sdk/shortcuts.py +283 -0
- iam_validator/utils/__init__.py +31 -0
- iam_validator/utils/cache.py +105 -0
- iam_validator/utils/regex.py +206 -0
- iam_policy_validator-1.4.0.dist-info/RECORD +0 -56
- iam_validator/checks/action_resource_constraint.py +0 -151
- iam_validator/checks/security_best_practices.py +0 -536
- iam_validator/core/aws_global_conditions.py +0 -137
- iam_validator/core/defaults.py +0 -393
- {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/WHEEL +0 -0
- {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/entry_points.txt +0 -0
- {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iam-policy-validator
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: Validate AWS IAM policies for correctness and security using AWS Service Reference API
|
|
5
5
|
Project-URL: Homepage, https://github.com/boogy/iam-policy-validator
|
|
6
6
|
Project-URL: Documentation, https://github.com/boogy/iam-policy-validator/tree/main/docs
|
|
@@ -58,7 +58,7 @@ Description-Content-Type: text/markdown
|
|
|
58
58
|
|
|
59
59
|
**This tool prevents these issues** by:
|
|
60
60
|
- ✅ **Validating early** - Catch errors in PRs before merge
|
|
61
|
-
- ✅ **Comprehensive checks** - AWS Access Analyzer +
|
|
61
|
+
- ✅ **Comprehensive checks** - AWS Access Analyzer + 18 built-in security checks
|
|
62
62
|
- ✅ **Smart filtering** - Auto-detects IAM policies from mixed JSON/YAML files
|
|
63
63
|
- ✅ **Developer-friendly** - Clear error messages with fix suggestions
|
|
64
64
|
- ✅ **Zero setup** - Works as a GitHub Action out of the box
|
|
@@ -67,7 +67,7 @@ Description-Content-Type: text/markdown
|
|
|
67
67
|
|
|
68
68
|
### 🔍 Multi-Layer Validation
|
|
69
69
|
- **AWS IAM Access Analyzer** - Official AWS validation (syntax, permissions, security)
|
|
70
|
-
- **
|
|
70
|
+
- **18 Built-in Security Checks** - Comprehensive validation across AWS requirements and security best practices
|
|
71
71
|
- **Policy Comparison** - Detect new permissions vs baseline (prevent scope creep)
|
|
72
72
|
- **Public Access Detection** - Check 29+ AWS resource types for public exposure
|
|
73
73
|
- **Privilege Escalation Detection** - Identify dangerous action combinations
|
|
@@ -448,13 +448,11 @@ settings:
|
|
|
448
448
|
enable_builtin_checks: true
|
|
449
449
|
|
|
450
450
|
# Custom check configurations
|
|
451
|
-
|
|
451
|
+
wildcard_action:
|
|
452
452
|
enabled: true
|
|
453
|
-
|
|
454
|
-
enabled: true
|
|
455
|
-
severity: high
|
|
453
|
+
severity: high
|
|
456
454
|
|
|
457
|
-
|
|
455
|
+
action_condition_enforcement:
|
|
458
456
|
enabled: true
|
|
459
457
|
severity: critical
|
|
460
458
|
action_condition_requirements:
|
|
@@ -465,7 +463,7 @@ action_condition_enforcement_check:
|
|
|
465
463
|
- condition_key: "iam:PassedToService"
|
|
466
464
|
```
|
|
467
465
|
|
|
468
|
-
See [
|
|
466
|
+
See [examples/configs/full-reference-config.yaml](examples/configs/full-reference-config.yaml) for a complete configuration reference with all available options.
|
|
469
467
|
|
|
470
468
|
### GitHub Action Inputs
|
|
471
469
|
|
|
@@ -478,11 +476,11 @@ See [default-config.yaml](default-config.yaml) for a complete configuration exam
|
|
|
478
476
|
| `recursive` | Recursively search directories for policy files | No | `true` |
|
|
479
477
|
|
|
480
478
|
#### GitHub Integration
|
|
481
|
-
| Input
|
|
482
|
-
|
|
|
483
|
-
| `post-comment`
|
|
484
|
-
| `create-review`
|
|
485
|
-
| `github-summary`
|
|
479
|
+
| Input | Description | Required | Default |
|
|
480
|
+
| ---------------- | --------------------------------------------------------- | -------- | ------- |
|
|
481
|
+
| `post-comment` | Post validation summary as PR conversation comment | No | `true` |
|
|
482
|
+
| `create-review` | Create line-specific review comments on PR files | No | `true` |
|
|
483
|
+
| `github-summary` | Write summary to GitHub Actions job summary (Actions tab) | No | `false` |
|
|
486
484
|
|
|
487
485
|
#### Output Options
|
|
488
486
|
| Input | Description | Required | Default |
|
|
@@ -491,12 +489,12 @@ See [default-config.yaml](default-config.yaml) for a complete configuration exam
|
|
|
491
489
|
| `output-file` | Path to save output file (for non-console formats) | No | `""` |
|
|
492
490
|
|
|
493
491
|
#### AWS Access Analyzer
|
|
494
|
-
| Input | Description
|
|
495
|
-
| ------------------------ |
|
|
496
|
-
| `use-access-analyzer` | Use AWS IAM Access Analyzer for validation
|
|
497
|
-
| `access-analyzer-region` | AWS region for Access Analyzer
|
|
492
|
+
| Input | Description | Required | Default |
|
|
493
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------ | -------- | ----------------- |
|
|
494
|
+
| `use-access-analyzer` | Use AWS IAM Access Analyzer for validation | No | `false` |
|
|
495
|
+
| `access-analyzer-region` | AWS region for Access Analyzer | No | `us-east-1` |
|
|
498
496
|
| `policy-type` | Policy type: `IDENTITY_POLICY`, `RESOURCE_POLICY`, `SERVICE_CONTROL_POLICY`, `RESOURCE_CONTROL_POLICY` | No | `IDENTITY_POLICY` |
|
|
499
|
-
| `run-all-checks` | Run custom checks after Access Analyzer (sequential mode)
|
|
497
|
+
| `run-all-checks` | Run custom checks after Access Analyzer (sequential mode) | No | `false` |
|
|
500
498
|
|
|
501
499
|
#### Custom Policy Checks (Access Analyzer)
|
|
502
500
|
| Input | Description | Required | Default |
|
|
@@ -519,7 +517,7 @@ See [default-config.yaml](default-config.yaml) for a complete configuration exam
|
|
|
519
517
|
- Configure `aws-services-dir` in your config file for offline validation
|
|
520
518
|
- The action automatically filters IAM policies from mixed JSON/YAML files
|
|
521
519
|
|
|
522
|
-
See [examples/github-actions/](examples/github-actions/) for
|
|
520
|
+
See [examples/github-actions/](examples/github-actions/) for 9 ready-to-use workflow examples.
|
|
523
521
|
|
|
524
522
|
### As a CLI Tool
|
|
525
523
|
|
|
@@ -596,7 +594,7 @@ iam-validator validate --path ./bucket-policies/ --policy-type RESOURCE_POLICY
|
|
|
596
594
|
**Advanced Principal Validation:**
|
|
597
595
|
```yaml
|
|
598
596
|
# config.yaml
|
|
599
|
-
|
|
597
|
+
principal_validation:
|
|
600
598
|
enabled: true
|
|
601
599
|
severity: high
|
|
602
600
|
# Block public access
|
|
@@ -750,7 +748,7 @@ iam-validator analyze \
|
|
|
750
748
|
- **API**: API Gateway REST API
|
|
751
749
|
- **DevOps**: CodeArtifact Domain, Backup Vault, CloudTrail
|
|
752
750
|
|
|
753
|
-
See [docs/custom-
|
|
751
|
+
See [docs/custom-checks.md](docs/custom-checks.md) for complete documentation.
|
|
754
752
|
|
|
755
753
|
### As a Python Package
|
|
756
754
|
|
|
@@ -784,70 +782,96 @@ asyncio.run(main())
|
|
|
784
782
|
|
|
785
783
|
## Validation Checks
|
|
786
784
|
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
785
|
+
IAM Policy Validator performs **18 built-in checks** to ensure your policies are secure and valid.
|
|
786
|
+
|
|
787
|
+
**📖 For detailed check documentation with configuration examples and pass/fail scenarios:**
|
|
788
|
+
- **[Check Reference Guide](docs/check-reference.md)** - Complete reference for all 18 checks
|
|
789
|
+
- **[Condition Requirements](docs/condition-requirements.md)** - Action condition enforcement
|
|
790
|
+
- **[Privilege Escalation Detection](docs/privilege-escalation.md)** - Detecting escalation paths
|
|
791
|
+
|
|
792
|
+
### Quick Overview
|
|
793
|
+
|
|
794
|
+
**AWS IAM Validation (12 checks)** - Ensure policies work correctly in AWS:
|
|
795
|
+
- Statement ID uniqueness and format
|
|
796
|
+
- Policy size limits
|
|
797
|
+
- Action and condition key validation
|
|
798
|
+
- Condition operator and value type checking
|
|
799
|
+
- Set operator validation
|
|
800
|
+
- MFA anti-pattern detection
|
|
801
|
+
- Resource ARN format validation
|
|
802
|
+
- Principal validation (resource policies)
|
|
803
|
+
- Policy type validation
|
|
804
|
+
- Action-resource constraint and matching
|
|
805
|
+
|
|
806
|
+
**Security Best Practices (6 checks)** - Identify security risks:
|
|
807
|
+
- Wildcard actions (`Action: "*"`)
|
|
808
|
+
- Wildcard resources (`Resource: "*"`)
|
|
809
|
+
- Full wildcard (CRITICAL: both wildcards together)
|
|
810
|
+
- Service-level wildcards (`iam:*`, `s3:*`, etc.)
|
|
811
|
+
- Sensitive actions without conditions (490 actions across 4 risk categories)
|
|
812
|
+
- Action condition enforcement (MFA, IP restrictions, tags, etc.)
|
|
813
|
+
|
|
814
|
+
### Quick Examples
|
|
815
|
+
|
|
816
|
+
**Action Validation:**
|
|
791
817
|
```json
|
|
818
|
+
// ✅ PASS: Valid S3 action
|
|
792
819
|
{
|
|
793
820
|
"Effect": "Allow",
|
|
794
|
-
"Action": "s3:GetObject",
|
|
795
|
-
"Resource": "
|
|
821
|
+
"Action": "s3:GetObject",
|
|
822
|
+
"Resource": "arn:aws:s3:::my-bucket/*"
|
|
796
823
|
}
|
|
797
|
-
```
|
|
798
824
|
|
|
799
|
-
|
|
825
|
+
// ❌ FAIL: Invalid action name
|
|
800
826
|
{
|
|
801
827
|
"Effect": "Allow",
|
|
802
|
-
"Action": "s3:InvalidAction", //
|
|
828
|
+
"Action": "s3:InvalidAction", // ERROR: Action doesn't exist
|
|
803
829
|
"Resource": "*"
|
|
804
830
|
}
|
|
805
831
|
```
|
|
806
832
|
|
|
807
|
-
|
|
833
|
+
**Full Wildcard (Critical):**
|
|
834
|
+
```json
|
|
835
|
+
// ✅ PASS: Specific actions and resources
|
|
836
|
+
{
|
|
837
|
+
"Effect": "Allow",
|
|
838
|
+
"Action": ["s3:GetObject", "s3:PutObject"],
|
|
839
|
+
"Resource": "arn:aws:s3:::my-bucket/*"
|
|
840
|
+
}
|
|
808
841
|
|
|
809
|
-
|
|
842
|
+
// ❌ FAIL: Administrative access
|
|
843
|
+
{
|
|
844
|
+
"Effect": "Allow",
|
|
845
|
+
"Action": "*", // CRITICAL: All actions
|
|
846
|
+
"Resource": "*" // CRITICAL: All resources
|
|
847
|
+
}
|
|
848
|
+
```
|
|
810
849
|
|
|
850
|
+
**Action Condition Enforcement:**
|
|
811
851
|
```json
|
|
852
|
+
// ✅ PASS: iam:PassRole with required condition
|
|
812
853
|
{
|
|
813
854
|
"Effect": "Allow",
|
|
814
|
-
"Action": "
|
|
855
|
+
"Action": "iam:PassRole",
|
|
815
856
|
"Resource": "*",
|
|
816
857
|
"Condition": {
|
|
817
858
|
"StringEquals": {
|
|
818
|
-
"
|
|
859
|
+
"iam:PassedToService": ["lambda.amazonaws.com"]
|
|
819
860
|
}
|
|
820
861
|
}
|
|
821
862
|
}
|
|
822
|
-
```
|
|
823
|
-
|
|
824
|
-
### 3. Resource ARN Validation
|
|
825
863
|
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
```json
|
|
829
|
-
{
|
|
830
|
-
"Effect": "Allow",
|
|
831
|
-
"Action": "s3:GetObject",
|
|
832
|
-
"Resource": "arn:aws:s3:::my-bucket/*" // ✅ Valid ARN
|
|
833
|
-
}
|
|
834
|
-
```
|
|
835
|
-
|
|
836
|
-
```json
|
|
864
|
+
// ❌ FAIL: iam:PassRole without condition
|
|
837
865
|
{
|
|
838
866
|
"Effect": "Allow",
|
|
839
|
-
"Action": "
|
|
840
|
-
"Resource": "
|
|
867
|
+
"Action": "iam:PassRole", // HIGH: Missing iam:PassedToService condition
|
|
868
|
+
"Resource": "*"
|
|
841
869
|
}
|
|
842
870
|
```
|
|
843
871
|
|
|
844
|
-
|
|
872
|
+
**📚 For complete documentation of all 18 checks with detailed examples, see [Check Reference Guide](docs/check-reference.md)**
|
|
845
873
|
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
- Overly permissive wildcard usage (`*` for both Action and Resource)
|
|
849
|
-
- Sensitive actions without conditions
|
|
850
|
-
- Administrative permissions without restrictions
|
|
874
|
+
_Note: The old [CHECKS.md](docs/CHECKS.md) has been deprecated in favor of the new check-reference.md with better organization and examples._
|
|
851
875
|
|
|
852
876
|
## GitHub Integration Features
|
|
853
877
|
|
|
@@ -958,27 +982,27 @@ Result: PR always shows current state, no stale comments
|
|
|
958
982
|
|
|
959
983
|
## 📚 Documentation
|
|
960
984
|
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
-
|
|
965
|
-
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
- Configuration
|
|
969
|
-
-
|
|
970
|
-
-
|
|
971
|
-
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
- **[
|
|
981
|
-
- **[
|
|
985
|
+
### Core Documentation
|
|
986
|
+
- **[📖 Complete Usage Guide (DOCS.md)](DOCS.md)** - Installation, CLI reference, GitHub Actions, configuration
|
|
987
|
+
- **[✅ Validation Checks Reference](docs/check-reference.md)** - All 18 checks with pass/fail examples
|
|
988
|
+
- **[🐍 Python SDK Guide (SDK.md)](docs/SDK.md)** - Use as a Python library in your applications
|
|
989
|
+
- **[🤝 Contributing Guide (CONTRIBUTING.md)](CONTRIBUTING.md)** - How to contribute to the project
|
|
990
|
+
|
|
991
|
+
### Examples & Resources
|
|
992
|
+
- **[Configuration Examples](examples/configs/)** - 9 configuration files for different use cases
|
|
993
|
+
- **[GitHub Actions Workflows](examples/github-actions/)** - Ready-to-use workflow examples
|
|
994
|
+
- **[Custom Checks](examples/custom_checks/)** - Example custom validation rules
|
|
995
|
+
- **[Library Usage Examples](examples/library-usage/)** - Python SDK examples
|
|
996
|
+
- **[Test IAM Policies](examples/iam-test-policies/)** - Example policies for testing
|
|
997
|
+
|
|
998
|
+
### Advanced Topics
|
|
999
|
+
- **[Roadmap](docs/ROADMAP.md)** - Planned features and improvements
|
|
1000
|
+
- **[AWS Services Backup Guide](docs/aws-services-backup.md)** - Offline validation setup
|
|
1001
|
+
- **[Publishing Guide](docs/development/PUBLISHING.md)** - Release process for maintainers
|
|
1002
|
+
|
|
1003
|
+
### Quick Links
|
|
1004
|
+
- **[GitHub Issues](https://github.com/boogy/iam-policy-validator/issues)** - Report bugs or request features
|
|
1005
|
+
- **[GitHub Discussions](https://github.com/boogy/iam-policy-validator/discussions)** - Ask questions and share ideas
|
|
982
1006
|
|
|
983
1007
|
## 🤝 Contributing
|
|
984
1008
|
|
|
@@ -1015,6 +1039,10 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed instructions.
|
|
|
1015
1039
|
|
|
1016
1040
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
1017
1041
|
|
|
1042
|
+
### Third-Party Code
|
|
1043
|
+
|
|
1044
|
+
Portions of the ARN pattern matching code in [`iam_validator/sdk/arn_matching.py`](iam_validator/sdk/arn_matching.py) are derived from [Parliament](https://github.com/duo-labs/parliament) (Copyright 2019 Duo Security, [BSD 3-Clause License](https://github.com/duo-labs/parliament/blob/master/LICENSE)). See file header for details.
|
|
1045
|
+
|
|
1018
1046
|
## 🆘 Support
|
|
1019
1047
|
|
|
1020
1048
|
- **Documentation**: Check the [docs/](docs/) directory
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
iam_validator/__init__.py,sha256=APnMR3Fu4fHhxfsHBvUM2dJIwazgvLKQbfOsSgFPidg,693
|
|
2
|
+
iam_validator/__main__.py,sha256=to_nz3n_IerJpVVZZ6WSFlFR5s_06J0csfPOTfQZG8g,197
|
|
3
|
+
iam_validator/__version__.py,sha256=U-2GASzFF5PD483Cth0LG6biXahUQLBsW4BrfQVnGhw,206
|
|
4
|
+
iam_validator/checks/__init__.py,sha256=eDiDlVon0CwWGSBnZgM-arn1i5R5ZSG89pgR-ifETxE,1782
|
|
5
|
+
iam_validator/checks/action_condition_enforcement.py,sha256=qE2ae6vzOG2LqYGrvxeDdKyXtfdtqgfCBBceTpIGqNY,36573
|
|
6
|
+
iam_validator/checks/action_resource_matching.py,sha256=KyF9GgZrfSLy-DR_iaj9J9fOTOaj8G5BvBYqHEiSnkg,16577
|
|
7
|
+
iam_validator/checks/action_validation.py,sha256=IpxtTsk58f2zEZ-xzAoyHw4QK8BCRV43OffP-8ydf9E,2578
|
|
8
|
+
iam_validator/checks/condition_key_validation.py,sha256=E-doe2QjvKSkyjXZO9TBp0QS7M0Fv2oYYQQ9738QNxg,3918
|
|
9
|
+
iam_validator/checks/condition_type_mismatch.py,sha256=qAbP6pP_vM1aBvIBRHji56XLH_5cQI4cDhpMQe19CHM,10588
|
|
10
|
+
iam_validator/checks/full_wildcard.py,sha256=8zkmkQo2TkflgNgbclThH73mIBRHbuiob0YO2HwQhuE,2371
|
|
11
|
+
iam_validator/checks/mfa_condition_check.py,sha256=s7K2r9hxlJI1KWk8qXl-JOWE6jLIhpxooK26Pr7acKs,4915
|
|
12
|
+
iam_validator/checks/policy_size.py,sha256=gJD8rFHa1CstKaZ2Dj9B5XEI3o0wsGv7ksqjqZXoSXI,5771
|
|
13
|
+
iam_validator/checks/policy_type_validation.py,sha256=w85W4zdZ6ZrDy0DmHxxnAXbJGfN8peRDjLfJ4Bp1dWc,15009
|
|
14
|
+
iam_validator/checks/principal_validation.py,sha256=DLmqX_QbfuV8O5XtcuocBeR_Vwa50_3RBx35XuLQob8,29837
|
|
15
|
+
iam_validator/checks/resource_validation.py,sha256=AEIoiR6AKYLuVaA8ne3QE5qy6NCMDe98_2JAiwE9-JU,4261
|
|
16
|
+
iam_validator/checks/sensitive_action.py,sha256=gxPhxMxQzsj7xrvRfMZlfh1o67B2s1ddSLF_KQ0FKOw,9716
|
|
17
|
+
iam_validator/checks/service_wildcard.py,sha256=1O3NF8_T1LsCzpm8SFViv1KTh9NYQSqXN8-D3xx6Erw,4156
|
|
18
|
+
iam_validator/checks/set_operator_validation.py,sha256=1XjOdf-xk-m6m1bODuHsELZccriGqOJTDI-HCcuId80,7464
|
|
19
|
+
iam_validator/checks/sid_uniqueness.py,sha256=1Ux9W1hPPhzgdCzfxwxvD-nSBRo1SyrxFWlnTXDcOys,6887
|
|
20
|
+
iam_validator/checks/wildcard_action.py,sha256=KsAej_GP6qL2XpmvGnS56SIJw3Z-5xyvZ7VDfsERFrU,2045
|
|
21
|
+
iam_validator/checks/wildcard_resource.py,sha256=V5aBmb1pr8KhbVv2G4nzjBlZWz0kCOCgW6jKnb2_U60,5504
|
|
22
|
+
iam_validator/checks/utils/__init__.py,sha256=j0X4ibUB6RGx2a-kNoJnlVZwHfoEvzZsIeTmJIAoFzA,45
|
|
23
|
+
iam_validator/checks/utils/policy_level_checks.py,sha256=2V60C0zhKfsFPjQ-NMlD3EemtwA9S6-4no8nETgXdQE,5274
|
|
24
|
+
iam_validator/checks/utils/sensitive_action_matcher.py,sha256=e67RIi-zg7ssFwq6x4kt4wsTF-brNz91KaBxgV-23jg,10687
|
|
25
|
+
iam_validator/checks/utils/wildcard_expansion.py,sha256=V3V_KRpapOzPBhpUObJjGHoMhvCH90QvDxppeEHIG_U,3152
|
|
26
|
+
iam_validator/commands/__init__.py,sha256=M-5bo8w0TCWydK0cXgJyPD2fmk8bpQs-3b26YbgLzlc,565
|
|
27
|
+
iam_validator/commands/analyze.py,sha256=TWlDaZ8gVOdNv6__KQQfzeLVW36qLiL5IzlhGYfvq_g,16501
|
|
28
|
+
iam_validator/commands/base.py,sha256=5baCCMwxz7pdQ6XMpWfXFNz7i1l5dB8Qv9dKKR04Gzs,1074
|
|
29
|
+
iam_validator/commands/cache.py,sha256=p4ucRVuh42sbK3Lk0b610L3ofAR5TnUreF00fpO6VFg,14219
|
|
30
|
+
iam_validator/commands/download_services.py,sha256=KKz3ybMLT8DQUf9aFZ0tilJ-o1b6PE8Pf1pC4K6cT8I,9175
|
|
31
|
+
iam_validator/commands/post_to_pr.py,sha256=CvUXs2xvO-UhluxdfNM6F0TCWD8hDBEOiYw60fm1Dms,2363
|
|
32
|
+
iam_validator/commands/validate.py,sha256=vyPsEenHoQPc_ftaVv0Ek5i52OvoqHaRCpVLLjCU5As,23508
|
|
33
|
+
iam_validator/core/__init__.py,sha256=1FvJPMrbzJfS9YbRUJCshJLd5gzWwR9Fd_slS0Aq9c8,416
|
|
34
|
+
iam_validator/core/access_analyzer.py,sha256=poeT1i74jXpKr1B3UmvqiTvCTbq82zffWgZHwiFUwoo,24337
|
|
35
|
+
iam_validator/core/access_analyzer_report.py,sha256=IrQVszlhFfQ6WykYLpig7TU3hf8dnQTegPDsOvHjR5Q,24873
|
|
36
|
+
iam_validator/core/aws_fetcher.py,sha256=NEXS7w6M5_EIXAm6OyyUEenpPU6p2Aj_a_p93aR9vAI,36147
|
|
37
|
+
iam_validator/core/check_registry.py,sha256=cMjtJROkZOLzXxl-mTdLYHdxyajNnOsaHGs-EeaSZ7k,21741
|
|
38
|
+
iam_validator/core/cli.py,sha256=PkXiZjlgrQ21QustBbspefYsdbxst4gxoClyG2_HQR8,3843
|
|
39
|
+
iam_validator/core/condition_validators.py,sha256=7zBjlcf2xGFKGbcFrXSLvWT5tFhWxoqwzhsJqS2E8uY,21524
|
|
40
|
+
iam_validator/core/models.py,sha256=spL5USsDFNfzQ_7R6yaTo-fcoRANkKS-zCwn88XYjYQ,11544
|
|
41
|
+
iam_validator/core/policy_checks.py,sha256=Uz2yCsqRaoIja31F4ZM-39a1pHv51yZqKyWWkGUZKNY,26489
|
|
42
|
+
iam_validator/core/policy_loader.py,sha256=TR7SpzlRG3TwH4HBGEFUuhNOmxIR8Cud2SQ-AmHWBpM,14040
|
|
43
|
+
iam_validator/core/pr_commenter.py,sha256=EDE8lWsabkHYrOw2ApIUrPbjI5K3-Z_QxJkjakaVsTk,11600
|
|
44
|
+
iam_validator/core/report.py,sha256=Yeh_u9jQvTyDV3ignyPcWEQVfFcxNZNrxf4T0fjeWb4,33283
|
|
45
|
+
iam_validator/core/config/__init__.py,sha256=CWSyIA7kEyzrskEenjYbs9Iih10BXRpiY9H2dHg61rU,2671
|
|
46
|
+
iam_validator/core/config/aws_api.py,sha256=HLIzOItQ0A37wxHcgWck6ZFO0wmNY8JNTiWMMK6JKYU,1248
|
|
47
|
+
iam_validator/core/config/aws_global_conditions.py,sha256=gdmMxXGBy95B3uYUG-J7rnM6Ixgc6L7Y9Pcd2XAMb60,7170
|
|
48
|
+
iam_validator/core/config/category_suggestions.py,sha256=QlrYi4BTkxDSTlL7NZGE9BWN-atWetZ6XjkI9F_7YzI,4370
|
|
49
|
+
iam_validator/core/config/condition_requirements.py,sha256=1PuADTB9pLqh-kNUGC7kSU6LMLtXMSc003tvI7qKeAY,5170
|
|
50
|
+
iam_validator/core/config/config_loader.py,sha256=MjO9SJ3HSXl6gnv_Qy0d906pX9iW8cONM8alOotUaKI,17749
|
|
51
|
+
iam_validator/core/config/defaults.py,sha256=w5ievxkqki3zYr7NaREoWtVx5rTfxBpZlgoNdovcILs,27112
|
|
52
|
+
iam_validator/core/config/principal_requirements.py,sha256=VCX7fBDgeDTJQyoz7_x7GI7Kf9O1Eu-sbihoHOrKv6o,15105
|
|
53
|
+
iam_validator/core/config/sensitive_actions.py,sha256=uATDIp_TD3OQQlsYTZp79qd1mSK2Bf9hJ0JwcqLBr84,25344
|
|
54
|
+
iam_validator/core/config/service_principals.py,sha256=gQSROsxUWBD6P2F9qP320UZV4lHGlsyvHSkMyy0njrU,2685
|
|
55
|
+
iam_validator/core/config/wildcards.py,sha256=H_v6hb-rZ0UUz4cul9lxkVI39e6knaK4Y-MbWz2Ebpw,3228
|
|
56
|
+
iam_validator/core/formatters/__init__.py,sha256=fnCKAEBXItnOf2m4rhVs7zwMaTxbG6ESh3CF8V5j5ec,868
|
|
57
|
+
iam_validator/core/formatters/base.py,sha256=SShDeDiy5mYQnS6BpA8xYg91N-KX1EObkOtlrVHqx1Q,4451
|
|
58
|
+
iam_validator/core/formatters/console.py,sha256=lX4Yp4bTW61fxe0fCiHuO6bCZtC_6cjCwqDNQ55nT_8,1937
|
|
59
|
+
iam_validator/core/formatters/csv.py,sha256=2FaN6Y_0TPMFOb3A3tNtj0-9bkEc5P-6eZ7eLROIqFE,5899
|
|
60
|
+
iam_validator/core/formatters/enhanced.py,sha256=S0UgYKFOgILfOqwnBC8-WFab3F1CiEko33g0nbaswtk,17085
|
|
61
|
+
iam_validator/core/formatters/html.py,sha256=j4sQi-wXiD9kCHldW5JCzbJe0frhiP5uQI9KlH3Sj_g,22994
|
|
62
|
+
iam_validator/core/formatters/json.py,sha256=A7gZ8P32GEdbDvrSn6v56yQ4fOP_kyMaoFVXG2bgnew,939
|
|
63
|
+
iam_validator/core/formatters/markdown.py,sha256=aPAY6FpZBHsVBDag3FAsB_X9CZzznFjX9dQr0ysDrTE,2251
|
|
64
|
+
iam_validator/core/formatters/sarif.py,sha256=O3pn7whqFq5xxk-tuoqSb2k4Fk5ai_A2SKX_ph8GLV4,10469
|
|
65
|
+
iam_validator/integrations/__init__.py,sha256=7Hlor_X9j0NZaEjFuSvoXAAuSKQ-zgY19Rk-Dz3JpKo,616
|
|
66
|
+
iam_validator/integrations/github_integration.py,sha256=bKs94vNT4PmcmUPUeuY2WJFhCYpUY2SWiBP1vj-andA,25673
|
|
67
|
+
iam_validator/integrations/ms_teams.py,sha256=t2PlWuTDb6GGH-eDU1jnOKd8D1w4FCB68bahGA7MJcE,14475
|
|
68
|
+
iam_validator/sdk/__init__.py,sha256=fRDSXAclGmCU3KDft4StL8JUcpAsdzwIRf8mVj461q0,5306
|
|
69
|
+
iam_validator/sdk/arn_matching.py,sha256=we70RM2sriCcsd5GAUj7gL0iGKZt3oa0kle2VLF-X2E,8841
|
|
70
|
+
iam_validator/sdk/context.py,sha256=SBFeedu8rhCzFA-zC2cH4wLZxEJT6XOW30hIZAyXPVU,6826
|
|
71
|
+
iam_validator/sdk/exceptions.py,sha256=tm91TxIwU157U_UHN7w5qICf_OhU11agj6pV5W_YP-4,1023
|
|
72
|
+
iam_validator/sdk/helpers.py,sha256=OVBg4xrW95LT74wXCg1LQkba9kw5RfFqeCLuTqhgL-A,5697
|
|
73
|
+
iam_validator/sdk/policy_utils.py,sha256=CZS1OGSdiWsd2lsCwg0BDcUNWa61tUwgvn-P5rKqeN8,12987
|
|
74
|
+
iam_validator/sdk/shortcuts.py,sha256=EVNSYV7rv4TFH03ulsZ3mS1UVmTSp2jKpc2AXs4j1q4,8531
|
|
75
|
+
iam_validator/utils/__init__.py,sha256=V8u-SSdnL4a7NwF-yg9x0JRl5epKAXEs2f5RiwK2qPo,856
|
|
76
|
+
iam_validator/utils/cache.py,sha256=wOQKOBeoG6QqC5f0oXcHz63Cjtu_-SsSS-0pTSwyAiM,3254
|
|
77
|
+
iam_validator/utils/regex.py,sha256=PMVCYxjlVa2zLNEnIU3upQCSIhPazlXWg_sJClIiqiM,6221
|
|
78
|
+
iam_policy_validator-1.6.0.dist-info/METADATA,sha256=rghXQo_4hFarMkPFzCmWFgD_1yMW1dwtwGIId_MsBdc,36586
|
|
79
|
+
iam_policy_validator-1.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
80
|
+
iam_policy_validator-1.6.0.dist-info/entry_points.txt,sha256=8HtWd8O7mvPiPdZR5YbzY8or_qcqLM4-pKaFdhtFT8M,62
|
|
81
|
+
iam_policy_validator-1.6.0.dist-info/licenses/LICENSE,sha256=AMnbFTBDcK4_MITe2wiQBkj0vg-jjBBhsc43ydC7tt4,1098
|
|
82
|
+
iam_policy_validator-1.6.0.dist-info/RECORD,,
|
iam_validator/__version__.py
CHANGED
iam_validator/checks/__init__.py
CHANGED
|
@@ -5,23 +5,39 @@ Built-in policy checks for IAM Policy Validator.
|
|
|
5
5
|
from iam_validator.checks.action_condition_enforcement import (
|
|
6
6
|
ActionConditionEnforcementCheck,
|
|
7
7
|
)
|
|
8
|
-
from iam_validator.checks.
|
|
8
|
+
from iam_validator.checks.action_resource_matching import (
|
|
9
|
+
ActionResourceMatchingCheck,
|
|
10
|
+
)
|
|
9
11
|
from iam_validator.checks.action_validation import ActionValidationCheck
|
|
10
12
|
from iam_validator.checks.condition_key_validation import ConditionKeyValidationCheck
|
|
13
|
+
from iam_validator.checks.condition_type_mismatch import ConditionTypeMismatchCheck
|
|
14
|
+
from iam_validator.checks.full_wildcard import FullWildcardCheck
|
|
15
|
+
from iam_validator.checks.mfa_condition_check import MFAConditionCheck
|
|
11
16
|
from iam_validator.checks.policy_size import PolicySizeCheck
|
|
12
17
|
from iam_validator.checks.principal_validation import PrincipalValidationCheck
|
|
13
18
|
from iam_validator.checks.resource_validation import ResourceValidationCheck
|
|
14
|
-
from iam_validator.checks.
|
|
19
|
+
from iam_validator.checks.sensitive_action import SensitiveActionCheck
|
|
20
|
+
from iam_validator.checks.service_wildcard import ServiceWildcardCheck
|
|
21
|
+
from iam_validator.checks.set_operator_validation import SetOperatorValidationCheck
|
|
15
22
|
from iam_validator.checks.sid_uniqueness import SidUniquenessCheck
|
|
23
|
+
from iam_validator.checks.wildcard_action import WildcardActionCheck
|
|
24
|
+
from iam_validator.checks.wildcard_resource import WildcardResourceCheck
|
|
16
25
|
|
|
17
26
|
__all__ = [
|
|
18
27
|
"ActionConditionEnforcementCheck",
|
|
19
|
-
"
|
|
28
|
+
"ActionResourceMatchingCheck",
|
|
20
29
|
"ActionValidationCheck",
|
|
21
30
|
"ConditionKeyValidationCheck",
|
|
31
|
+
"ConditionTypeMismatchCheck",
|
|
32
|
+
"FullWildcardCheck",
|
|
33
|
+
"MFAConditionCheck",
|
|
22
34
|
"PolicySizeCheck",
|
|
23
35
|
"PrincipalValidationCheck",
|
|
24
36
|
"ResourceValidationCheck",
|
|
25
|
-
"
|
|
37
|
+
"SensitiveActionCheck",
|
|
38
|
+
"ServiceWildcardCheck",
|
|
39
|
+
"SetOperatorValidationCheck",
|
|
26
40
|
"SidUniquenessCheck",
|
|
41
|
+
"WildcardActionCheck",
|
|
42
|
+
"WildcardResourceCheck",
|
|
27
43
|
]
|