iam-policy-validator 1.14.7__tar.gz → 1.15.0__tar.gz

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 (390) hide show
  1. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/ci.yml +4 -4
  2. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/codeql.yml +3 -3
  3. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/docs.yml +1 -1
  4. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/pre-release.yml +1 -1
  5. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/release.yml +1 -1
  6. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/scorecard.yml +1 -1
  7. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.gitignore +3 -0
  8. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/CHANGELOG.md +13 -0
  9. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/Makefile +19 -1
  10. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/PKG-INFO +16 -11
  11. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/README.md +10 -9
  12. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/SECURITY.md +3 -48
  13. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/action.yaml +3 -3
  14. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/api-reference/sdk.md +77 -37
  15. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/contributing/testing.md +5 -5
  16. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/architecture.md +6 -6
  17. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/custom-checks/examples.md +6 -6
  18. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/sdk/policy-utilities.md +14 -0
  19. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/getting-started/first-validation.md +8 -8
  20. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/getting-started/quickstart.md +5 -5
  21. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/index.md +2 -2
  22. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/integrations/github-actions.md +9 -9
  23. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/integrations/index.md +9 -1
  24. iam_policy_validator-1.15.0/docs/integrations/mcp-server.md +2033 -0
  25. iam_policy_validator-1.15.0/docs/stylesheets/extra.css +283 -0
  26. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/checks/advanced-checks.md +10 -10
  27. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/checks/aws-validation.md +8 -8
  28. iam_policy_validator-1.15.0/docs/user-guide/checks/index.md +110 -0
  29. iam_policy_validator-1.15.0/docs/user-guide/checks/security-checks.md +380 -0
  30. iam_policy_validator-1.15.0/docs/user-guide/cli-reference.md +361 -0
  31. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/configuration.md +32 -4
  32. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/output-formats.md +9 -9
  33. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/full-reference-config.yaml +41 -1
  34. iam_policy_validator-1.15.0/examples/mcp-llm-instructions/README.md +145 -0
  35. iam_policy_validator-1.15.0/examples/mcp-llm-instructions/SYSTEM_PROMPT.md +382 -0
  36. iam_policy_validator-1.15.0/examples/mcp-llm-instructions/example_conversation.md +252 -0
  37. iam_policy_validator-1.15.0/examples/mcp-llm-instructions/organization_config.yaml +165 -0
  38. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/__version__.py +1 -1
  39. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/__init__.py +2 -0
  40. iam_policy_validator-1.15.0/iam_validator/checks/action_validation.py +131 -0
  41. iam_policy_validator-1.15.0/iam_validator/checks/not_action_not_resource.py +163 -0
  42. iam_policy_validator-1.15.0/iam_validator/checks/resource_validation.py +186 -0
  43. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/wildcard_resource.py +136 -6
  44. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/__init__.py +3 -0
  45. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/cache.py +66 -24
  46. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/completion.py +94 -15
  47. iam_policy_validator-1.15.0/iam_validator/commands/mcp.py +210 -0
  48. iam_policy_validator-1.15.0/iam_validator/commands/query.py +909 -0
  49. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/__init__.py +5 -1
  50. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/cache.py +20 -0
  51. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/fetcher.py +180 -11
  52. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/storage.py +14 -6
  53. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/validators.py +32 -41
  54. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/check_registry.py +100 -35
  55. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/aws_global_conditions.py +13 -0
  56. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/check_documentation.py +104 -51
  57. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/config_loader.py +39 -3
  58. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/defaults.py +6 -0
  59. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/constants.py +11 -4
  60. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/models.py +39 -14
  61. iam_policy_validator-1.15.0/iam_validator/mcp/__init__.py +162 -0
  62. iam_policy_validator-1.15.0/iam_validator/mcp/models.py +118 -0
  63. iam_policy_validator-1.15.0/iam_validator/mcp/server.py +2928 -0
  64. iam_policy_validator-1.15.0/iam_validator/mcp/session_config.py +319 -0
  65. iam_policy_validator-1.15.0/iam_validator/mcp/templates/__init__.py +79 -0
  66. iam_policy_validator-1.15.0/iam_validator/mcp/templates/builtin.py +856 -0
  67. iam_policy_validator-1.15.0/iam_validator/mcp/tools/__init__.py +72 -0
  68. iam_policy_validator-1.15.0/iam_validator/mcp/tools/generation.py +888 -0
  69. iam_policy_validator-1.15.0/iam_validator/mcp/tools/org_config_tools.py +263 -0
  70. iam_policy_validator-1.15.0/iam_validator/mcp/tools/query.py +395 -0
  71. iam_policy_validator-1.15.0/iam_validator/mcp/tools/validation.py +376 -0
  72. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/__init__.py +2 -0
  73. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/policy_utils.py +31 -5
  74. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/mkdocs.yml +8 -2
  75. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/pyproject.toml +8 -1
  76. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_action_validation_check.py +103 -6
  77. iam_policy_validator-1.15.0/tests/checks/test_condition_key_validation_check.py +237 -0
  78. iam_policy_validator-1.15.0/tests/checks/test_condition_type_mismatch.py +125 -0
  79. iam_policy_validator-1.15.0/tests/checks/test_full_wildcard_check.py +73 -0
  80. iam_policy_validator-1.15.0/tests/checks/test_mfa_condition_check.py +96 -0
  81. iam_policy_validator-1.15.0/tests/checks/test_not_action_not_resource.py +108 -0
  82. iam_policy_validator-1.15.0/tests/checks/test_policy_size_check.py +98 -0
  83. iam_policy_validator-1.15.0/tests/checks/test_principal_validation_check.py +252 -0
  84. iam_policy_validator-1.15.0/tests/checks/test_resource_validation_check.py +151 -0
  85. iam_policy_validator-1.15.0/tests/checks/test_service_wildcard_check.py +84 -0
  86. iam_policy_validator-1.15.0/tests/checks/test_sid_uniqueness_check.py +80 -0
  87. iam_policy_validator-1.15.0/tests/checks/test_wildcard_action_check.py +62 -0
  88. iam_policy_validator-1.15.0/tests/checks/test_wildcard_resource_check.py +292 -0
  89. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/commands/test_query_command.py +159 -0
  90. iam_policy_validator-1.15.0/tests/core/test_action_resource_matching.py +167 -0
  91. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_check_registry.py +173 -0
  92. iam_policy_validator-1.15.0/tests/core/test_models.py +276 -0
  93. iam_policy_validator-1.15.0/tests/mcp/__init__.py +8 -0
  94. iam_policy_validator-1.15.0/tests/mcp/conftest.py +326 -0
  95. iam_policy_validator-1.15.0/tests/mcp/test_custom_instructions.py +218 -0
  96. iam_policy_validator-1.15.0/tests/mcp/test_generation_tools.py +441 -0
  97. iam_policy_validator-1.15.0/tests/mcp/test_org_config.py +385 -0
  98. iam_policy_validator-1.15.0/tests/mcp/test_query_tools.py +221 -0
  99. iam_policy_validator-1.15.0/tests/mcp/test_server_integration.py +128 -0
  100. iam_policy_validator-1.15.0/tests/mcp/test_templates.py +495 -0
  101. iam_policy_validator-1.15.0/tests/mcp/test_validation_tools.py +331 -0
  102. iam_policy_validator-1.15.0/uv.lock +2762 -0
  103. iam_policy_validator-1.14.7/docs/user-guide/checks/index.md +0 -109
  104. iam_policy_validator-1.14.7/docs/user-guide/checks/security-checks.md +0 -233
  105. iam_policy_validator-1.14.7/docs/user-guide/cli-reference.md +0 -175
  106. iam_policy_validator-1.14.7/iam_validator/checks/action_validation.py +0 -67
  107. iam_policy_validator-1.14.7/iam_validator/checks/resource_validation.py +0 -135
  108. iam_policy_validator-1.14.7/iam_validator/commands/query.py +0 -485
  109. iam_policy_validator-1.14.7/scripts/download_aws_services.py +0 -215
  110. iam_policy_validator-1.14.7/scripts/sync_defaults_from_yaml.py +0 -204
  111. iam_policy_validator-1.14.7/tests/checks/test_condition_key_validation_check.py +0 -646
  112. iam_policy_validator-1.14.7/tests/checks/test_condition_type_mismatch.py +0 -370
  113. iam_policy_validator-1.14.7/tests/checks/test_full_wildcard_check.py +0 -254
  114. iam_policy_validator-1.14.7/tests/checks/test_mfa_condition_check.py +0 -240
  115. iam_policy_validator-1.14.7/tests/checks/test_policy_size_check.py +0 -370
  116. iam_policy_validator-1.14.7/tests/checks/test_principal_validation_check.py +0 -958
  117. iam_policy_validator-1.14.7/tests/checks/test_resource_validation_check.py +0 -322
  118. iam_policy_validator-1.14.7/tests/checks/test_service_wildcard_check.py +0 -332
  119. iam_policy_validator-1.14.7/tests/checks/test_sid_uniqueness_check.py +0 -281
  120. iam_policy_validator-1.14.7/tests/checks/test_wildcard_action_check.py +0 -297
  121. iam_policy_validator-1.14.7/tests/checks/test_wildcard_resource_check.py +0 -759
  122. iam_policy_validator-1.14.7/tests/core/test_action_resource_matching.py +0 -564
  123. iam_policy_validator-1.14.7/tests/core/test_models.py +0 -541
  124. iam_policy_validator-1.14.7/uv.lock +0 -1519
  125. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/dependabot.yml +0 -0
  126. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/.github/workflows/cleanup-prereleases.yml +0 -0
  127. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/CONTRIBUTING.md +0 -0
  128. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/LICENSE +0 -0
  129. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/api-reference/checks.md +0 -0
  130. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/api-reference/exceptions.md +0 -0
  131. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/api-reference/index.md +0 -0
  132. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/api-reference/models.md +0 -0
  133. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/changelog.md +0 -0
  134. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/contributing/development-setup.md +0 -0
  135. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/contributing/index.md +0 -0
  136. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/contributing/releasing.md +0 -0
  137. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/custom-checks/best-practices.md +0 -0
  138. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/custom-checks/index.md +0 -0
  139. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/custom-checks/tutorial.md +0 -0
  140. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/index.md +0 -0
  141. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/sdk/advanced.md +0 -0
  142. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/sdk/index.md +0 -0
  143. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/sdk/quickstart.md +0 -0
  144. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/developer-guide/sdk/validation.md +0 -0
  145. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/getting-started/index.md +0 -0
  146. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/getting-started/installation.md +0 -0
  147. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/includes/abbreviations.md +0 -0
  148. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/integrations/gitlab-ci.md +0 -0
  149. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/integrations/pre-commit.md +0 -0
  150. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/index.md +0 -0
  151. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/docs/user-guide/troubleshooting.md +0 -0
  152. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/README.md +0 -0
  153. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/access-analyzer/example1.json +0 -0
  154. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/access-analyzer/example2.json +0 -0
  155. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/aws-service-definitions/iam.json +0 -0
  156. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/aws-service-definitions/s3.json +0 -0
  157. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/github-labels-config.yaml +0 -0
  158. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/minimal-validation-config.yaml +0 -0
  159. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/offline-validation.yaml +0 -0
  160. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
  161. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/configs/strict-security.yaml +0 -0
  162. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/custom_checks/cross_account_external_id_check.py +0 -0
  163. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/custom_checks/domain_restriction_check.py +0 -0
  164. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/access-analyzer-only.yaml +0 -0
  165. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/basic-validation.yaml +0 -0
  166. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/custom-policy-checks.yaml +0 -0
  167. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/multi-region-validation.yaml +0 -0
  168. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/resource-policy-validation.yaml +0 -0
  169. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/sarif-code-scanning.yaml +0 -0
  170. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/sequential-validation.yaml +0 -0
  171. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/two-step-validation.yaml +0 -0
  172. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/github-actions/validate-changed-files.yaml +0 -0
  173. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
  174. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
  175. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
  176. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
  177. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
  178. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
  179. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
  180. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
  181. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
  182. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
  183. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
  184. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
  185. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
  186. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
  187. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
  188. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
  189. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
  190. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
  191. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
  192. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
  193. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
  194. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
  195. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
  196. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
  197. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
  198. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
  199. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
  200. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
  201. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
  202. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
  203. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
  204. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
  205. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
  206. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
  207. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
  208. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
  209. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
  210. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
  211. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
  212. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
  213. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
  214. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
  215. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
  216. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
  217. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
  218. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
  219. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
  220. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
  221. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
  222. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
  223. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
  224. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
  225. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
  226. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
  227. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
  228. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
  229. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
  230. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
  231. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
  232. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
  233. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
  234. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
  235. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
  236. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
  237. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
  238. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
  239. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
  240. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
  241. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
  242. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
  243. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
  244. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
  245. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
  246. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
  247. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
  248. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
  249. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
  250. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
  251. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
  252. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
  253. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
  254. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
  255. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
  256. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
  257. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
  258. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
  259. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
  260. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
  261. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
  262. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
  263. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
  264. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
  265. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/quick-start/lambda-policy.json +0 -0
  266. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/quick-start/s3-policy.json +0 -0
  267. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/quick-start/user-policy.json +0 -0
  268. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
  269. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/trust-policies/cross-account-trust-policy.json +0 -0
  270. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
  271. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
  272. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
  273. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/__init__.py +0 -0
  274. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/__main__.py +0 -0
  275. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/action_condition_enforcement.py +0 -0
  276. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/action_resource_matching.py +0 -0
  277. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/condition_key_validation.py +0 -0
  278. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/condition_type_mismatch.py +0 -0
  279. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/full_wildcard.py +0 -0
  280. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/mfa_condition_check.py +0 -0
  281. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/policy_size.py +0 -0
  282. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/policy_structure.py +0 -0
  283. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/policy_type_validation.py +0 -0
  284. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/principal_validation.py +0 -0
  285. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/sensitive_action.py +0 -0
  286. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/service_wildcard.py +0 -0
  287. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/set_operator_validation.py +0 -0
  288. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/sid_uniqueness.py +0 -0
  289. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/trust_policy_validation.py +0 -0
  290. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/utils/__init__.py +0 -0
  291. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/utils/action_parser.py +0 -0
  292. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/utils/policy_level_checks.py +0 -0
  293. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
  294. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
  295. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/checks/wildcard_action.py +0 -0
  296. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/analyze.py +0 -0
  297. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/base.py +0 -0
  298. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/download_services.py +0 -0
  299. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/post_to_pr.py +0 -0
  300. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/commands/validate.py +0 -0
  301. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/__init__.py +0 -0
  302. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/access_analyzer.py +0 -0
  303. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/access_analyzer_report.py +0 -0
  304. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_fetcher.py +0 -0
  305. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/client.py +0 -0
  306. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/parsers.py +0 -0
  307. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/aws_service/patterns.py +0 -0
  308. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/cli.py +0 -0
  309. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/codeowners.py +0 -0
  310. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/condition_validators.py +0 -0
  311. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/__init__.py +0 -0
  312. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/aws_api.py +0 -0
  313. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/category_suggestions.py +0 -0
  314. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/condition_requirements.py +0 -0
  315. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/principal_requirements.py +0 -0
  316. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/sensitive_actions.py +0 -0
  317. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/service_principals.py +0 -0
  318. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/config/wildcards.py +0 -0
  319. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/diff_parser.py +0 -0
  320. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/finding_fingerprint.py +0 -0
  321. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/__init__.py +0 -0
  322. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/base.py +0 -0
  323. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/console.py +0 -0
  324. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/csv.py +0 -0
  325. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/enhanced.py +0 -0
  326. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/html.py +0 -0
  327. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/json.py +0 -0
  328. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/markdown.py +0 -0
  329. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/formatters/sarif.py +0 -0
  330. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/ignore_patterns.py +0 -0
  331. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/ignore_processor.py +0 -0
  332. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/ignored_findings.py +0 -0
  333. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/label_manager.py +0 -0
  334. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/policy_checks.py +0 -0
  335. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/policy_loader.py +0 -0
  336. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/pr_commenter.py +0 -0
  337. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/core/report.py +0 -0
  338. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/integrations/__init__.py +0 -0
  339. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/integrations/github_integration.py +0 -0
  340. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/integrations/ms_teams.py +0 -0
  341. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/arn_matching.py +0 -0
  342. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/context.py +0 -0
  343. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/exceptions.py +0 -0
  344. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/helpers.py +0 -0
  345. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/query_utils.py +0 -0
  346. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/sdk/shortcuts.py +0 -0
  347. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/utils/__init__.py +0 -0
  348. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/utils/cache.py +0 -0
  349. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/utils/regex.py +0 -0
  350. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/iam_validator/utils/terminal.py +0 -0
  351. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/README.md +0 -0
  352. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/__init__.py +0 -0
  353. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/__init__.py +0 -0
  354. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_aws_global_conditions.py +0 -0
  355. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_custom_policy_checks.py +0 -0
  356. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_sensitive_action_filtering.py +0 -0
  357. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_sensitive_action_suggestions.py +0 -0
  358. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
  359. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/checks/test_service_principal_wildcard.py +0 -0
  360. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/commands/__init__.py +0 -0
  361. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/commands/test_completion_command.py +0 -0
  362. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/config/__init__.py +0 -0
  363. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/config/test_config_loader.py +0 -0
  364. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/__init__.py +0 -0
  365. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_action_condition_enforcement.py +0 -0
  366. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
  367. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_aws_api_config.py +0 -0
  368. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_aws_fetcher_wildcards.py +0 -0
  369. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_check_id_in_comments.py +0 -0
  370. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_check_id_injection.py +0 -0
  371. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_codeowners.py +0 -0
  372. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_comment_truncation.py +0 -0
  373. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_diff_parser.py +0 -0
  374. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_finding_fingerprint.py +0 -0
  375. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_ignore_patterns.py +0 -0
  376. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_ignored_findings.py +0 -0
  377. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_multipart_comments.py +0 -0
  378. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_policy_loader.py +0 -0
  379. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_policy_type_validation.py +0 -0
  380. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_pr_commenter_diff_filtering.py +0 -0
  381. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_regex_utils.py +0 -0
  382. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_set_operator_validation.py +0 -0
  383. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_trust_policy_detection.py +0 -0
  384. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_trust_policy_multiple_statements.py +0 -0
  385. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
  386. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/core/test_trust_policy_validation.py +0 -0
  387. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/integrations/__init__.py +0 -0
  388. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/integrations/test_comment_deduplication.py +0 -0
  389. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/integrations/test_github_pagination.py +0 -0
  390. {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.0}/tests/integrations/test_label_manager.py +0 -0
@@ -26,7 +26,7 @@ jobs:
26
26
  python-version: "${{ env.DEFAULT_PYTHON_VERSION }}"
27
27
 
28
28
  - name: Install uv
29
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
29
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
30
30
  with:
31
31
  enable-cache: true
32
32
 
@@ -56,7 +56,7 @@ jobs:
56
56
  python-version: ${{ matrix.python-version }}
57
57
 
58
58
  - name: Install uv
59
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
59
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
60
60
  with:
61
61
  enable-cache: true
62
62
 
@@ -80,7 +80,7 @@ jobs:
80
80
  python-version: "${{ env.DEFAULT_PYTHON_VERSION }}"
81
81
 
82
82
  - name: Install uv
83
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
83
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
84
84
  with:
85
85
  enable-cache: true
86
86
 
@@ -104,7 +104,7 @@ jobs:
104
104
  python-version: "${{ env.DEFAULT_PYTHON_VERSION }}"
105
105
 
106
106
  - name: Install uv
107
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
107
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
108
108
  with:
109
109
  enable-cache: true
110
110
 
@@ -29,15 +29,15 @@ jobs:
29
29
  uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
30
30
 
31
31
  - name: Initialize CodeQL
32
- uses: github/codeql-action/init@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8
32
+ uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
33
33
  with:
34
34
  languages: ${{ matrix.language }}
35
35
  queries: security-extended,security-and-quality
36
36
 
37
37
  - name: Autobuild
38
- uses: github/codeql-action/autobuild@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8
38
+ uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
39
39
 
40
40
  - name: Perform CodeQL Analysis
41
- uses: github/codeql-action/analyze@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8
41
+ uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
42
42
  with:
43
43
  category: "/language:${{matrix.language}}"
@@ -63,7 +63,7 @@ jobs:
63
63
  # actions/upload-pages-artifact v3.0.1
64
64
  - name: Upload artifact
65
65
  if: github.event_name == 'push' && github.ref == 'refs/heads/main'
66
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
66
+ uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
67
67
  with:
68
68
  path: ./site
69
69
 
@@ -80,7 +80,7 @@ jobs:
80
80
  python-version: ${{ inputs.python_version }}
81
81
 
82
82
  - name: Install uv
83
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
83
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
84
84
  with:
85
85
  enable-cache: true
86
86
 
@@ -31,7 +31,7 @@ jobs:
31
31
  python-version: ${{ env.PYTHON_VERSION }}
32
32
 
33
33
  - name: Install uv
34
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
34
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
35
35
  with:
36
36
  enable-cache: true
37
37
 
@@ -57,6 +57,6 @@ jobs:
57
57
  # Upload the results to GitHub's code scanning dashboard (optional).
58
58
  # Commenting out will disable upload of results to your repo's Code Scanning dashboard
59
59
  - name: "Upload to code-scanning"
60
- uses: github/codeql-action/upload-sarif@1b168cd39490f61582a9beae412bb7057a6b2c4e # v4.31.8
60
+ uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
61
61
  with:
62
62
  sarif_file: results.sarif
@@ -84,3 +84,6 @@ coverage.xml
84
84
 
85
85
  # AWS service definitions (download with: iam-validator download-services)
86
86
  aws_services/
87
+
88
+ .mcp.json
89
+ .serena
@@ -13,6 +13,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
 
14
14
  ---
15
15
 
16
+ ## [1.14.7] - 2025-12-17
17
+
18
+ ### Added
19
+ - MkDocs documentation site deployed to GitHub Pages
20
+ - Comprehensive SDK API reference documentation
21
+
22
+ ### Fixed
23
+ - Correct repository name in all documentation links (iam-policy-auditor → iam-policy-validator)
24
+ - Fix SDK docstring formatting for proper mkdocstrings rendering
25
+ - Update PyPI metadata with correct documentation and changelog URLs
26
+
27
+ ---
28
+
16
29
  ## [1.14.6] - 2025-12-15
17
30
 
18
31
  ### Fixed
@@ -1,4 +1,4 @@
1
- .PHONY: help install dev clean test lint format ruff type-check build publish publish-test version sync-defaults
1
+ .PHONY: help install dev clean test lint format ruff type-check build publish publish-test version sync-defaults docs docs-serve mcp-inspector
2
2
 
3
3
  # Default target
4
4
  help:
@@ -27,6 +27,13 @@ help:
27
27
  @echo "Examples:"
28
28
  @echo " make validate-example Run validator on example policies"
29
29
  @echo ""
30
+ @echo "Documentation:"
31
+ @echo " make docs Build documentation"
32
+ @echo " make docs-serve Serve documentation locally (http://localhost:8000)"
33
+ @echo ""
34
+ @echo "MCP Server:"
35
+ @echo " make mcp-inspector Start MCP Inspector for debugging"
36
+ @echo ""
30
37
  @echo "AWS Services Backup:"
31
38
  @echo " make download-aws-services Download all AWS service definitions"
32
39
 
@@ -121,3 +128,14 @@ download-aws-services:
121
128
  # CI/CD simulation
122
129
  ci: check build
123
130
  @echo "✓ CI checks complete!"
131
+
132
+ # Documentation
133
+ docs:
134
+ @uv run --extra docs mkdocs build
135
+
136
+ docs-serve:
137
+ @uv run --extra docs mkdocs serve -w docs/
138
+
139
+ # MCP Server debugging
140
+ mcp-inspector:
141
+ @npx @modelcontextprotocol/inspector uv run --directory $(CURDIR) --extra mcp iam-validator-mcp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iam-policy-validator
3
- Version: 1.14.7
3
+ Version: 1.15.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://boogy.github.io/iam-policy-validator
@@ -11,7 +11,7 @@ Author-email: boogy <0xboogy@gmail.com>
11
11
  License: MIT
12
12
  License-File: LICENSE
13
13
  Keywords: aws,github-action,iam,policy,security,validation
14
- Classifier: Development Status :: 4 - Beta
14
+ Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Intended Audience :: Developers
16
16
  Classifier: Intended Audience :: System Administrators
17
17
  Classifier: License :: OSI Approved :: MIT License
@@ -19,6 +19,8 @@ Classifier: Programming Language :: Python :: 3
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
22
24
  Classifier: Topic :: Security
23
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
26
  Classifier: Topic :: System :: Systems Administration
@@ -44,6 +46,8 @@ Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == 'docs'
44
46
  Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
45
47
  Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
46
48
  Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
49
+ Provides-Extra: mcp
50
+ Requires-Dist: fastmcp>=2.14.1; extra == 'mcp'
47
51
  Description-Content-Type: text/markdown
48
52
 
49
53
  # IAM Policy Validator
@@ -55,6 +59,8 @@ Description-Content-Type: text/markdown
55
59
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
56
60
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/boogy/iam-policy-validator/badge)](https://scorecard.dev/viewer/?uri=github.com/boogy/iam-policy-validator)
57
61
 
62
+ **[📖 Full Documentation](https://boogy.github.io/iam-policy-validator/)**
63
+
58
64
  ---
59
65
 
60
66
  ## Why This Tool Exists
@@ -434,15 +440,14 @@ Validates against official AWS IAM requirements:
434
440
 
435
441
  Identifies overly permissive configurations:
436
442
 
437
- | Check | What It Catches |
438
- | ------------------------------------- | ------------------------------------------------------ |
439
- | **Wildcard Action** | `Action: "*"` grants all AWS permissions |
440
- | **Wildcard Resource** | `Resource: "*"` applies to all resources |
441
- | **Full Wildcard** | Both `Action: "*"` AND `Resource: "*"` (admin access) |
442
- | **Service Wildcards** | `s3:*`, `iam:*`, `ec2:*` (overly broad) |
443
- | **Sensitive Actions (Policy-Wide)** | **Cross-statement** privilege escalation patterns |
444
- | **Sensitive Actions (Per-Statement)** | Dangerous actions in single statement |
445
- | **Condition Enforcement** | Organization-specific requirements (your custom rules) |
443
+ | Check | What It Catches |
444
+ | ------------------------- | ------------------------------------------------------ |
445
+ | **Wildcard Action** | `Action: "*"` grants all AWS permissions |
446
+ | **Wildcard Resource** | `Resource: "*"` applies to all resources |
447
+ | **Full Wildcard** | Both `Action: "*"` AND `Resource: "*"` (admin access) |
448
+ | **Service Wildcards** | `s3:*`, `iam:*`, `ec2:*` (overly broad) |
449
+ | **Sensitive Actions** | 490+ privilege escalation patterns and dangerous actions |
450
+ | **Condition Enforcement** | Organization-specific condition requirements |
446
451
 
447
452
  **Note on Sensitive Actions:** This check has two modes:
448
453
 
@@ -7,6 +7,8 @@
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
8
8
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/boogy/iam-policy-validator/badge)](https://scorecard.dev/viewer/?uri=github.com/boogy/iam-policy-validator)
9
9
 
10
+ **[📖 Full Documentation](https://boogy.github.io/iam-policy-validator/)**
11
+
10
12
  ---
11
13
 
12
14
  ## Why This Tool Exists
@@ -386,15 +388,14 @@ Validates against official AWS IAM requirements:
386
388
 
387
389
  Identifies overly permissive configurations:
388
390
 
389
- | Check | What It Catches |
390
- | ------------------------------------- | ------------------------------------------------------ |
391
- | **Wildcard Action** | `Action: "*"` grants all AWS permissions |
392
- | **Wildcard Resource** | `Resource: "*"` applies to all resources |
393
- | **Full Wildcard** | Both `Action: "*"` AND `Resource: "*"` (admin access) |
394
- | **Service Wildcards** | `s3:*`, `iam:*`, `ec2:*` (overly broad) |
395
- | **Sensitive Actions (Policy-Wide)** | **Cross-statement** privilege escalation patterns |
396
- | **Sensitive Actions (Per-Statement)** | Dangerous actions in single statement |
397
- | **Condition Enforcement** | Organization-specific requirements (your custom rules) |
391
+ | Check | What It Catches |
392
+ | ------------------------- | ------------------------------------------------------ |
393
+ | **Wildcard Action** | `Action: "*"` grants all AWS permissions |
394
+ | **Wildcard Resource** | `Resource: "*"` applies to all resources |
395
+ | **Full Wildcard** | Both `Action: "*"` AND `Resource: "*"` (admin access) |
396
+ | **Service Wildcards** | `s3:*`, `iam:*`, `ec2:*` (overly broad) |
397
+ | **Sensitive Actions** | 490+ privilege escalation patterns and dangerous actions |
398
+ | **Condition Enforcement** | Organization-specific condition requirements |
398
399
 
399
400
  **Note on Sensitive Actions:** This check has two modes:
400
401
 
@@ -182,7 +182,7 @@ When contributing to the project:
182
182
 
183
183
  The validator includes security features to help users:
184
184
 
185
- 1. **18 Built-in Security Checks**: Detect overly permissive policies, privilege escalation paths, and security anti-patterns
185
+ 1. **19 Built-in Security Checks**: Detect overly permissive policies, privilege escalation paths, and security anti-patterns
186
186
  2. **AWS Access Analyzer Integration**: Leverage AWS's official policy validation service
187
187
  3. **Privilege Escalation Detection**: Identify dangerous action combinations
188
188
  4. **Public Access Detection**: Check 29+ AWS resource types for public exposure
@@ -190,31 +190,6 @@ The validator includes security features to help users:
190
190
  6. **Policy Comparison**: Detect new permissions vs baseline to prevent scope creep
191
191
  7. **Wildcard Detection**: Flag overly permissive wildcards in actions and resources
192
192
 
193
- ## Vulnerability Disclosure Policy
194
-
195
- ### Scope
196
-
197
- Security vulnerabilities within scope:
198
-
199
- - **In Scope**:
200
- - Authentication and authorization bypass
201
- - Code injection vulnerabilities
202
- - Sensitive data exposure
203
- - Denial of service (DoS)
204
- - AWS credential leakage
205
- - GitHub token leakage
206
- - Path traversal vulnerabilities
207
- - Dependency vulnerabilities with active exploits
208
- - Logic errors in security checks that could miss vulnerabilities
209
-
210
- - **Out of Scope**:
211
- - Social engineering attacks
212
- - Physical attacks
213
- - Attacks requiring physical access to infrastructure
214
- - Issues in third-party dependencies without active exploits
215
- - Issues already reported and known
216
- - Self-XSS or CSP bypasses without security impact
217
-
218
193
  ### Safe Harbor
219
194
 
220
195
  We support safe harbor for security researchers who:
@@ -224,26 +199,6 @@ We support safe harbor for security researchers who:
224
199
  - Do not exploit vulnerabilities for malicious purposes
225
200
  - Follow responsible disclosure practices
226
201
 
227
- ## Security Audit History
228
-
229
- We welcome third-party security audits and will list notable audits here:
230
-
231
- - No formal audits completed yet (as of v1.7.0)
232
-
233
- ## Security-Related Configuration
234
-
235
- ### Logging Levels
236
-
237
- Be cautious with logging levels in production:
238
-
239
- ```bash
240
- # ⚠️ WARNING: Debug logging may expose sensitive policy content
241
- --log-level debug # Only use for troubleshooting
242
-
243
- # ✅ RECOMMENDED: Use warning or error in production
244
- --log-level warning
245
- ```
246
-
247
202
  ### GitHub Integration
248
203
 
249
204
  Configure minimal permissions for GitHub Actions:
@@ -286,5 +241,5 @@ _Thank you to the following researchers who have helped improve the security of
286
241
 
287
242
  ---
288
243
 
289
- **Last Updated**: 2025-11-10
290
- **Policy Version**: 1.0
244
+ **Last Updated**: 2026-01-19
245
+ **Policy Version**: 1.1
@@ -158,7 +158,7 @@ runs:
158
158
  python-version-file: "${{ github.action_path }}/.python-version"
159
159
 
160
160
  - name: Install uv
161
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
161
+ uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0
162
162
  with:
163
163
  enable-cache: true
164
164
  cache-suffix: ci # Prune cache in CI to reduce bloat
@@ -186,7 +186,7 @@ runs:
186
186
 
187
187
  - name: Restore AWS service definitions cache
188
188
  id: cache-aws-services
189
- uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
189
+ uses: actions/cache/restore@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
190
190
  with:
191
191
  path: ~/.cache/iam-validator/aws_services
192
192
  # Cache key refreshes weekly to get latest AWS service updates
@@ -514,7 +514,7 @@ runs:
514
514
  # Attempting to save with an existing key will silently do nothing
515
515
  # Use always() to ensure cache is saved even if validation fails
516
516
  if: always() && steps.cache-aws-services.outputs.cache-hit != 'true'
517
- uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
517
+ uses: actions/cache/save@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
518
518
  with:
519
519
  path: ~/.cache/iam-validator/aws_services
520
520
  key: aws-services-${{ runner.os }}-${{ steps.week.outputs.week }}
@@ -23,11 +23,11 @@ async def validate_file(
23
23
 
24
24
  **Parameters:**
25
25
 
26
- | Name | Type | Description |
27
- |------|------|-------------|
28
- | `file_path` | `str \| Path` | Path to the policy file (JSON or YAML) |
29
- | `config_path` | `str \| None` | Optional path to configuration file |
30
- | `config` | `ValidatorConfig \| None` | Optional config object (overrides config_path) |
26
+ | Name | Type | Description |
27
+ | ------------- | ------------------------- | ---------------------------------------------- |
28
+ | `file_path` | `str \| Path` | Path to the policy file (JSON or YAML) |
29
+ | `config_path` | `str \| None` | Optional path to configuration file |
30
+ | `config` | `ValidatorConfig \| None` | Optional config object (overrides config_path) |
31
31
 
32
32
  **Returns:** `PolicyValidationResult`
33
33
 
@@ -61,12 +61,12 @@ async def validate_directory(
61
61
 
62
62
  **Parameters:**
63
63
 
64
- | Name | Type | Description |
65
- |------|------|-------------|
66
- | `dir_path` | `str \| Path` | Path to directory containing policy files |
67
- | `config_path` | `str \| None` | Optional path to configuration file |
68
- | `config` | `ValidatorConfig \| None` | Optional config object |
69
- | `recursive` | `bool` | Search subdirectories (default: `True`) |
64
+ | Name | Type | Description |
65
+ | ------------- | ------------------------- | ----------------------------------------- |
66
+ | `dir_path` | `str \| Path` | Path to directory containing policy files |
67
+ | `config_path` | `str \| None` | Optional path to configuration file |
68
+ | `config` | `ValidatorConfig \| None` | Optional config object |
69
+ | `recursive` | `bool` | Search subdirectories (default: `True`) |
70
70
 
71
71
  **Returns:** `list[PolicyValidationResult]`
72
72
 
@@ -97,12 +97,12 @@ async def validate_json(
97
97
 
98
98
  **Parameters:**
99
99
 
100
- | Name | Type | Description |
101
- |------|------|-------------|
102
- | `policy_json` | `dict` | IAM policy as a Python dict |
103
- | `policy_name` | `str` | Name to identify this policy in results |
104
- | `config_path` | `str \| None` | Optional path to configuration file |
105
- | `config` | `ValidatorConfig \| None` | Optional config object |
100
+ | Name | Type | Description |
101
+ | ------------- | ------------------------- | --------------------------------------- |
102
+ | `policy_json` | `dict` | IAM policy as a Python dict |
103
+ | `policy_name` | `str` | Name to identify this policy in results |
104
+ | `config_path` | `str \| None` | Optional path to configuration file |
105
+ | `config` | `ValidatorConfig \| None` | Optional config object |
106
106
 
107
107
  **Returns:** `PolicyValidationResult`
108
108
 
@@ -139,11 +139,11 @@ async def quick_validate(
139
139
 
140
140
  **Parameters:**
141
141
 
142
- | Name | Type | Description |
143
- |------|------|-------------|
144
- | `policy` | `str \| Path \| dict` | File path, directory path, or policy dict |
145
- | `config_path` | `str \| None` | Optional path to configuration file |
146
- | `config` | `ValidatorConfig \| None` | Optional config object |
142
+ | Name | Type | Description |
143
+ | ------------- | ------------------------- | ----------------------------------------- |
144
+ | `policy` | `str \| Path \| dict` | File path, directory path, or policy dict |
145
+ | `config_path` | `str \| None` | Optional path to configuration file |
146
+ | `config` | `ValidatorConfig \| None` | Optional config object |
147
147
 
148
148
  **Returns:** `bool` — `True` if all policies are valid
149
149
 
@@ -183,12 +183,12 @@ async def get_issues(
183
183
 
184
184
  **Parameters:**
185
185
 
186
- | Name | Type | Description |
187
- |------|------|-------------|
188
- | `policy` | `str \| Path \| dict` | File path, directory path, or policy dict |
189
- | `min_severity` | `str` | Minimum severity: `critical`, `high`, `medium`, `low`, `info` |
190
- | `config_path` | `str \| None` | Optional path to configuration file |
191
- | `config` | `ValidatorConfig \| None` | Optional config object |
186
+ | Name | Type | Description |
187
+ | -------------- | ------------------------- | ------------------------------------------------------------- |
188
+ | `policy` | `str \| Path \| dict` | File path, directory path, or policy dict |
189
+ | `min_severity` | `str` | Minimum severity: `critical`, `high`, `medium`, `low`, `info` |
190
+ | `config_path` | `str \| None` | Optional path to configuration file |
191
+ | `config` | `ValidatorConfig \| None` | Optional config object |
192
192
 
193
193
  **Returns:** `list[ValidationIssue]`
194
194
 
@@ -263,11 +263,11 @@ async with validator() as v:
263
263
 
264
264
  The context object provides these methods:
265
265
 
266
- | Method | Description |
267
- |--------|-------------|
268
- | `validate_file(path)` | Validate a single policy file |
266
+ | Method | Description |
267
+ | -------------------------- | ------------------------------------ |
268
+ | `validate_file(path)` | Validate a single policy file |
269
269
  | `validate_directory(path)` | Validate all policies in a directory |
270
- | `generate_report(results)` | Print a formatted report |
270
+ | `generate_report(results)` | Print a formatted report |
271
271
 
272
272
  ---
273
273
 
@@ -334,6 +334,46 @@ print(f"Resources: {resources}")
334
334
 
335
335
  ---
336
336
 
337
+ ### extract_condition_keys_from_statement
338
+
339
+ Extract all condition keys from a single statement.
340
+
341
+ ```python
342
+ def extract_condition_keys_from_statement(statement: Statement) -> set[str]
343
+ ```
344
+
345
+ **Parameters:**
346
+
347
+ | Name | Type | Description |
348
+ | ----------- | ----------- | -------------------------------------------- |
349
+ | `statement` | `Statement` | The statement to extract condition keys from |
350
+
351
+ **Returns:** `set[str]` — Set of condition key names
352
+
353
+ **Example:**
354
+
355
+ ```python
356
+ from iam_validator.sdk import extract_condition_keys_from_statement
357
+ from iam_validator.core.models import Statement
358
+
359
+ statement = Statement(
360
+ Effect="Allow",
361
+ Action=["s3:GetObject"],
362
+ Resource=["*"],
363
+ Condition={
364
+ "StringEquals": {
365
+ "aws:ResourceAccount": "123456789012",
366
+ "aws:ResourceTag/Environment": "production"
367
+ }
368
+ }
369
+ )
370
+
371
+ keys = extract_condition_keys_from_statement(statement)
372
+ # {'aws:ResourceAccount', 'aws:ResourceTag/Environment'}
373
+ ```
374
+
375
+ ---
376
+
337
377
  ### get_policy_summary
338
378
 
339
379
  Get a summary of policy contents.
@@ -404,11 +444,11 @@ async def query_actions(
404
444
 
405
445
  **Parameters:**
406
446
 
407
- | Name | Type | Description |
408
- |------|------|-------------|
409
- | `fetcher` | `AWSServiceFetcher` | AWS service fetcher instance |
410
- | `service` | `str` | Service name (e.g., `s3`, `ec2`) |
411
- | `access_level` | `str \| None` | Filter: `read`, `write`, `list`, `tagging`, `permissions-management` |
447
+ | Name | Type | Description |
448
+ | -------------- | ------------------- | -------------------------------------------------------------------- |
449
+ | `fetcher` | `AWSServiceFetcher` | AWS service fetcher instance |
450
+ | `service` | `str` | Service name (e.g., `s3`, `ec2`) |
451
+ | `access_level` | `str \| None` | Filter: `read`, `write`, `list`, `tagging`, `permissions-management` |
412
452
 
413
453
  **Example:**
414
454
 
@@ -146,11 +146,11 @@ async def test_with_real_policy():
146
146
 
147
147
  ## Test Markers
148
148
 
149
- | Marker | Usage |
150
- |--------|-------|
151
- | `@pytest.mark.asyncio` | Async tests |
152
- | `@pytest.mark.slow` | Long-running tests |
153
- | `@pytest.mark.benchmark` | Performance tests |
149
+ | Marker | Usage |
150
+ | -------------------------- | ----------------------- |
151
+ | `@pytest.mark.asyncio` | Async tests |
152
+ | `@pytest.mark.slow` | Long-running tests |
153
+ | `@pytest.mark.benchmark` | Performance tests |
154
154
  | `@pytest.mark.integration` | External resource tests |
155
155
 
156
156
  ```python
@@ -20,7 +20,7 @@ Overview of IAM Policy Validator's architecture and design.
20
20
  │ (CheckRegistry → Parallel Execution) │
21
21
  ├───────────────────────┬─────────────────────────────────┤
22
22
  │ Built-in Checks │ Custom Checks │
23
- │ (18 checks) │ (User-defined) │
23
+ │ (19 checks) │ (User-defined) │
24
24
  ├───────────────────────┴─────────────────────────────────┤
25
25
  │ AWS Service Fetcher │
26
26
  │ (Service definitions, caching) │
@@ -182,8 +182,8 @@ config = ConfigLoader.load("./iam-validator.yaml")
182
182
 
183
183
  ### Cache Locations
184
184
 
185
- | Platform | Location |
186
- |----------|----------|
187
- | Linux | `~/.cache/iam-validator/` |
188
- | macOS | `~/Library/Caches/iam-validator/` |
189
- | Windows | `%LOCALAPPDATA%\iam-validator\Cache\` |
185
+ | Platform | Location |
186
+ | -------- | ------------------------------------- |
187
+ | Linux | `~/.cache/iam-validator/` |
188
+ | macOS | `~/Library/Caches/iam-validator/` |
189
+ | Windows | `%LOCALAPPDATA%\iam-validator\Cache\` |
@@ -194,9 +194,9 @@ checks:
194
194
 
195
195
  See the [examples/custom_checks/](https://github.com/boogy/iam-policy-validator/tree/main/examples/custom_checks) directory for additional examples:
196
196
 
197
- | Check | Description |
198
- |-------|-------------|
199
- | `domain_restriction_check.py` | Restrict S3 access to domains |
200
- | `tag_enforcement_check.py` | Enforce resource tagging |
201
- | `time_based_access_check.py` | Business hours restrictions |
202
- | `cross_account_external_id_check.py` | Confused deputy prevention |
197
+ | Check | Description |
198
+ | ------------------------------------ | ----------------------------- |
199
+ | `domain_restriction_check.py` | Restrict S3 access to domains |
200
+ | `tag_enforcement_check.py` | Enforce resource tagging |
201
+ | `time_based_access_check.py` | Business hours restrictions |
202
+ | `cross_account_external_id_check.py` | Confused deputy prevention |
@@ -60,6 +60,20 @@ keys = extract_condition_keys(policy)
60
60
  # ['aws:SourceAccount', 's3:prefix']
61
61
  ```
62
62
 
63
+ ### extract_condition_keys_from_statement
64
+
65
+ Get all condition keys from a single statement.
66
+
67
+ ```python
68
+ from iam_validator.sdk import extract_condition_keys_from_statement
69
+
70
+ # Extract keys from a specific statement
71
+ keys = extract_condition_keys_from_statement(statement)
72
+ # {'aws:ResourceAccount', 'aws:ResourceTag/Environment'}
73
+ ```
74
+
75
+ This is useful when you need to analyze conditions at the statement level rather than the entire policy.
76
+
63
77
  ## Analysis
64
78
 
65
79
  ### get_policy_summary
@@ -257,14 +257,14 @@ iam-validator validate --path user-policy.json --format json
257
257
 
258
258
  ## Understanding Severity Levels
259
259
 
260
- | Severity | Meaning | Action |
261
- |----------|---------|--------|
262
- | **Critical** | Severe security risk | Block deployment |
263
- | **High** | Security concern | Fix before merge |
264
- | **Medium** | Best practice violation | Address soon |
265
- | **Low** | Minor improvement | Optional fix |
266
- | **Error** | AWS will reject | Must fix |
267
- | **Warning** | Potential issue | Review |
260
+ | Severity | Meaning | Action |
261
+ | ------------ | ----------------------- | ---------------- |
262
+ | **Critical** | Severe security risk | Block deployment |
263
+ | **High** | Security concern | Fix before merge |
264
+ | **Medium** | Best practice violation | Address soon |
265
+ | **Low** | Minor improvement | Optional fix |
266
+ | **Error** | AWS will reject | Must fix |
267
+ | **Warning** | Potential issue | Review |
268
268
 
269
269
  ## What's Next?
270
270