iam-policy-validator 1.14.7__tar.gz → 1.15.1__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.
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/ci.yml +4 -4
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/codeql.yml +3 -3
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/docs.yml +1 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/pre-release.yml +1 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/release.yml +1 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/scorecard.yml +1 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.gitignore +3 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/CHANGELOG.md +133 -12
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/Makefile +19 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/PKG-INFO +16 -11
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/README.md +10 -9
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/SECURITY.md +3 -48
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/action.yaml +3 -3
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/api-reference/sdk.md +77 -37
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/contributing/testing.md +5 -5
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/architecture.md +6 -6
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/custom-checks/examples.md +6 -6
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/sdk/policy-utilities.md +14 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/getting-started/first-validation.md +8 -8
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/getting-started/quickstart.md +5 -5
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/index.md +2 -2
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/integrations/github-actions.md +9 -9
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/integrations/index.md +9 -1
- iam_policy_validator-1.15.1/docs/integrations/mcp-server.md +2033 -0
- iam_policy_validator-1.15.1/docs/stylesheets/extra.css +283 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/checks/advanced-checks.md +10 -10
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/checks/aws-validation.md +8 -8
- iam_policy_validator-1.15.1/docs/user-guide/checks/index.md +110 -0
- iam_policy_validator-1.15.1/docs/user-guide/checks/security-checks.md +380 -0
- iam_policy_validator-1.15.1/docs/user-guide/cli-reference.md +361 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/configuration.md +32 -4
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/output-formats.md +9 -9
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/full-reference-config.yaml +41 -1
- iam_policy_validator-1.15.1/examples/mcp-llm-instructions/README.md +145 -0
- iam_policy_validator-1.15.1/examples/mcp-llm-instructions/SYSTEM_PROMPT.md +382 -0
- iam_policy_validator-1.15.1/examples/mcp-llm-instructions/example_conversation.md +252 -0
- iam_policy_validator-1.15.1/examples/mcp-llm-instructions/organization_config.yaml +165 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/__init__.py +2 -0
- iam_policy_validator-1.15.1/iam_validator/checks/action_validation.py +131 -0
- iam_policy_validator-1.15.1/iam_validator/checks/not_action_not_resource.py +163 -0
- iam_policy_validator-1.15.1/iam_validator/checks/resource_validation.py +186 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/wildcard_resource.py +136 -6
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/__init__.py +3 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/cache.py +66 -24
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/completion.py +94 -15
- iam_policy_validator-1.15.1/iam_validator/commands/mcp.py +210 -0
- iam_policy_validator-1.15.1/iam_validator/commands/query.py +909 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/__init__.py +5 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/cache.py +20 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/fetcher.py +180 -11
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/storage.py +14 -6
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/validators.py +68 -51
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/check_registry.py +100 -35
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/aws_global_conditions.py +18 -9
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/check_documentation.py +104 -51
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/config_loader.py +39 -3
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/defaults.py +6 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/constants.py +11 -4
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/models.py +39 -14
- iam_policy_validator-1.15.1/iam_validator/mcp/__init__.py +162 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/models.py +118 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/server.py +2928 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/session_config.py +319 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/templates/__init__.py +79 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/templates/builtin.py +856 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/tools/__init__.py +72 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/tools/generation.py +888 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/tools/org_config_tools.py +263 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/tools/query.py +395 -0
- iam_policy_validator-1.15.1/iam_validator/mcp/tools/validation.py +376 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/__init__.py +2 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/policy_utils.py +31 -5
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/mkdocs.yml +8 -2
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/pyproject.toml +8 -1
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_action_validation_check.py +103 -6
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_aws_global_conditions.py +32 -24
- iam_policy_validator-1.15.1/tests/checks/test_condition_key_validation_check.py +273 -0
- iam_policy_validator-1.15.1/tests/checks/test_condition_type_mismatch.py +125 -0
- iam_policy_validator-1.15.1/tests/checks/test_full_wildcard_check.py +73 -0
- iam_policy_validator-1.15.1/tests/checks/test_mfa_condition_check.py +96 -0
- iam_policy_validator-1.15.1/tests/checks/test_not_action_not_resource.py +108 -0
- iam_policy_validator-1.15.1/tests/checks/test_policy_size_check.py +98 -0
- iam_policy_validator-1.15.1/tests/checks/test_principal_validation_check.py +252 -0
- iam_policy_validator-1.15.1/tests/checks/test_resource_validation_check.py +151 -0
- iam_policy_validator-1.15.1/tests/checks/test_service_wildcard_check.py +84 -0
- iam_policy_validator-1.15.1/tests/checks/test_sid_uniqueness_check.py +80 -0
- iam_policy_validator-1.15.1/tests/checks/test_wildcard_action_check.py +62 -0
- iam_policy_validator-1.15.1/tests/checks/test_wildcard_resource_check.py +292 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/commands/test_query_command.py +159 -0
- iam_policy_validator-1.15.1/tests/core/test_action_resource_matching.py +167 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_check_registry.py +173 -0
- iam_policy_validator-1.15.1/tests/core/test_models.py +276 -0
- iam_policy_validator-1.15.1/tests/mcp/__init__.py +8 -0
- iam_policy_validator-1.15.1/tests/mcp/conftest.py +326 -0
- iam_policy_validator-1.15.1/tests/mcp/test_custom_instructions.py +218 -0
- iam_policy_validator-1.15.1/tests/mcp/test_generation_tools.py +441 -0
- iam_policy_validator-1.15.1/tests/mcp/test_org_config.py +385 -0
- iam_policy_validator-1.15.1/tests/mcp/test_query_tools.py +221 -0
- iam_policy_validator-1.15.1/tests/mcp/test_server_integration.py +128 -0
- iam_policy_validator-1.15.1/tests/mcp/test_templates.py +495 -0
- iam_policy_validator-1.15.1/tests/mcp/test_validation_tools.py +331 -0
- iam_policy_validator-1.15.1/uv.lock +2762 -0
- iam_policy_validator-1.14.7/docs/user-guide/checks/index.md +0 -109
- iam_policy_validator-1.14.7/docs/user-guide/checks/security-checks.md +0 -233
- iam_policy_validator-1.14.7/docs/user-guide/cli-reference.md +0 -175
- iam_policy_validator-1.14.7/iam_validator/checks/action_validation.py +0 -67
- iam_policy_validator-1.14.7/iam_validator/checks/resource_validation.py +0 -135
- iam_policy_validator-1.14.7/iam_validator/commands/query.py +0 -485
- iam_policy_validator-1.14.7/scripts/download_aws_services.py +0 -215
- iam_policy_validator-1.14.7/scripts/sync_defaults_from_yaml.py +0 -204
- iam_policy_validator-1.14.7/tests/checks/test_condition_key_validation_check.py +0 -646
- iam_policy_validator-1.14.7/tests/checks/test_condition_type_mismatch.py +0 -370
- iam_policy_validator-1.14.7/tests/checks/test_full_wildcard_check.py +0 -254
- iam_policy_validator-1.14.7/tests/checks/test_mfa_condition_check.py +0 -240
- iam_policy_validator-1.14.7/tests/checks/test_policy_size_check.py +0 -370
- iam_policy_validator-1.14.7/tests/checks/test_principal_validation_check.py +0 -958
- iam_policy_validator-1.14.7/tests/checks/test_resource_validation_check.py +0 -322
- iam_policy_validator-1.14.7/tests/checks/test_service_wildcard_check.py +0 -332
- iam_policy_validator-1.14.7/tests/checks/test_sid_uniqueness_check.py +0 -281
- iam_policy_validator-1.14.7/tests/checks/test_wildcard_action_check.py +0 -297
- iam_policy_validator-1.14.7/tests/checks/test_wildcard_resource_check.py +0 -759
- iam_policy_validator-1.14.7/tests/core/test_action_resource_matching.py +0 -564
- iam_policy_validator-1.14.7/tests/core/test_models.py +0 -541
- iam_policy_validator-1.14.7/uv.lock +0 -1519
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/cleanup-prereleases.yml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/LICENSE +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/api-reference/checks.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/api-reference/exceptions.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/api-reference/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/api-reference/models.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/changelog.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/contributing/development-setup.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/contributing/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/contributing/releasing.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/custom-checks/best-practices.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/custom-checks/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/custom-checks/tutorial.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/sdk/advanced.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/sdk/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/sdk/quickstart.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/developer-guide/sdk/validation.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/getting-started/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/getting-started/installation.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/includes/abbreviations.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/integrations/gitlab-ci.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/integrations/pre-commit.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/index.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/docs/user-guide/troubleshooting.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/README.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/aws-service-definitions/iam.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/aws-service-definitions/s3.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/github-labels-config.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/minimal-validation-config.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/offline-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/configs/strict-security.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/custom-policy-checks.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/sarif-code-scanning.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/github-actions/validate-changed-files.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/quick-start/lambda-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/quick-start/s3-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/quick-start/user-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/trust-policies/cross-account-trust-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/action_resource_matching.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/condition_key_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/full_wildcard.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/mfa_condition_check.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/policy_structure.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/principal_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/sensitive_action.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/service_wildcard.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/utils/action_parser.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/utils/policy_level_checks.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/checks/wildcard_action.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/download_services.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/commands/validate.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/client.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/parsers.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/aws_service/patterns.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/codeowners.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/condition_validators.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/aws_api.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/category_suggestions.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/condition_requirements.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/principal_requirements.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/sensitive_actions.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/service_principals.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/config/wildcards.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/diff_parser.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/enhanced.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/ignore_processor.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/ignored_findings.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/label_manager.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/pr_commenter.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/core/report.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/integrations/github_integration.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/arn_matching.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/context.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/exceptions.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/helpers.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/query_utils.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/sdk/shortcuts.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/utils/cache.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/utils/regex.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/iam_validator/utils/terminal.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/README.md +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_sensitive_action_filtering.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_sensitive_action_suggestions.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/checks/test_service_principal_wildcard.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/commands/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/commands/test_completion_command.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/config/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/config/test_config_loader.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_aws_api_config.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_check_id_in_comments.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_check_id_injection.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_codeowners.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_diff_parser.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_ignored_findings.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_multipart_comments.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_policy_loader.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_pr_commenter_diff_filtering.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_regex_utils.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_trust_policy_detection.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_trust_policy_multiple_statements.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/core/test_trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/integrations/test_comment_deduplication.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/tests/integrations/test_github_pagination.py +0 -0
- {iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
38
|
+
uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
|
|
39
39
|
|
|
40
40
|
- name: Perform CodeQL Analysis
|
|
41
|
-
uses: github/codeql-action/analyze@
|
|
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@
|
|
66
|
+
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
|
|
67
67
|
with:
|
|
68
68
|
path: ./site
|
|
69
69
|
|
{iam_policy_validator-1.14.7 → iam_policy_validator-1.15.1}/.github/workflows/pre-release.yml
RENAMED
|
@@ -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@
|
|
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@
|
|
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@
|
|
60
|
+
uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
|
|
61
61
|
with:
|
|
62
62
|
sarif_file: results.sarif
|
|
@@ -8,14 +8,103 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
10
|
### Planned
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
- Enhanced PR comment management with configurable limits
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
+
## [1.15.0] - 2025-01-22
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
**MCP Server Integration**
|
|
21
|
+
|
|
22
|
+
- Full FastMCP server with 25+ tools for AI assistants (`iam-validator mcp` command)
|
|
23
|
+
- Standalone `iam-validator-mcp` entry point for easy integration
|
|
24
|
+
- Policy validation, generation, and AWS service querying tools
|
|
25
|
+
- 15 built-in secure policy templates for common use cases
|
|
26
|
+
- Session-wide organization configuration management
|
|
27
|
+
- MCP Prompts for guided workflows (generate_secure_policy, fix_policy_issues_workflow, review_policy_security)
|
|
28
|
+
- Custom instructions support via YAML config, environment variable, CLI, or MCP tools
|
|
29
|
+
- Comprehensive MCP documentation with usage examples
|
|
30
|
+
|
|
31
|
+
**New Security Check**
|
|
32
|
+
|
|
33
|
+
- `not_action_not_resource` check for detecting dangerous NotAction/NotResource patterns (high severity)
|
|
34
|
+
|
|
35
|
+
**Query Command Enhancements**
|
|
36
|
+
|
|
37
|
+
- Support multiple actions in single query (`--name s3:GetObject dynamodb:Query`)
|
|
38
|
+
- Wildcard pattern expansion (`--name "iam:Get*"` or `--name "s3:*Object*"`)
|
|
39
|
+
- Field filter options: `--show-condition-keys`, `--show-resource-types`, `--show-access-level`
|
|
40
|
+
- Allow service prefix in `--name`, making `--service` optional (`--name s3:GetObject`)
|
|
41
|
+
- Deduplicate results when querying overlapping patterns
|
|
42
|
+
|
|
43
|
+
**Validation Improvements**
|
|
44
|
+
|
|
45
|
+
- `action_validation` now validates wildcard patterns (e.g., `s3:Get*`) to ensure they match real AWS actions
|
|
46
|
+
- `action_validation` now validates NotAction field
|
|
47
|
+
- `resource_validation` now validates NotResource field
|
|
48
|
+
- `wildcard_resource` check has condition-aware severity adjustment:
|
|
49
|
+
- MEDIUM → LOW when global resource-scoping conditions present (aws:ResourceAccount, aws:ResourceOrgID, aws:ResourceOrgPaths)
|
|
50
|
+
- MEDIUM → LOW when aws:ResourceTag/\* conditions are used AND all actions support the condition key
|
|
51
|
+
|
|
52
|
+
**Configuration**
|
|
53
|
+
|
|
54
|
+
- Add `hide_severities` option for severity-based finding filtering (global and per-check)
|
|
55
|
+
- Add `iam-policy-validator` CLI alias matching PyPI package name
|
|
56
|
+
|
|
57
|
+
**Cache Improvements**
|
|
58
|
+
|
|
59
|
+
- Cache refresh now updates all cached services (not just common ones)
|
|
60
|
+
- Expired cache files are kept for refresh instead of deleted
|
|
61
|
+
- Stale cache fallback when AWS API fails for graceful degradation
|
|
62
|
+
|
|
63
|
+
**SDK**
|
|
64
|
+
|
|
65
|
+
- Export `extract_condition_keys_from_statement()` in public API
|
|
66
|
+
- Add `is_condition_key_supported()` to AWSServiceFetcher
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- Development status upgraded to Production/Stable
|
|
71
|
+
- Batch operations use `asyncio.gather()` for parallel execution
|
|
72
|
+
- Template listing includes full variable metadata (name, description, required)
|
|
73
|
+
- Simplified condition key pattern matching for tag-key placeholders (forward-compatible)
|
|
74
|
+
- Test suite consolidated using `@pytest.mark.parametrize` (919 → 850 tests)
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- Support parameterized condition key patterns like `s3:RequestObjectTag/<key>`
|
|
79
|
+
- MCP tests skip properly when fastmcp is not installed
|
|
80
|
+
- Improved loop prevention guidance for LLM clients
|
|
81
|
+
|
|
82
|
+
### Dependencies
|
|
83
|
+
|
|
84
|
+
- fastmcp as optional dependency (install with `[mcp]` extra)
|
|
85
|
+
- Updated CI dependencies (actions/cache, codeql-action, setup-uv, upload-pages-artifact)
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## [1.14.7] - 2025-12-17
|
|
90
|
+
|
|
91
|
+
### Added
|
|
92
|
+
|
|
93
|
+
- MkDocs documentation site deployed to GitHub Pages
|
|
94
|
+
- Comprehensive SDK API reference documentation
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
|
|
98
|
+
- Correct repository name in all documentation links (iam-policy-auditor → iam-policy-validator)
|
|
99
|
+
- Fix SDK docstring formatting for proper mkdocstrings rendering
|
|
100
|
+
- Update PyPI metadata with correct documentation and changelog URLs
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
16
104
|
## [1.14.6] - 2025-12-15
|
|
17
105
|
|
|
18
106
|
### Fixed
|
|
107
|
+
|
|
19
108
|
- Separate security findings from validity errors in PR comments
|
|
20
109
|
- Respect ignored findings when managing PR labels and review state
|
|
21
110
|
|
|
@@ -24,6 +113,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
113
|
## [1.14.5] - 2025-12-15
|
|
25
114
|
|
|
26
115
|
### Fixed
|
|
116
|
+
|
|
27
117
|
- Respect ignored findings when managing PR labels and review state
|
|
28
118
|
|
|
29
119
|
---
|
|
@@ -31,6 +121,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
31
121
|
## [1.14.4] - 2025-12-12
|
|
32
122
|
|
|
33
123
|
### Fixed
|
|
124
|
+
|
|
34
125
|
- Show pass status and list ignored findings in summary when all blocking issues are ignored
|
|
35
126
|
|
|
36
127
|
---
|
|
@@ -38,6 +129,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
38
129
|
## [1.14.3] - 2025-12-12
|
|
39
130
|
|
|
40
131
|
### Fixed
|
|
132
|
+
|
|
41
133
|
- Add pattern matching for service-specific condition keys with tag validation
|
|
42
134
|
|
|
43
135
|
---
|
|
@@ -45,6 +137,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
45
137
|
## [1.14.2] - 2025-12-12
|
|
46
138
|
|
|
47
139
|
### Fixed
|
|
140
|
+
|
|
48
141
|
- Use APPROVE review event when validation passes to dismiss REQUEST_CHANGES
|
|
49
142
|
|
|
50
143
|
---
|
|
@@ -52,10 +145,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
52
145
|
## [1.14.1] - 2025-12-11
|
|
53
146
|
|
|
54
147
|
### Fixed
|
|
148
|
+
|
|
55
149
|
- Enhanced SARIF formatter with dynamic rules and rich context
|
|
56
150
|
- Improved finding fingerprints for better PR comment deduplication
|
|
57
151
|
|
|
58
152
|
### Changed
|
|
153
|
+
|
|
59
154
|
- Updated dependencies (setup-uv, actions/checkout, codeql-action)
|
|
60
155
|
|
|
61
156
|
---
|
|
@@ -63,11 +158,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
63
158
|
## [1.14.0] - 2024-12-10
|
|
64
159
|
|
|
65
160
|
### Added
|
|
161
|
+
|
|
66
162
|
- Enhanced PR comments with fingerprint-based matching
|
|
67
163
|
- Finding ignore system via PR comment replies
|
|
68
164
|
- Improved review comment deduplication
|
|
69
165
|
|
|
70
166
|
### Changed
|
|
167
|
+
|
|
71
168
|
- Better production readiness for GitHub Action integration
|
|
72
169
|
|
|
73
170
|
---
|
|
@@ -75,6 +172,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
75
172
|
## [1.13.1] - 2024-12
|
|
76
173
|
|
|
77
174
|
### Fixed
|
|
175
|
+
|
|
78
176
|
- Bug fixes and stability improvements
|
|
79
177
|
|
|
80
178
|
---
|
|
@@ -82,6 +180,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
82
180
|
## [1.13.0] - 2024-12
|
|
83
181
|
|
|
84
182
|
### Added
|
|
183
|
+
|
|
85
184
|
- Query command for exploring AWS service definitions
|
|
86
185
|
- Shell completion support (bash, zsh, fish)
|
|
87
186
|
|
|
@@ -90,10 +189,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
90
189
|
## [1.12.0] - 2024-11
|
|
91
190
|
|
|
92
191
|
### Added
|
|
192
|
+
|
|
93
193
|
- Trust policy validation check
|
|
94
194
|
- Enhanced condition type mismatch detection
|
|
95
195
|
|
|
96
196
|
### Changed
|
|
197
|
+
|
|
97
198
|
- Improved AWS service fetcher performance
|
|
98
199
|
|
|
99
200
|
---
|
|
@@ -101,10 +202,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
101
202
|
## [1.11.0] - 2024-11
|
|
102
203
|
|
|
103
204
|
### Added
|
|
205
|
+
|
|
104
206
|
- Action-resource matching validation
|
|
105
207
|
- Set operator validation for conditions (ForAllValues/ForAnyValue)
|
|
106
208
|
|
|
107
209
|
### Changed
|
|
210
|
+
|
|
108
211
|
- Expanded sensitive actions database (490+ actions)
|
|
109
212
|
|
|
110
213
|
---
|
|
@@ -112,10 +215,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
112
215
|
## [1.10.0] - 2024-10
|
|
113
216
|
|
|
114
217
|
### Added
|
|
218
|
+
|
|
115
219
|
- MFA condition check for sensitive operations
|
|
116
220
|
- Condition key validation improvements
|
|
117
221
|
|
|
118
222
|
### Changed
|
|
223
|
+
|
|
119
224
|
- Better error messages for validation failures
|
|
120
225
|
|
|
121
226
|
---
|
|
@@ -123,6 +228,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
123
228
|
## [1.9.0] - 2024-10
|
|
124
229
|
|
|
125
230
|
### Added
|
|
231
|
+
|
|
126
232
|
- GitHub PR review comments (inline comments on changed lines)
|
|
127
233
|
- Multiple output formats (JSON, SARIF, CSV, HTML, Markdown)
|
|
128
234
|
|
|
@@ -131,6 +237,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
131
237
|
## [1.8.0] - 2024-09
|
|
132
238
|
|
|
133
239
|
### Added
|
|
240
|
+
|
|
134
241
|
- AWS Access Analyzer integration
|
|
135
242
|
- Offline validation mode with pre-downloaded service definitions
|
|
136
243
|
|
|
@@ -139,10 +246,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
139
246
|
## [1.7.0] - 2024-09
|
|
140
247
|
|
|
141
248
|
### Added
|
|
249
|
+
|
|
142
250
|
- Custom checks support via `--custom-checks-dir`
|
|
143
251
|
- Configuration file support (`iam-validator.yaml`)
|
|
144
252
|
|
|
145
253
|
### Changed
|
|
254
|
+
|
|
146
255
|
- Modular check architecture
|
|
147
256
|
|
|
148
257
|
---
|
|
@@ -150,6 +259,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
150
259
|
## [1.6.0] - 2024-08
|
|
151
260
|
|
|
152
261
|
### Added
|
|
262
|
+
|
|
153
263
|
- Service Control Policy (SCP) validation
|
|
154
264
|
- Principal validation for resource policies
|
|
155
265
|
|
|
@@ -158,17 +268,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
158
268
|
## [1.5.0] - 2024-08
|
|
159
269
|
|
|
160
270
|
### Added
|
|
271
|
+
|
|
161
272
|
- Modular Python configuration system (5-10x faster startup)
|
|
162
273
|
- Split security checks into individual modules:
|
|
163
|
-
- `wildcard_action` - Wildcard actions (Action: "
|
|
164
|
-
- `wildcard_resource` - Wildcard resources (Resource: "
|
|
165
|
-
- `service_wildcard` - Service-level wildcards (e.g., "s3
|
|
274
|
+
- `wildcard_action` - Wildcard actions (Action: "\*")
|
|
275
|
+
- `wildcard_resource` - Wildcard resources (Resource: "\*")
|
|
276
|
+
- `service_wildcard` - Service-level wildcards (e.g., "s3:\*")
|
|
166
277
|
- `sensitive_action` - Sensitive actions without conditions
|
|
167
|
-
- `full_wildcard` - Action
|
|
278
|
+
- `full_wildcard` - Action:_ + Resource:_ (critical)
|
|
168
279
|
- GitHub Action RESOURCE_CONTROL_POLICY support
|
|
169
280
|
- GitHub Actions job summary output
|
|
170
281
|
|
|
171
282
|
### Changed
|
|
283
|
+
|
|
172
284
|
- Comprehensive documentation overhaul
|
|
173
285
|
|
|
174
286
|
---
|
|
@@ -176,9 +288,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
176
288
|
## [1.4.0] - 2024-07
|
|
177
289
|
|
|
178
290
|
### Added
|
|
291
|
+
|
|
179
292
|
- Resource Control Policy (RCP) support with 8 validation checks
|
|
180
293
|
- Enhanced principal validation:
|
|
181
|
-
- Blocked principals (e.g., public access "
|
|
294
|
+
- Blocked principals (e.g., public access "\*")
|
|
182
295
|
- Allowed principals whitelist
|
|
183
296
|
- Required conditions for specific principals
|
|
184
297
|
- Service principal validation
|
|
@@ -190,6 +303,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
190
303
|
## [1.3.0] - 2024-06
|
|
191
304
|
|
|
192
305
|
### Added
|
|
306
|
+
|
|
193
307
|
- Modular Python configuration system
|
|
194
308
|
- Condition requirement templates
|
|
195
309
|
- Action condition enforcement check
|
|
@@ -199,6 +313,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
199
313
|
## [1.2.0] - 2024-05
|
|
200
314
|
|
|
201
315
|
### Added
|
|
316
|
+
|
|
202
317
|
- Smart IAM policy detection and filtering
|
|
203
318
|
- YAML policy support
|
|
204
319
|
- Streaming mode for large policy sets
|
|
@@ -208,6 +323,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
208
323
|
## [1.1.0] - 2024-04
|
|
209
324
|
|
|
210
325
|
### Added
|
|
326
|
+
|
|
211
327
|
- Split security checks into individual modules
|
|
212
328
|
- Configurable check system
|
|
213
329
|
- Per-check severity overrides
|
|
@@ -217,6 +333,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
217
333
|
## [1.0.0] - 2024-03
|
|
218
334
|
|
|
219
335
|
### Added
|
|
336
|
+
|
|
220
337
|
- Initial release
|
|
221
338
|
- Core IAM policy validation engine
|
|
222
339
|
- AWS service definition fetching with caching
|
|
@@ -236,11 +353,11 @@ This project follows [Semantic Versioning](https://semver.org/):
|
|
|
236
353
|
|
|
237
354
|
### Supported Versions
|
|
238
355
|
|
|
239
|
-
| Version | Support Status
|
|
240
|
-
| ------- |
|
|
241
|
-
| 1.
|
|
242
|
-
| 1.
|
|
243
|
-
| < 1.
|
|
356
|
+
| Version | Support Status |
|
|
357
|
+
| ------- | ---------------------- |
|
|
358
|
+
| 1.15.x | ✅ Active development |
|
|
359
|
+
| 1.14.x | ⚠️ Critical fixes only |
|
|
360
|
+
| < 1.14 | ❌ End of life |
|
|
244
361
|
|
|
245
362
|
### Deprecation Policy
|
|
246
363
|
|
|
@@ -257,6 +374,7 @@ This project follows [Semantic Versioning](https://semver.org/):
|
|
|
257
374
|
The modular configuration system introduced in v1.5.0 changed how checks are configured:
|
|
258
375
|
|
|
259
376
|
**Before (v1.4.x):**
|
|
377
|
+
|
|
260
378
|
```yaml
|
|
261
379
|
checks:
|
|
262
380
|
wildcard: high
|
|
@@ -264,6 +382,7 @@ checks:
|
|
|
264
382
|
```
|
|
265
383
|
|
|
266
384
|
**After (v1.5.0+):**
|
|
385
|
+
|
|
267
386
|
```yaml
|
|
268
387
|
wildcard_action:
|
|
269
388
|
enabled: true
|
|
@@ -285,7 +404,9 @@ iam-validator validate --policy-type RESOURCE_CONTROL_POLICY policies/
|
|
|
285
404
|
|
|
286
405
|
---
|
|
287
406
|
|
|
288
|
-
[Unreleased]: https://github.com/boogy/iam-policy-validator/compare/v1.
|
|
407
|
+
[Unreleased]: https://github.com/boogy/iam-policy-validator/compare/v1.15.0...HEAD
|
|
408
|
+
[1.15.0]: https://github.com/boogy/iam-policy-validator/compare/v1.14.7...v1.15.0
|
|
409
|
+
[1.14.7]: https://github.com/boogy/iam-policy-validator/compare/v1.14.6...v1.14.7
|
|
289
410
|
[1.14.6]: https://github.com/boogy/iam-policy-validator/compare/v1.14.5...v1.14.6
|
|
290
411
|
[1.14.5]: https://github.com/boogy/iam-policy-validator/compare/v1.14.4...v1.14.5
|
|
291
412
|
[1.14.4]: https://github.com/boogy/iam-policy-validator/compare/v1.14.3...v1.14.4
|
|
@@ -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.
|
|
3
|
+
Version: 1.15.1
|
|
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 ::
|
|
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)
|
|
56
60
|
[](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
|
|
438
|
-
|
|
|
439
|
-
| **Wildcard Action**
|
|
440
|
-
| **Wildcard Resource**
|
|
441
|
-
| **Full Wildcard**
|
|
442
|
-
| **Service Wildcards**
|
|
443
|
-
| **Sensitive Actions
|
|
444
|
-
| **
|
|
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)
|
|
8
8
|
[](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
|
|
390
|
-
|
|
|
391
|
-
| **Wildcard Action**
|
|
392
|
-
| **Wildcard Resource**
|
|
393
|
-
| **Full Wildcard**
|
|
394
|
-
| **Service Wildcards**
|
|
395
|
-
| **Sensitive Actions
|
|
396
|
-
| **
|
|
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. **
|
|
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**:
|
|
290
|
-
**Policy Version**: 1.
|
|
244
|
+
**Last Updated**: 2026-01-19
|
|
245
|
+
**Policy Version**: 1.1
|