iam-policy-validator 1.15.0__tar.gz → 1.15.2__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 (369) hide show
  1. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/CHANGELOG.md +165 -10
  2. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/PKG-INFO +57 -32
  3. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/README.md +56 -31
  4. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/SECURITY.md +4 -3
  5. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/index.md +1 -1
  6. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/security-checks.md +126 -22
  7. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/configuration.md +73 -3
  8. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/full-reference-config.yaml +140 -41
  9. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__version__.py +1 -1
  10. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/principal_validation.py +149 -10
  11. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/validators.py +37 -11
  12. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/condition_validators.py +175 -9
  13. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/aws_global_conditions.py +5 -9
  14. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/defaults.py +22 -8
  15. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_aws_global_conditions.py +32 -24
  16. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_condition_key_validation_check.py +63 -27
  17. iam_policy_validator-1.15.2/tests/checks/test_condition_type_mismatch.py +326 -0
  18. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_principal_validation_check.py +212 -6
  19. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/uv.lock +167 -156
  20. iam_policy_validator-1.15.0/tests/checks/test_condition_type_mismatch.py +0 -125
  21. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/dependabot.yml +0 -0
  22. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/ci.yml +0 -0
  23. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/cleanup-prereleases.yml +0 -0
  24. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/codeql.yml +0 -0
  25. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/docs.yml +0 -0
  26. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/pre-release.yml +0 -0
  27. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/release.yml +0 -0
  28. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/scorecard.yml +0 -0
  29. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.gitignore +0 -0
  30. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/CONTRIBUTING.md +0 -0
  31. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/LICENSE +0 -0
  32. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/Makefile +0 -0
  33. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/action.yaml +0 -0
  34. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/checks.md +0 -0
  35. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/exceptions.md +0 -0
  36. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/index.md +0 -0
  37. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/models.md +0 -0
  38. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/sdk.md +0 -0
  39. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/changelog.md +0 -0
  40. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/development-setup.md +0 -0
  41. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/index.md +0 -0
  42. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/releasing.md +0 -0
  43. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/testing.md +0 -0
  44. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/architecture.md +0 -0
  45. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/best-practices.md +0 -0
  46. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/examples.md +0 -0
  47. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/index.md +0 -0
  48. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/tutorial.md +0 -0
  49. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/index.md +0 -0
  50. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/advanced.md +0 -0
  51. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/index.md +0 -0
  52. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/policy-utilities.md +0 -0
  53. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/quickstart.md +0 -0
  54. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/validation.md +0 -0
  55. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/first-validation.md +0 -0
  56. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/index.md +0 -0
  57. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/installation.md +0 -0
  58. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/quickstart.md +0 -0
  59. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/includes/abbreviations.md +0 -0
  60. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/index.md +0 -0
  61. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/github-actions.md +0 -0
  62. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/gitlab-ci.md +0 -0
  63. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/index.md +0 -0
  64. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/mcp-server.md +0 -0
  65. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/pre-commit.md +0 -0
  66. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/stylesheets/extra.css +0 -0
  67. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/advanced-checks.md +0 -0
  68. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/aws-validation.md +0 -0
  69. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/cli-reference.md +0 -0
  70. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/index.md +0 -0
  71. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/output-formats.md +0 -0
  72. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/troubleshooting.md +0 -0
  73. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/README.md +0 -0
  74. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/access-analyzer/example1.json +0 -0
  75. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/access-analyzer/example2.json +0 -0
  76. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/aws-service-definitions/iam.json +0 -0
  77. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/aws-service-definitions/s3.json +0 -0
  78. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/github-labels-config.yaml +0 -0
  79. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/minimal-validation-config.yaml +0 -0
  80. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/offline-validation.yaml +0 -0
  81. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
  82. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/strict-security.yaml +0 -0
  83. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/custom_checks/cross_account_external_id_check.py +0 -0
  84. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/custom_checks/domain_restriction_check.py +0 -0
  85. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/access-analyzer-only.yaml +0 -0
  86. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/basic-validation.yaml +0 -0
  87. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/custom-policy-checks.yaml +0 -0
  88. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/multi-region-validation.yaml +0 -0
  89. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/resource-policy-validation.yaml +0 -0
  90. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/sarif-code-scanning.yaml +0 -0
  91. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/sequential-validation.yaml +0 -0
  92. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/two-step-validation.yaml +0 -0
  93. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/validate-changed-files.yaml +0 -0
  94. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
  95. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
  96. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
  97. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
  98. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
  99. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
  100. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
  101. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
  102. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
  103. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
  104. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
  105. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
  106. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
  107. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
  108. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
  109. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
  110. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
  111. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
  112. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
  113. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
  114. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
  115. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
  116. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
  117. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
  118. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
  119. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
  120. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
  121. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
  122. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
  123. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
  124. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
  125. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
  126. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
  127. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
  128. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
  129. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
  130. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
  131. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
  132. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
  133. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
  134. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
  135. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
  136. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
  137. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
  138. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
  139. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
  140. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
  141. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
  142. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
  143. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
  144. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
  145. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
  146. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
  147. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
  148. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
  149. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
  150. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
  151. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
  152. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
  153. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
  154. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
  155. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
  156. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
  157. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
  158. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
  159. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
  160. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
  161. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
  162. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
  163. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
  164. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
  165. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
  166. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
  167. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
  168. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
  169. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
  170. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
  171. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
  172. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
  173. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
  174. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
  175. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
  176. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
  177. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
  178. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
  179. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
  180. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
  181. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
  182. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
  183. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
  184. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
  185. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
  186. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/README.md +0 -0
  187. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/SYSTEM_PROMPT.md +0 -0
  188. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/example_conversation.md +0 -0
  189. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/organization_config.yaml +0 -0
  190. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/lambda-policy.json +0 -0
  191. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/s3-policy.json +0 -0
  192. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/user-policy.json +0 -0
  193. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
  194. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/cross-account-trust-policy.json +0 -0
  195. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
  196. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
  197. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
  198. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__init__.py +0 -0
  199. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__main__.py +0 -0
  200. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/__init__.py +0 -0
  201. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_condition_enforcement.py +0 -0
  202. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_resource_matching.py +0 -0
  203. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_validation.py +0 -0
  204. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/condition_key_validation.py +0 -0
  205. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/condition_type_mismatch.py +0 -0
  206. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/full_wildcard.py +0 -0
  207. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/mfa_condition_check.py +0 -0
  208. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/not_action_not_resource.py +0 -0
  209. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_size.py +0 -0
  210. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_structure.py +0 -0
  211. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_type_validation.py +0 -0
  212. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/resource_validation.py +0 -0
  213. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/sensitive_action.py +0 -0
  214. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/service_wildcard.py +0 -0
  215. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/set_operator_validation.py +0 -0
  216. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/sid_uniqueness.py +0 -0
  217. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/trust_policy_validation.py +0 -0
  218. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/__init__.py +0 -0
  219. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/action_parser.py +0 -0
  220. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/policy_level_checks.py +0 -0
  221. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
  222. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
  223. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/wildcard_action.py +0 -0
  224. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/wildcard_resource.py +0 -0
  225. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/__init__.py +0 -0
  226. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/analyze.py +0 -0
  227. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/base.py +0 -0
  228. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/cache.py +0 -0
  229. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/completion.py +0 -0
  230. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/download_services.py +0 -0
  231. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/mcp.py +0 -0
  232. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/post_to_pr.py +0 -0
  233. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/query.py +0 -0
  234. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/validate.py +0 -0
  235. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/__init__.py +0 -0
  236. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/access_analyzer.py +0 -0
  237. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/access_analyzer_report.py +0 -0
  238. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_fetcher.py +0 -0
  239. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/__init__.py +0 -0
  240. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/cache.py +0 -0
  241. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/client.py +0 -0
  242. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/fetcher.py +0 -0
  243. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/parsers.py +0 -0
  244. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/patterns.py +0 -0
  245. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/storage.py +0 -0
  246. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/check_registry.py +0 -0
  247. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/cli.py +0 -0
  248. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/codeowners.py +0 -0
  249. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/__init__.py +0 -0
  250. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/aws_api.py +0 -0
  251. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/category_suggestions.py +0 -0
  252. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/check_documentation.py +0 -0
  253. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/condition_requirements.py +0 -0
  254. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/config_loader.py +0 -0
  255. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/principal_requirements.py +0 -0
  256. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/sensitive_actions.py +0 -0
  257. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/service_principals.py +0 -0
  258. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/wildcards.py +0 -0
  259. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/constants.py +0 -0
  260. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/diff_parser.py +0 -0
  261. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/finding_fingerprint.py +0 -0
  262. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/__init__.py +0 -0
  263. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/base.py +0 -0
  264. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/console.py +0 -0
  265. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/csv.py +0 -0
  266. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/enhanced.py +0 -0
  267. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/html.py +0 -0
  268. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/json.py +0 -0
  269. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/markdown.py +0 -0
  270. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/sarif.py +0 -0
  271. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignore_patterns.py +0 -0
  272. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignore_processor.py +0 -0
  273. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignored_findings.py +0 -0
  274. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/label_manager.py +0 -0
  275. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/models.py +0 -0
  276. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/policy_checks.py +0 -0
  277. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/policy_loader.py +0 -0
  278. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/pr_commenter.py +0 -0
  279. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/report.py +0 -0
  280. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/__init__.py +0 -0
  281. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/github_integration.py +0 -0
  282. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/ms_teams.py +0 -0
  283. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/__init__.py +0 -0
  284. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/models.py +0 -0
  285. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/server.py +0 -0
  286. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/session_config.py +0 -0
  287. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/templates/__init__.py +0 -0
  288. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/templates/builtin.py +0 -0
  289. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/__init__.py +0 -0
  290. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/generation.py +0 -0
  291. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/org_config_tools.py +0 -0
  292. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/query.py +0 -0
  293. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/validation.py +0 -0
  294. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/__init__.py +0 -0
  295. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/arn_matching.py +0 -0
  296. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/context.py +0 -0
  297. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/exceptions.py +0 -0
  298. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/helpers.py +0 -0
  299. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/policy_utils.py +0 -0
  300. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/query_utils.py +0 -0
  301. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/shortcuts.py +0 -0
  302. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/__init__.py +0 -0
  303. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/cache.py +0 -0
  304. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/regex.py +0 -0
  305. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/terminal.py +0 -0
  306. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/mkdocs.yml +0 -0
  307. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/pyproject.toml +0 -0
  308. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/README.md +0 -0
  309. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/__init__.py +0 -0
  310. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/__init__.py +0 -0
  311. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_action_validation_check.py +0 -0
  312. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_custom_policy_checks.py +0 -0
  313. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_full_wildcard_check.py +0 -0
  314. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_mfa_condition_check.py +0 -0
  315. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_not_action_not_resource.py +0 -0
  316. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_policy_size_check.py +0 -0
  317. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_resource_validation_check.py +0 -0
  318. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_filtering.py +0 -0
  319. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_suggestions.py +0 -0
  320. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
  321. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_service_principal_wildcard.py +0 -0
  322. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_service_wildcard_check.py +0 -0
  323. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sid_uniqueness_check.py +0 -0
  324. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_wildcard_action_check.py +0 -0
  325. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_wildcard_resource_check.py +0 -0
  326. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/__init__.py +0 -0
  327. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/test_completion_command.py +0 -0
  328. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/test_query_command.py +0 -0
  329. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/config/__init__.py +0 -0
  330. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/config/test_config_loader.py +0 -0
  331. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/__init__.py +0 -0
  332. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_condition_enforcement.py +0 -0
  333. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
  334. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_resource_matching.py +0 -0
  335. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_aws_api_config.py +0 -0
  336. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_aws_fetcher_wildcards.py +0 -0
  337. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_id_in_comments.py +0 -0
  338. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_id_injection.py +0 -0
  339. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_registry.py +0 -0
  340. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_codeowners.py +0 -0
  341. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_comment_truncation.py +0 -0
  342. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_diff_parser.py +0 -0
  343. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_finding_fingerprint.py +0 -0
  344. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_ignore_patterns.py +0 -0
  345. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_ignored_findings.py +0 -0
  346. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_models.py +0 -0
  347. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_multipart_comments.py +0 -0
  348. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_policy_loader.py +0 -0
  349. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_policy_type_validation.py +0 -0
  350. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_pr_commenter_diff_filtering.py +0 -0
  351. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_regex_utils.py +0 -0
  352. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_set_operator_validation.py +0 -0
  353. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_detection.py +0 -0
  354. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_multiple_statements.py +0 -0
  355. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
  356. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_validation.py +0 -0
  357. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/__init__.py +0 -0
  358. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_comment_deduplication.py +0 -0
  359. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_github_pagination.py +0 -0
  360. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_label_manager.py +0 -0
  361. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/__init__.py +0 -0
  362. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/conftest.py +0 -0
  363. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_custom_instructions.py +0 -0
  364. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_generation_tools.py +0 -0
  365. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_org_config.py +0 -0
  366. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_query_tools.py +0 -0
  367. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_server_integration.py +0 -0
  368. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_templates.py +0 -0
  369. {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_validation_tools.py +0 -0
@@ -8,18 +8,139 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
  ## [Unreleased]
9
9
 
10
10
  ### Planned
11
- - NotAction/NotResource validation support
11
+
12
12
  - Enhanced PR comment management with configurable limits
13
13
 
14
14
  ---
15
15
 
16
+ ## [1.15.2] - 2025-01-26
17
+
18
+ ### Added
19
+
20
+ **Confused Deputy Protection**
21
+
22
+ - Service principal wildcard detection (`{"Service": "*"}`) - critical severity
23
+ - Detects dangerous patterns allowing any AWS service to access resources or assume roles
24
+ - Enabled by default via `block_service_principal_wildcard: true`
25
+ - Only checks `Principal` field (not `NotPrincipal`, which is an exclusion)
26
+ - New configuration options for `principal_validation`:
27
+ - `block_wildcard_principal` - strict mode to block `*` entirely (default: false)
28
+ - `block_service_principal_wildcard` - block `{"Service": "*"}` patterns (default: true)
29
+ - Improved handling of `Principal: "*"` with conditions for confused deputy prevention
30
+ - Default requires source verification (`aws:SourceArn`, `aws:SourceAccount`, `aws:SourceVpce`, or `aws:SourceIp`)
31
+
32
+ **Condition Type Validation Improvements**
33
+
34
+ - Enhanced ISO 8601 date validation with semantic checks:
35
+ - Validates month range (1-12)
36
+ - Validates day range based on month (1-28/29/30/31)
37
+ - Validates hour (0-23), minute (0-59), second (0-59)
38
+ - Leap year detection for February 29
39
+ - Timezone offset validation
40
+
41
+ ### Changed
42
+
43
+ - `principal_validation` default behavior now allows `*` with conditions
44
+ - Use `block_wildcard_principal: true` to restore strict blocking
45
+ - Duplicate findings avoided when service principal wildcard is detected
46
+
47
+ ---
48
+
49
+ ## [1.15.1] - 2025-01-24
50
+
51
+ ### Fixed
52
+
53
+ **Condition Key Validation for aws:RequestTag and aws:ResourceTag**
54
+
55
+ - `aws:RequestTag/${TagKey}` and `aws:ResourceTag/${TagKey}` now correctly validated as action/resource-specific condition keys (not global)
56
+ - These keys are only valid for actions that create/modify tagged resources (e.g., `iam:CreatePolicy`, `iam:CreateRole`)
57
+ - Invalid usage now flagged with descriptive error messages explaining the key is only for tagging operations
58
+ - Example: `iam:SetDefaultPolicyVersion` with `aws:RequestTag/owner` now correctly fails validation
59
+
60
+ ---
61
+
62
+ ## [1.15.0] - 2025-01-22
63
+
64
+ ### Added
65
+
66
+ **MCP Server Integration**
67
+
68
+ - Full FastMCP server with 25+ tools for AI assistants (`iam-validator mcp` command)
69
+ - Standalone `iam-validator-mcp` entry point for easy integration
70
+ - Policy validation, generation, and AWS service querying tools
71
+ - 15 built-in secure policy templates for common use cases
72
+ - Session-wide organization configuration management
73
+ - MCP Prompts for guided workflows (generate_secure_policy, fix_policy_issues_workflow, review_policy_security)
74
+ - Custom instructions support via YAML config, environment variable, CLI, or MCP tools
75
+ - Comprehensive MCP documentation with usage examples
76
+
77
+ **New Security Check**
78
+
79
+ - `not_action_not_resource` check for detecting dangerous NotAction/NotResource patterns (high severity)
80
+
81
+ **Query Command Enhancements**
82
+
83
+ - Support multiple actions in single query (`--name s3:GetObject dynamodb:Query`)
84
+ - Wildcard pattern expansion (`--name "iam:Get*"` or `--name "s3:*Object*"`)
85
+ - Field filter options: `--show-condition-keys`, `--show-resource-types`, `--show-access-level`
86
+ - Allow service prefix in `--name`, making `--service` optional (`--name s3:GetObject`)
87
+ - Deduplicate results when querying overlapping patterns
88
+
89
+ **Validation Improvements**
90
+
91
+ - `action_validation` now validates wildcard patterns (e.g., `s3:Get*`) to ensure they match real AWS actions
92
+ - `action_validation` now validates NotAction field
93
+ - `resource_validation` now validates NotResource field
94
+ - `wildcard_resource` check has condition-aware severity adjustment:
95
+ - MEDIUM → LOW when global resource-scoping conditions present (aws:ResourceAccount, aws:ResourceOrgID, aws:ResourceOrgPaths)
96
+ - MEDIUM → LOW when aws:ResourceTag/\* conditions are used AND all actions support the condition key
97
+
98
+ **Configuration**
99
+
100
+ - Add `hide_severities` option for severity-based finding filtering (global and per-check)
101
+ - Add `iam-policy-validator` CLI alias matching PyPI package name
102
+
103
+ **Cache Improvements**
104
+
105
+ - Cache refresh now updates all cached services (not just common ones)
106
+ - Expired cache files are kept for refresh instead of deleted
107
+ - Stale cache fallback when AWS API fails for graceful degradation
108
+
109
+ **SDK**
110
+
111
+ - Export `extract_condition_keys_from_statement()` in public API
112
+ - Add `is_condition_key_supported()` to AWSServiceFetcher
113
+
114
+ ### Changed
115
+
116
+ - Development status upgraded to Production/Stable
117
+ - Batch operations use `asyncio.gather()` for parallel execution
118
+ - Template listing includes full variable metadata (name, description, required)
119
+ - Simplified condition key pattern matching for tag-key placeholders (forward-compatible)
120
+ - Test suite consolidated using `@pytest.mark.parametrize` (919 → 850 tests)
121
+
122
+ ### Fixed
123
+
124
+ - Support parameterized condition key patterns like `s3:RequestObjectTag/<key>`
125
+ - MCP tests skip properly when fastmcp is not installed
126
+ - Improved loop prevention guidance for LLM clients
127
+
128
+ ### Dependencies
129
+
130
+ - fastmcp as optional dependency (install with `[mcp]` extra)
131
+ - Updated CI dependencies (actions/cache, codeql-action, setup-uv, upload-pages-artifact)
132
+
133
+ ---
134
+
16
135
  ## [1.14.7] - 2025-12-17
17
136
 
18
137
  ### Added
138
+
19
139
  - MkDocs documentation site deployed to GitHub Pages
20
140
  - Comprehensive SDK API reference documentation
21
141
 
22
142
  ### Fixed
143
+
23
144
  - Correct repository name in all documentation links (iam-policy-auditor → iam-policy-validator)
24
145
  - Fix SDK docstring formatting for proper mkdocstrings rendering
25
146
  - Update PyPI metadata with correct documentation and changelog URLs
@@ -29,6 +150,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
29
150
  ## [1.14.6] - 2025-12-15
30
151
 
31
152
  ### Fixed
153
+
32
154
  - Separate security findings from validity errors in PR comments
33
155
  - Respect ignored findings when managing PR labels and review state
34
156
 
@@ -37,6 +159,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
37
159
  ## [1.14.5] - 2025-12-15
38
160
 
39
161
  ### Fixed
162
+
40
163
  - Respect ignored findings when managing PR labels and review state
41
164
 
42
165
  ---
@@ -44,6 +167,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
44
167
  ## [1.14.4] - 2025-12-12
45
168
 
46
169
  ### Fixed
170
+
47
171
  - Show pass status and list ignored findings in summary when all blocking issues are ignored
48
172
 
49
173
  ---
@@ -51,6 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
51
175
  ## [1.14.3] - 2025-12-12
52
176
 
53
177
  ### Fixed
178
+
54
179
  - Add pattern matching for service-specific condition keys with tag validation
55
180
 
56
181
  ---
@@ -58,6 +183,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
58
183
  ## [1.14.2] - 2025-12-12
59
184
 
60
185
  ### Fixed
186
+
61
187
  - Use APPROVE review event when validation passes to dismiss REQUEST_CHANGES
62
188
 
63
189
  ---
@@ -65,10 +191,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
65
191
  ## [1.14.1] - 2025-12-11
66
192
 
67
193
  ### Fixed
194
+
68
195
  - Enhanced SARIF formatter with dynamic rules and rich context
69
196
  - Improved finding fingerprints for better PR comment deduplication
70
197
 
71
198
  ### Changed
199
+
72
200
  - Updated dependencies (setup-uv, actions/checkout, codeql-action)
73
201
 
74
202
  ---
@@ -76,11 +204,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
76
204
  ## [1.14.0] - 2024-12-10
77
205
 
78
206
  ### Added
207
+
79
208
  - Enhanced PR comments with fingerprint-based matching
80
209
  - Finding ignore system via PR comment replies
81
210
  - Improved review comment deduplication
82
211
 
83
212
  ### Changed
213
+
84
214
  - Better production readiness for GitHub Action integration
85
215
 
86
216
  ---
@@ -88,6 +218,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
218
  ## [1.13.1] - 2024-12
89
219
 
90
220
  ### Fixed
221
+
91
222
  - Bug fixes and stability improvements
92
223
 
93
224
  ---
@@ -95,6 +226,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
95
226
  ## [1.13.0] - 2024-12
96
227
 
97
228
  ### Added
229
+
98
230
  - Query command for exploring AWS service definitions
99
231
  - Shell completion support (bash, zsh, fish)
100
232
 
@@ -103,10 +235,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
103
235
  ## [1.12.0] - 2024-11
104
236
 
105
237
  ### Added
238
+
106
239
  - Trust policy validation check
107
240
  - Enhanced condition type mismatch detection
108
241
 
109
242
  ### Changed
243
+
110
244
  - Improved AWS service fetcher performance
111
245
 
112
246
  ---
@@ -114,10 +248,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
114
248
  ## [1.11.0] - 2024-11
115
249
 
116
250
  ### Added
251
+
117
252
  - Action-resource matching validation
118
253
  - Set operator validation for conditions (ForAllValues/ForAnyValue)
119
254
 
120
255
  ### Changed
256
+
121
257
  - Expanded sensitive actions database (490+ actions)
122
258
 
123
259
  ---
@@ -125,10 +261,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
125
261
  ## [1.10.0] - 2024-10
126
262
 
127
263
  ### Added
264
+
128
265
  - MFA condition check for sensitive operations
129
266
  - Condition key validation improvements
130
267
 
131
268
  ### Changed
269
+
132
270
  - Better error messages for validation failures
133
271
 
134
272
  ---
@@ -136,6 +274,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
136
274
  ## [1.9.0] - 2024-10
137
275
 
138
276
  ### Added
277
+
139
278
  - GitHub PR review comments (inline comments on changed lines)
140
279
  - Multiple output formats (JSON, SARIF, CSV, HTML, Markdown)
141
280
 
@@ -144,6 +283,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
144
283
  ## [1.8.0] - 2024-09
145
284
 
146
285
  ### Added
286
+
147
287
  - AWS Access Analyzer integration
148
288
  - Offline validation mode with pre-downloaded service definitions
149
289
 
@@ -152,10 +292,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
152
292
  ## [1.7.0] - 2024-09
153
293
 
154
294
  ### Added
295
+
155
296
  - Custom checks support via `--custom-checks-dir`
156
297
  - Configuration file support (`iam-validator.yaml`)
157
298
 
158
299
  ### Changed
300
+
159
301
  - Modular check architecture
160
302
 
161
303
  ---
@@ -163,6 +305,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
163
305
  ## [1.6.0] - 2024-08
164
306
 
165
307
  ### Added
308
+
166
309
  - Service Control Policy (SCP) validation
167
310
  - Principal validation for resource policies
168
311
 
@@ -171,17 +314,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
171
314
  ## [1.5.0] - 2024-08
172
315
 
173
316
  ### Added
317
+
174
318
  - Modular Python configuration system (5-10x faster startup)
175
319
  - Split security checks into individual modules:
176
- - `wildcard_action` - Wildcard actions (Action: "*")
177
- - `wildcard_resource` - Wildcard resources (Resource: "*")
178
- - `service_wildcard` - Service-level wildcards (e.g., "s3:*")
320
+ - `wildcard_action` - Wildcard actions (Action: "\*")
321
+ - `wildcard_resource` - Wildcard resources (Resource: "\*")
322
+ - `service_wildcard` - Service-level wildcards (e.g., "s3:\*")
179
323
  - `sensitive_action` - Sensitive actions without conditions
180
- - `full_wildcard` - Action:* + Resource:* (critical)
324
+ - `full_wildcard` - Action:_ + Resource:_ (critical)
181
325
  - GitHub Action RESOURCE_CONTROL_POLICY support
182
326
  - GitHub Actions job summary output
183
327
 
184
328
  ### Changed
329
+
185
330
  - Comprehensive documentation overhaul
186
331
 
187
332
  ---
@@ -189,9 +334,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
189
334
  ## [1.4.0] - 2024-07
190
335
 
191
336
  ### Added
337
+
192
338
  - Resource Control Policy (RCP) support with 8 validation checks
193
339
  - Enhanced principal validation:
194
- - Blocked principals (e.g., public access "*")
340
+ - Blocked principals (e.g., public access "\*")
195
341
  - Allowed principals whitelist
196
342
  - Required conditions for specific principals
197
343
  - Service principal validation
@@ -203,6 +349,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
203
349
  ## [1.3.0] - 2024-06
204
350
 
205
351
  ### Added
352
+
206
353
  - Modular Python configuration system
207
354
  - Condition requirement templates
208
355
  - Action condition enforcement check
@@ -212,6 +359,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
212
359
  ## [1.2.0] - 2024-05
213
360
 
214
361
  ### Added
362
+
215
363
  - Smart IAM policy detection and filtering
216
364
  - YAML policy support
217
365
  - Streaming mode for large policy sets
@@ -221,6 +369,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
221
369
  ## [1.1.0] - 2024-04
222
370
 
223
371
  ### Added
372
+
224
373
  - Split security checks into individual modules
225
374
  - Configurable check system
226
375
  - Per-check severity overrides
@@ -230,6 +379,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
230
379
  ## [1.0.0] - 2024-03
231
380
 
232
381
  ### Added
382
+
233
383
  - Initial release
234
384
  - Core IAM policy validation engine
235
385
  - AWS service definition fetching with caching
@@ -251,9 +401,8 @@ This project follows [Semantic Versioning](https://semver.org/):
251
401
 
252
402
  | Version | Support Status |
253
403
  | ------- | --------------------- |
254
- | 1.14.x | ✅ Active development |
255
- | 1.13.x | ⚠️ Critical fixes only |
256
- | < 1.13 | ❌ End of life |
404
+ | 1.15.x | ✅ Active development |
405
+ | < 1.15 | End of life |
257
406
 
258
407
  ### Deprecation Policy
259
408
 
@@ -270,6 +419,7 @@ This project follows [Semantic Versioning](https://semver.org/):
270
419
  The modular configuration system introduced in v1.5.0 changed how checks are configured:
271
420
 
272
421
  **Before (v1.4.x):**
422
+
273
423
  ```yaml
274
424
  checks:
275
425
  wildcard: high
@@ -277,6 +427,7 @@ checks:
277
427
  ```
278
428
 
279
429
  **After (v1.5.0+):**
430
+
280
431
  ```yaml
281
432
  wildcard_action:
282
433
  enabled: true
@@ -298,7 +449,11 @@ iam-validator validate --policy-type RESOURCE_CONTROL_POLICY policies/
298
449
 
299
450
  ---
300
451
 
301
- [Unreleased]: https://github.com/boogy/iam-policy-validator/compare/v1.14.6...HEAD
452
+ [Unreleased]: https://github.com/boogy/iam-policy-validator/compare/v1.15.2...HEAD
453
+ [1.15.2]: https://github.com/boogy/iam-policy-validator/compare/v1.15.1...v1.15.2
454
+ [1.15.1]: https://github.com/boogy/iam-policy-validator/compare/v1.15.0...v1.15.1
455
+ [1.15.0]: https://github.com/boogy/iam-policy-validator/compare/v1.14.7...v1.15.0
456
+ [1.14.7]: https://github.com/boogy/iam-policy-validator/compare/v1.14.6...v1.14.7
302
457
  [1.14.6]: https://github.com/boogy/iam-policy-validator/compare/v1.14.5...v1.14.6
303
458
  [1.14.5]: https://github.com/boogy/iam-policy-validator/compare/v1.14.4...v1.14.5
304
459
  [1.14.4]: https://github.com/boogy/iam-policy-validator/compare/v1.14.3...v1.14.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iam-policy-validator
3
- Version: 1.15.0
3
+ Version: 1.15.2
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
@@ -99,8 +99,16 @@ iam-validator validate --path examples/quick-start/ --format enhanced
99
99
  {
100
100
  "Version": "2012-10-17",
101
101
  "Statement": [
102
- {"Effect": "Allow", "Action": "s3:GetObjekt", "Resource": "arn:aws:s3:::my-bucket/*"},
103
- {"Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/lambda-role"}
102
+ {
103
+ "Effect": "Allow",
104
+ "Action": "s3:GetObjekt",
105
+ "Resource": "arn:aws:s3:::my-bucket/*"
106
+ },
107
+ {
108
+ "Effect": "Allow",
109
+ "Action": "iam:PassRole",
110
+ "Resource": "arn:aws:iam::123456789012:role/lambda-role"
111
+ }
104
112
  ]
105
113
  }
106
114
  ```
@@ -111,7 +119,11 @@ iam-validator validate --path examples/quick-start/ --format enhanced
111
119
  {
112
120
  "Version": "2012-10-17",
113
121
  "Statement": [
114
- {"Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*"}
122
+ {
123
+ "Effect": "Allow",
124
+ "Action": "s3:GetObject",
125
+ "Resource": "arn:aws:s3:::my-bucket/*"
126
+ }
115
127
  ]
116
128
  }
117
129
  ```
@@ -122,7 +134,11 @@ iam-validator validate --path examples/quick-start/ --format enhanced
122
134
  {
123
135
  "Version": "2012-10-17",
124
136
  "Statement": [
125
- {"Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function"}
137
+ {
138
+ "Effect": "Allow",
139
+ "Action": "lambda:InvokeFunction",
140
+ "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function"
141
+ }
126
142
  ]
127
143
  }
128
144
  ```
@@ -228,7 +244,8 @@ action_condition_enforcement:
228
244
  description: "Restrict which services can use passed roles"
229
245
 
230
246
  # Enforce IP restrictions for privileged actions (automation from CI/CD)
231
- - actions: ["iam:AttachUserPolicy", "iam:PutUserPolicy", "iam:CreateAccessKey"]
247
+ - actions:
248
+ ["iam:AttachUserPolicy", "iam:PutUserPolicy", "iam:CreateAccessKey"]
232
249
  required_conditions:
233
250
  - condition_key: "aws:SourceIp"
234
251
  expected_value: ["10.0.0.0/8", "172.16.0.0/12"]
@@ -270,9 +287,17 @@ Privilege escalation often occurs when multiple actions are scattered across dif
270
287
  ```json
271
288
  {
272
289
  "Statement": [
273
- {"Sid": "AllowUserManagement", "Action": "iam:CreateUser", "Resource": "*"},
274
- {"Sid": "AllowS3Read", "Action": "s3:GetObject", "Resource": "*"},
275
- {"Sid": "AllowPolicyAttachment", "Action": "iam:AttachUserPolicy", "Resource": "*"}
290
+ {
291
+ "Sid": "AllowUserManagement",
292
+ "Action": "iam:CreateUser",
293
+ "Resource": "*"
294
+ },
295
+ { "Sid": "AllowS3Read", "Action": "s3:GetObject", "Resource": "*" },
296
+ {
297
+ "Sid": "AllowPolicyAttachment",
298
+ "Action": "iam:AttachUserPolicy",
299
+ "Resource": "*"
300
+ }
276
301
  ]
277
302
  }
278
303
  ```
@@ -408,9 +433,9 @@ iam-validator validate --path policies/ --aws-services-dir ./aws-services
408
433
  - uses: boogy/iam-policy-validator@v1
409
434
  with:
410
435
  path: policies/
411
- github-review: true # Inline PR comments
412
- github-summary: true # Actions summary tab
413
- fail-on-severity: high # Block merge on high/critical
436
+ github-review: true # Inline PR comments
437
+ github-summary: true # Actions summary tab
438
+ fail-on-severity: high # Block merge on high/critical
414
439
  ```
415
440
 
416
441
  ---
@@ -440,14 +465,14 @@ Validates against official AWS IAM requirements:
440
465
 
441
466
  Identifies overly permissive configurations:
442
467
 
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) |
468
+ | Check | What It Catches |
469
+ | ------------------------- | -------------------------------------------------------- |
470
+ | **Wildcard Action** | `Action: "*"` grants all AWS permissions |
471
+ | **Wildcard Resource** | `Resource: "*"` applies to all resources |
472
+ | **Full Wildcard** | Both `Action: "*"` AND `Resource: "*"` (admin access) |
473
+ | **Service Wildcards** | `s3:*`, `iam:*`, `ec2:*` (overly broad) |
449
474
  | **Sensitive Actions** | 490+ privilege escalation patterns and dangerous actions |
450
- | **Condition Enforcement** | Organization-specific condition requirements |
475
+ | **Condition Enforcement** | Organization-specific condition requirements |
451
476
 
452
477
  **Note on Sensitive Actions:** This check has two modes:
453
478
 
@@ -540,7 +565,7 @@ action_condition_enforcement:
540
565
  - actions: ["iam:CreateUser", "iam:DeleteUser", "iam:CreateAccessKey"]
541
566
  required_conditions:
542
567
  - condition_key: "aws:SourceIp"
543
- expected_value: ["10.0.0.0/8", "52.94.76.0/24"] # Corporate + GitHub Actions
568
+ expected_value: ["10.0.0.0/8", "52.94.76.0/24"] # Corporate + GitHub Actions
544
569
 
545
570
  # Ignore patterns
546
571
  ignore_patterns:
@@ -677,19 +702,19 @@ iam-validator analyze --path new-policy.json \
677
702
 
678
703
  ## Comparison Matrix
679
704
 
680
- | Feature | IAM Policy Validator | IAM Lens | IAMSpy | Policy Sentry |
681
- | ------------------------------ | -------------------------------- | ----------------------------- | ---------------------- | -------------------------- |
682
- | **Primary Purpose** | Pre-deployment validation | Runtime permission analysis | Permission enumeration | Least-privilege generation |
683
- | **Use Case** | CI/CD policy scanning | "What can this principal do?" | Pentesting/audit | Policy creation |
684
- | **Custom Security Rules** | ✅ Full support | ❌ No | ❌ No | ❌ No |
705
+ | Feature | IAM Policy Validator | IAM Lens | IAMSpy | Policy Sentry |
706
+ | ------------------------------ | --------------------------------- | ----------------------------- | ---------------------- | -------------------------- |
707
+ | **Primary Purpose** | Pre-deployment validation | Runtime permission analysis | Permission enumeration | Least-privilege generation |
708
+ | **Use Case** | CI/CD policy scanning | "What can this principal do?" | Pentesting/audit | Policy creation |
709
+ | **Custom Security Rules** | ✅ Full support | ❌ No | ❌ No | ❌ No |
685
710
  | **Cross-Statement Patterns** | ✅ Privilege escalation detection | N/A (different purpose) | N/A | N/A |
686
- | **Action-Resource Validation** | ✅ Catches incompatible pairs | N/A | ❌ No | ✅ Generates correct |
687
- | **Organization Conditions** | ✅ IP, tags, encryption, etc. | ❌ No | ❌ No | ❌ No |
688
- | **CI/CD Ready** | ✅ GitHub Actions native | ⚠️ Manual setup | ⚠️ Manual | ⚠️ Manual |
689
- | **PR Line Comments** | ✅ Diff-aware | ❌ No | ❌ No | ❌ No |
690
- | **AWS Service Data** | ✅ Official API (auto-update) | ✅ Real AWS account data | ⚠️ Static | ✅ Official API |
691
- | **Offline Mode** | ✅ Yes | ❌ Needs AWS account | ✅ Yes | ❌ Needs internet |
692
- | **Query Permissions** | ✅ Yes | ✅ Yes (different approach) | ⚠️ Enumerate only | ✅ Excellent |
711
+ | **Action-Resource Validation** | ✅ Catches incompatible pairs | N/A | ❌ No | ✅ Generates correct |
712
+ | **Organization Conditions** | ✅ IP, tags, encryption, etc. | ❌ No | ❌ No | ❌ No |
713
+ | **CI/CD Ready** | ✅ GitHub Actions native | ⚠️ Manual setup | ⚠️ Manual | ⚠️ Manual |
714
+ | **PR Line Comments** | ✅ Diff-aware | ❌ No | ❌ No | ❌ No |
715
+ | **AWS Service Data** | ✅ Official API (auto-update) | ✅ Real AWS account data | ⚠️ Static | ✅ Official API |
716
+ | **Offline Mode** | ✅ Yes | ❌ Needs AWS account | ✅ Yes | ❌ Needs internet |
717
+ | **Query Permissions** | ✅ Yes | ✅ Yes (different approach) | ⚠️ Enumerate only | ✅ Excellent |
693
718
 
694
719
  **Choose this tool if you:**
695
720