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.
Files changed (57) hide show
  1. {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/METADATA +106 -78
  2. iam_policy_validator-1.6.0.dist-info/RECORD +82 -0
  3. iam_validator/__version__.py +1 -1
  4. iam_validator/checks/__init__.py +20 -4
  5. iam_validator/checks/action_condition_enforcement.py +165 -8
  6. iam_validator/checks/action_resource_matching.py +424 -0
  7. iam_validator/checks/condition_key_validation.py +24 -2
  8. iam_validator/checks/condition_type_mismatch.py +259 -0
  9. iam_validator/checks/full_wildcard.py +67 -0
  10. iam_validator/checks/mfa_condition_check.py +112 -0
  11. iam_validator/checks/principal_validation.py +497 -3
  12. iam_validator/checks/sensitive_action.py +250 -0
  13. iam_validator/checks/service_wildcard.py +105 -0
  14. iam_validator/checks/set_operator_validation.py +157 -0
  15. iam_validator/checks/utils/sensitive_action_matcher.py +74 -32
  16. iam_validator/checks/wildcard_action.py +62 -0
  17. iam_validator/checks/wildcard_resource.py +131 -0
  18. iam_validator/commands/cache.py +1 -1
  19. iam_validator/commands/download_services.py +3 -8
  20. iam_validator/commands/validate.py +72 -13
  21. iam_validator/core/aws_fetcher.py +114 -64
  22. iam_validator/core/check_registry.py +167 -29
  23. iam_validator/core/condition_validators.py +626 -0
  24. iam_validator/core/config/__init__.py +81 -0
  25. iam_validator/core/config/aws_api.py +35 -0
  26. iam_validator/core/config/aws_global_conditions.py +160 -0
  27. iam_validator/core/config/category_suggestions.py +104 -0
  28. iam_validator/core/config/condition_requirements.py +155 -0
  29. iam_validator/core/{config_loader.py → config/config_loader.py} +32 -9
  30. iam_validator/core/config/defaults.py +523 -0
  31. iam_validator/core/config/principal_requirements.py +421 -0
  32. iam_validator/core/config/sensitive_actions.py +672 -0
  33. iam_validator/core/config/service_principals.py +95 -0
  34. iam_validator/core/config/wildcards.py +124 -0
  35. iam_validator/core/formatters/enhanced.py +11 -5
  36. iam_validator/core/formatters/sarif.py +78 -14
  37. iam_validator/core/models.py +14 -1
  38. iam_validator/core/policy_checks.py +4 -4
  39. iam_validator/core/pr_commenter.py +1 -1
  40. iam_validator/sdk/__init__.py +187 -0
  41. iam_validator/sdk/arn_matching.py +274 -0
  42. iam_validator/sdk/context.py +222 -0
  43. iam_validator/sdk/exceptions.py +48 -0
  44. iam_validator/sdk/helpers.py +177 -0
  45. iam_validator/sdk/policy_utils.py +425 -0
  46. iam_validator/sdk/shortcuts.py +283 -0
  47. iam_validator/utils/__init__.py +31 -0
  48. iam_validator/utils/cache.py +105 -0
  49. iam_validator/utils/regex.py +206 -0
  50. iam_policy_validator-1.4.0.dist-info/RECORD +0 -56
  51. iam_validator/checks/action_resource_constraint.py +0 -151
  52. iam_validator/checks/security_best_practices.py +0 -536
  53. iam_validator/core/aws_global_conditions.py +0 -137
  54. iam_validator/core/defaults.py +0 -393
  55. {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/WHEEL +0 -0
  56. {iam_policy_validator-1.4.0.dist-info → iam_policy_validator-1.6.0.dist-info}/entry_points.txt +0 -0
  57. {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.4.0
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 + 15+ security checks
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
- - **Custom Security Checks** - 15+ specialized checks for best practices
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
- security_best_practices_check:
451
+ wildcard_action:
452
452
  enabled: true
453
- wildcard_action_check:
454
- enabled: true
455
- severity: high
453
+ severity: high
456
454
 
457
- action_condition_enforcement_check:
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 [default-config.yaml](default-config.yaml) for a complete configuration example.
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 | Description | Required | Default |
482
- | ------------------ | ---------------------------------------------------- | -------- | ------- |
483
- | `post-comment` | Post validation summary as PR conversation comment | No | `true` |
484
- | `create-review` | Create line-specific review comments on PR files | No | `true` |
485
- | `github-summary` | Write summary to GitHub Actions job summary (Actions tab) | No | `false` |
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 | Required | Default |
495
- | ------------------------ | --------------------------------------------------------------------------- | -------- | ----------------- |
496
- | `use-access-analyzer` | Use AWS IAM Access Analyzer for validation | No | `false` |
497
- | `access-analyzer-region` | AWS region for Access Analyzer | No | `us-east-1` |
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) | No | `false` |
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 8 ready-to-use workflow examples.
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
- principal_validation_check:
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-policy-checks.md](docs/custom-policy-checks.md) for complete documentation.
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
- ### 1. Action Validation
788
-
789
- Verifies that IAM actions exist in AWS services:
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", // ✅ Valid
795
- "Resource": "*"
821
+ "Action": "s3:GetObject",
822
+ "Resource": "arn:aws:s3:::my-bucket/*"
796
823
  }
797
- ```
798
824
 
799
- ```json
825
+ // ❌ FAIL: Invalid action name
800
826
  {
801
827
  "Effect": "Allow",
802
- "Action": "s3:InvalidAction", // Invalid - action doesn't exist
828
+ "Action": "s3:InvalidAction", // ERROR: Action doesn't exist
803
829
  "Resource": "*"
804
830
  }
805
831
  ```
806
832
 
807
- ### 2. Condition Key Validation
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
- Checks that condition keys are valid for the specified actions:
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": "s3:GetObject",
855
+ "Action": "iam:PassRole",
815
856
  "Resource": "*",
816
857
  "Condition": {
817
858
  "StringEquals": {
818
- "aws:RequestedRegion": "us-east-1" // ✅ Valid global condition key
859
+ "iam:PassedToService": ["lambda.amazonaws.com"]
819
860
  }
820
861
  }
821
862
  }
822
- ```
823
-
824
- ### 3. Resource ARN Validation
825
863
 
826
- Ensures ARNs follow proper AWS format:
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": "s3:GetObject",
840
- "Resource": "not-a-valid-arn" // ❌ Invalid ARN format
867
+ "Action": "iam:PassRole", // HIGH: Missing iam:PassedToService condition
868
+ "Resource": "*"
841
869
  }
842
870
  ```
843
871
 
844
- ### 4. Security Best Practices
872
+ **📚 For complete documentation of all 18 checks with detailed examples, see [Check Reference Guide](docs/check-reference.md)**
845
873
 
846
- Identifies potential security risks:
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
- **[📖 Complete Documentation →](DOCS.md)**
962
-
963
- The comprehensive [DOCS.md](DOCS.md) file contains everything you need:
964
- - Installation & Quick Start
965
- - GitHub Actions Integration
966
- - CLI Reference & Examples
967
- - Custom Policy Checks (CheckAccessNotGranted, CheckNoNewAccess, CheckNoPublicAccess)
968
- - Configuration Guide
969
- - Creating Custom Validation Rules
970
- - Performance Optimization
971
- - Troubleshooting
972
-
973
- **Additional Resources:**
974
- - **[Examples Directory](examples/)** - Real-world examples:
975
- - [GitHub Actions Workflows](examples/github-actions/)
976
- - [Custom Checks](examples/custom_checks/)
977
- - [Configuration Files](examples/configs/)
978
- - [Test IAM Policies](examples/iam-test-policies/)
979
- - **[AWS Services Backup Guide](docs/aws-services-backup.md)** - Offline validation
980
- - **[Contributing Guide](CONTRIBUTING.md)** - Contribution guidelines
981
- - **[Publishing Guide](docs/development/PUBLISHING.md)** - Release process
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,,
@@ -3,5 +3,5 @@
3
3
  This file is the single source of truth for the package version.
4
4
  """
5
5
 
6
- __version__ = "1.4.0"
6
+ __version__ = "1.6.0"
7
7
  __version_info__ = tuple(int(part) for part in __version__.split("."))
@@ -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.action_resource_constraint import ActionResourceConstraintCheck
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.security_best_practices import SecurityBestPracticesCheck
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
- "ActionResourceConstraintCheck",
28
+ "ActionResourceMatchingCheck",
20
29
  "ActionValidationCheck",
21
30
  "ConditionKeyValidationCheck",
31
+ "ConditionTypeMismatchCheck",
32
+ "FullWildcardCheck",
33
+ "MFAConditionCheck",
22
34
  "PolicySizeCheck",
23
35
  "PrincipalValidationCheck",
24
36
  "ResourceValidationCheck",
25
- "SecurityBestPracticesCheck",
37
+ "SensitiveActionCheck",
38
+ "ServiceWildcardCheck",
39
+ "SetOperatorValidationCheck",
26
40
  "SidUniquenessCheck",
41
+ "WildcardActionCheck",
42
+ "WildcardResourceCheck",
27
43
  ]