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.
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/CHANGELOG.md +165 -10
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/PKG-INFO +57 -32
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/README.md +56 -31
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/SECURITY.md +4 -3
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/index.md +1 -1
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/security-checks.md +126 -22
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/configuration.md +73 -3
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/full-reference-config.yaml +140 -41
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/principal_validation.py +149 -10
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/validators.py +37 -11
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/condition_validators.py +175 -9
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/aws_global_conditions.py +5 -9
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/defaults.py +22 -8
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_aws_global_conditions.py +32 -24
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_condition_key_validation_check.py +63 -27
- iam_policy_validator-1.15.2/tests/checks/test_condition_type_mismatch.py +326 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_principal_validation_check.py +212 -6
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/uv.lock +167 -156
- iam_policy_validator-1.15.0/tests/checks/test_condition_type_mismatch.py +0 -125
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/ci.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/cleanup-prereleases.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/codeql.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/docs.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/pre-release.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/release.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.github/workflows/scorecard.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/.gitignore +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/LICENSE +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/Makefile +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/action.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/checks.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/exceptions.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/models.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/api-reference/sdk.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/changelog.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/development-setup.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/releasing.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/contributing/testing.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/architecture.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/best-practices.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/examples.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/custom-checks/tutorial.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/advanced.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/policy-utilities.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/quickstart.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/developer-guide/sdk/validation.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/first-validation.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/installation.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/getting-started/quickstart.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/includes/abbreviations.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/github-actions.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/gitlab-ci.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/mcp-server.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/integrations/pre-commit.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/stylesheets/extra.css +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/advanced-checks.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/checks/aws-validation.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/cli-reference.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/index.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/output-formats.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/docs/user-guide/troubleshooting.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/README.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/aws-service-definitions/iam.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/aws-service-definitions/s3.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/github-labels-config.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/minimal-validation-config.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/offline-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/configs/strict-security.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/custom-policy-checks.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/sarif-code-scanning.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/github-actions/validate-changed-files.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
- {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
- {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
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
- {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
- {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
- {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
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
- {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
- {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
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/README.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/SYSTEM_PROMPT.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/example_conversation.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/mcp-llm-instructions/organization_config.yaml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/lambda-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/s3-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/quick-start/user-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/cross-account-trust-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_resource_matching.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/action_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/condition_key_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/full_wildcard.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/mfa_condition_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/not_action_not_resource.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_structure.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/policy_type_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/sensitive_action.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/service_wildcard.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/set_operator_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/trust_policy_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/action_parser.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/policy_level_checks.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/wildcard_action.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/checks/wildcard_resource.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/cache.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/completion.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/download_services.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/mcp.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/query.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/commands/validate.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/cache.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/client.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/fetcher.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/parsers.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/patterns.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/aws_service/storage.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/check_registry.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/codeowners.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/aws_api.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/category_suggestions.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/check_documentation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/condition_requirements.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/config_loader.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/principal_requirements.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/sensitive_actions.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/service_principals.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/config/wildcards.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/constants.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/diff_parser.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/finding_fingerprint.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/enhanced.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignore_patterns.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignore_processor.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/ignored_findings.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/label_manager.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/models.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/pr_commenter.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/core/report.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/github_integration.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/models.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/server.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/session_config.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/templates/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/templates/builtin.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/generation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/org_config_tools.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/query.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/mcp/tools/validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/arn_matching.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/context.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/exceptions.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/helpers.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/policy_utils.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/query_utils.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/sdk/shortcuts.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/cache.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/regex.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/iam_validator/utils/terminal.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/mkdocs.yml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/pyproject.toml +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/README.md +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_action_validation_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_full_wildcard_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_mfa_condition_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_not_action_not_resource.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_resource_validation_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_filtering.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_suggestions.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_service_principal_wildcard.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_service_wildcard_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_sid_uniqueness_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_wildcard_action_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/checks/test_wildcard_resource_check.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/test_completion_command.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/commands/test_query_command.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/config/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/config/test_config_loader.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_action_resource_matching.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_aws_api_config.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_id_in_comments.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_id_injection.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_check_registry.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_codeowners.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_diff_parser.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_finding_fingerprint.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_ignore_patterns.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_ignored_findings.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_models.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_multipart_comments.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_policy_loader.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_policy_type_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_pr_commenter_diff_filtering.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_regex_utils.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_set_operator_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_detection.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_multiple_statements.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/core/test_trust_policy_validation.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_comment_deduplication.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_github_pagination.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/integrations/test_label_manager.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/__init__.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/conftest.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_custom_instructions.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_generation_tools.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_org_config.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_query_tools.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_server_integration.py +0 -0
- {iam_policy_validator-1.15.0 → iam_policy_validator-1.15.2}/tests/mcp/test_templates.py +0 -0
- {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
|
-
|
|
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
|
|
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.
|
|
255
|
-
| 1.
|
|
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.
|
|
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.
|
|
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
|
-
{
|
|
103
|
-
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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:
|
|
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
|
-
{
|
|
274
|
-
|
|
275
|
-
|
|
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
|
|
412
|
-
github-summary: true
|
|
413
|
-
fail-on-severity: high
|
|
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"]
|
|
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
|
|
681
|
-
| ------------------------------ |
|
|
682
|
-
| **Primary Purpose** | Pre-deployment validation
|
|
683
|
-
| **Use Case** | CI/CD policy scanning
|
|
684
|
-
| **Custom Security Rules** | ✅ Full support | ❌ 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
|
|
687
|
-
| **Organization Conditions** | ✅ IP, tags, encryption, etc. | ❌ No
|
|
688
|
-
| **CI/CD Ready** | ✅ GitHub Actions native | ⚠️ Manual setup
|
|
689
|
-
| **PR Line Comments** | ✅ Diff-aware | ❌ No
|
|
690
|
-
| **AWS Service Data** | ✅ Official API (auto-update) | ✅ Real AWS account data
|
|
691
|
-
| **Offline Mode** | ✅ Yes | ❌ Needs AWS account
|
|
692
|
-
| **Query Permissions** | ✅ Yes | ✅ Yes (different approach)
|
|
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
|
|