iam-policy-validator 1.14.2__tar.gz → 1.14.4__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.2 → iam_policy_validator-1.14.4}/PKG-INFO +1 -1
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/condition_key_validation.py +1 -1
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/validators.py +99 -8
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/aws_global_conditions.py +8 -4
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/constants.py +29 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/pr_commenter.py +58 -3
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/report.py +117 -7
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/integrations/github_integration.py +1 -1
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_condition_key_validation_check.py +195 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_multipart_comments.py +126 -1
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_pr_commenter_diff_filtering.py +160 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/ci.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/cleanup-prereleases.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/codeql.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/pre-release.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/release.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.github/workflows/scorecard.yml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.gitignore +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/.python-version +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/DOCS.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/LICENSE +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/Makefile +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/SECURITY.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/action.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/_manifest.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/_services.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/a2c.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/a4b.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/access-analyzer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/acm-pca.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/acm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/action-recommendations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/activate.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aiops.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/airflow.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/amplify.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/amplifybackend.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/amplifyuibuilder.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aoss.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/apigateway.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/app-integrations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appconfig.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appfabric.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appflow.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/application-autoscaling.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/application-signals.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/application-transformation.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/applicationinsights.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appmesh-preview.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appmesh.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/apprunner.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appstream.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appstudio.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/appsync.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/apptest.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aps.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/arc-region-switch.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/arc-zonal-shift.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/arsenal.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/artifact.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/athena.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/auditmanager.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/autoscaling-plans.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/autoscaling.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aws-marketplace-management.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aws-marketplace.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/aws-portal.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/awsconnector.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/b2bi.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/backup-gateway.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/backup-search.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/backup-storage.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/backup.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/batch.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bcm-dashboards.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bcm-data-exports.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bcm-pricing-calculator.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bcm-recommended-actions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bedrock-agentcore.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bedrock.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/billing.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/billingconductor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/braket.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/budgets.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/bugbust.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cases.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cassandra.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ce.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/chatbot.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/chime.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cleanrooms-ml.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cleanrooms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloud9.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/clouddirectory.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudformation.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudfront-keyvaluestore.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudfront.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudhsm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudsearch.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudshell.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudtrail-data.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudtrail.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cloudwatch.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeartifact.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codebuild.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codecatalyst.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codecommit.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeconnections.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codedeploy-commands-secure.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codedeploy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeguru-profiler.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeguru-reviewer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeguru-security.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codeguru.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codepipeline.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codestar-connections.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codestar-notifications.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codestar.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/codewhisperer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cognito-identity.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cognito-idp.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cognito-sync.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/comprehend.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/comprehendmedical.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/compute-optimizer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/config.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/connect-campaigns.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/connect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/consoleapp.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/consolidatedbilling.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/controlcatalog.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/controltower.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cost-optimization-hub.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/cur.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/customer-verification.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/databrew.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dataexchange.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/datapipeline.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/datasync.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/datazone.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dax.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dbqms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/deadline.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/deepcomposer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/deepracer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/detective.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/devicefarm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/devops-guru.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/directconnect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/discovery.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dlm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/docdb-elastic.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/drs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ds-data.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ds.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dsql.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/dynamodb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ebs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ec2-instance-connect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ec2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ec2messages.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ecr-public.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ecr.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ecs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/eks-auth.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/eks.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elasticache.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elasticbeanstalk.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elasticfilesystem.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elasticloadbalancing.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elasticmapreduce.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elastictranscoder.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elemental-activations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elemental-appliances-software.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elemental-support-cases.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/elemental-support-content.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/emr-containers.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/emr-serverless.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/entityresolution.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/es.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/events.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/evidently.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/evs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/execute-api.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/finspace-api.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/finspace.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/firehose.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/fis.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/fms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/forecast.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/frauddetector.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/freertos.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/freetier.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/fsx.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/gamelift.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/gameliftstreams.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/geo-maps.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/geo-places.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/geo-routes.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/geo.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/glacier.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/globalaccelerator.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/glue.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/grafana.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/greengrass.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/groundstation.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/groundtruthlabeling.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/guardduty.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/health.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/healthlake.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/honeycode.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iam.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/identity-sync.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/identitystore-auth.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/identitystore.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/imagebuilder.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/importexport.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/inspector-scan.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/inspector.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/inspector2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/internetmonitor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/invoicing.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iot-device-tester.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iot.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotanalytics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotdeviceadvisor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotevents.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotfleethub.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotfleetwise.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotjobsdata.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotmanagedintegrations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotsitewise.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iottwinmaker.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iotwireless.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iq-permission.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/iq.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ivs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ivschat.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kafka-cluster.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kafka.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kafkaconnect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kendra-ranking.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kendra.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kinesis.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kinesisanalytics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kinesisvideo.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/kms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lakeformation.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lambda.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/launchwizard.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lex.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/license-manager-linux-subscriptions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/license-manager-user-subscriptions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/license-manager.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lightsail.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/logs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lookoutequipment.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lookoutmetrics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/lookoutvision.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/m2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/machinelearning.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/macie2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/managedblockchain-query.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/managedblockchain.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mapcredits.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/marketplacecommerceanalytics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mechanicalturk.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediaconnect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediaconvert.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediaimport.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/medialive.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediapackage-vod.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediapackage.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediapackagev2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediastore.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mediatailor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/medical-imaging.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/memorydb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mgh.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mgn.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/migrationhub-orchestrator.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/migrationhub-strategy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mobileanalytics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mobiletargeting.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/monitron.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mpa.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/mq.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/neptune-db.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/neptune-graph.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/network-firewall.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/network-security-director.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/networkflowmonitor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/networkmanager-chat.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/networkmanager.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/networkmonitor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/nimble.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/notifications-contacts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/notifications.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/oam.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/observabilityadmin.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/odb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/omics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/one.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/opensearch.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/opsworks-cm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/opsworks.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/organizations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/osis.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/outposts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/panorama.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/partnercentral-account-management.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/partnercentral.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/payment-cryptography.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/payments.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pca-connector-ad.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pca-connector-scep.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pcs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/personalize.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pi.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pipes.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/polly.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/pricing.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/private-networks.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/profile.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/proton.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/purchase-orders.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/q.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/qapps.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/qbusiness.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/qdeveloper.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/qldb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/quicksight.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ram.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rbin.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rds-data.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rds-db.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rds.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/redshift-data.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/redshift-serverless.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/redshift.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/refactor-spaces.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rekognition.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/repostspace.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/resiliencehub.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/resource-explorer-2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/resource-explorer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/resource-groups.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rhelkb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/robomaker.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rolesanywhere.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53-recovery-cluster.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53-recovery-control-config.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53-recovery-readiness.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53domains.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53profiles.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/route53resolver.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rtbfabric.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/rum.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3-object-lambda.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3-outposts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3express.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3tables.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/s3vectors.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sagemaker-data-science-assistant.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sagemaker-geospatial.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sagemaker-mlflow.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sagemaker.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/savingsplans.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/scheduler.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/schemas.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/scn.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sdb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/secretsmanager.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/security-ir.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/securityhub.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/securitylake.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/serverlessrepo.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/servicecatalog.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/servicediscovery.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/serviceextract.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/servicequotas.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ses.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/shield.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/signer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/signin.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/simspaceweaver.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sms-voice.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sms.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/snow-device-management.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/snowball.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sns.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/social-messaging.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sqlworkbench.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sqs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm-contacts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm-guiconnect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm-incidents.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm-quicksetup.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm-sap.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssm.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ssmmessages.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sso-directory.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sso-oauth.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sso.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/states.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/storagegateway.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/support-console.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/support.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/supportapp.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/supportplans.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/sustainability.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/swf.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/synthetics.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/tag.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/tax.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/textract.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/thinclient.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/timestream-influxdb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/timestream.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/tiros.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/tnb.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/transcribe.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/transfer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/transform.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/translate.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/trustedadvisor.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/ts.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/user-subscriptions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/uxc.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/vendor-insights.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/verified-access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/verifiedpermissions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/voiceid.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/vpc-lattice-svcs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/vpc-lattice.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/vpce.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/waf-regional.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/waf.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/wafv2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/wam.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/wellarchitected.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/wickr.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/wisdom.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workdocs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/worklink.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workmail.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workmailmessageflow.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workspaces-instances.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workspaces-web.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/workspaces.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/aws_services/xray.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/ROADMAP.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/SDK.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/aws-api-configuration.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/aws-services-backup.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/check-reference.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/condition-requirements.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/configuration.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/custom-checks.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/development/PUBLISHING.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/development/pre-release-guide.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/github-actions-examples.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/github-actions-workflows.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/modular-configuration.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/privilege-escalation.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/python-library-usage.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/query-command.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/shell-completion.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/docs/smart-filtering.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/full-reference-config.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/github-labels-config.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/minimal-validation-config.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/offline-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/configs/strict-security.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/advanced_multi_condition_validator.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/encryption_required_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/mfa_required_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/region_restriction_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/tag_enforcement_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/custom_checks/time_based_access_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/custom-policy-checks.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/sarif-code-scanning.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/github-actions/validate-changed-files.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/example1_basic_usage.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/example2_config_file.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/example3_programmatic_config.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/example4_custom_condition_requirements.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/example5_query_aws_services.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/policies/my-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/policies/policy1.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/library-usage/policies/policy2.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/query-examples.sh +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/quick-start/lambda-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/quick-start/s3-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/quick-start/user-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/cross-account-trust-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/action_resource_matching.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/action_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/full_wildcard.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/mfa_condition_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/policy_structure.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/principal_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/sensitive_action.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/service_wildcard.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/utils/action_parser.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/utils/policy_level_checks.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/wildcard_action.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/checks/wildcard_resource.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/cache.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/completion.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/download_services.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/query.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/commands/validate.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/cache.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/client.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/fetcher.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/parsers.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/patterns.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/aws_service/storage.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/check_registry.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/codeowners.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/condition_validators.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/aws_api.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/category_suggestions.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/check_documentation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/condition_requirements.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/config_loader.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/defaults.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/principal_requirements.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/sensitive_actions.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/service_principals.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/config/wildcards.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/diff_parser.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/enhanced.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/ignore_processor.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/ignored_findings.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/label_manager.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/models.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/arn_matching.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/context.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/exceptions.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/helpers.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/policy_utils.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/query_utils.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/sdk/shortcuts.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/utils/cache.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/utils/regex.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/utils/terminal.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/pyproject.toml +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/scripts/download_aws_services.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/scripts/sync_defaults_from_yaml.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/README.md +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_action_validation_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_aws_global_conditions.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_full_wildcard_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_mfa_condition_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_principal_validation_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_resource_validation_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_sensitive_action_filtering.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_sensitive_action_suggestions.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_service_principal_wildcard.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_service_wildcard_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_sid_uniqueness_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_wildcard_action_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/checks/test_wildcard_resource_check.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/commands/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/commands/test_completion_command.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/commands/test_query_command.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/config/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/config/test_config_loader.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_action_resource_matching.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_aws_api_config.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_check_id_in_comments.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_check_id_injection.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_check_registry.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_codeowners.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_diff_parser.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_ignored_findings.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_models.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_policy_loader.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_regex_utils.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_trust_policy_detection.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_trust_policy_multiple_statements.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/core/test_trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/integrations/test_comment_deduplication.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/integrations/test_github_pagination.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/tests/integrations/test_label_manager.py +0 -0
- {iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iam-policy-validator
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.4
|
|
4
4
|
Summary: Validate AWS IAM policies for correctness and security using AWS Service Reference API
|
|
5
5
|
Project-URL: Homepage, https://github.com/boogy/iam-policy-validator
|
|
6
6
|
Project-URL: Documentation, https://github.com/boogy/iam-policy-validator/tree/main/docs
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
This file is the single source of truth for the package version.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "1.14.
|
|
6
|
+
__version__ = "1.14.4"
|
|
7
7
|
# Parse version, handling pre-release suffixes like -rc, -alpha, -beta
|
|
8
8
|
_version_base = __version__.split("-", maxsplit=1)[0] # Remove pre-release suffix if present
|
|
9
9
|
__version_info__ = tuple(int(part) for part in _version_base.split("."))
|
|
@@ -37,7 +37,7 @@ class ConditionKeyValidationCheck(PolicyCheck):
|
|
|
37
37
|
resources = statement.get_resources()
|
|
38
38
|
|
|
39
39
|
# Extract all condition keys from all condition operators
|
|
40
|
-
for
|
|
40
|
+
for _, conditions in statement.condition.items():
|
|
41
41
|
for condition_key in conditions.keys():
|
|
42
42
|
# Validate this condition key against each action in the statement
|
|
43
43
|
for action in actions:
|
|
@@ -5,14 +5,104 @@ including actions, condition keys, and ARN formats.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import logging
|
|
8
|
+
import re
|
|
8
9
|
from dataclasses import dataclass
|
|
9
10
|
from typing import Any
|
|
10
11
|
|
|
11
12
|
from iam_validator.core.aws_service.parsers import ServiceParser
|
|
13
|
+
from iam_validator.core.constants import (
|
|
14
|
+
AWS_TAG_KEY_ALLOWED_CHARS,
|
|
15
|
+
AWS_TAG_KEY_MAX_LENGTH,
|
|
16
|
+
AWS_TAG_KEY_PLACEHOLDERS,
|
|
17
|
+
)
|
|
12
18
|
from iam_validator.core.models import ServiceDetail
|
|
13
19
|
|
|
14
20
|
logger = logging.getLogger(__name__)
|
|
15
21
|
|
|
22
|
+
# Pre-compiled regex for AWS tag key validation
|
|
23
|
+
# Uses centralized constants from iam_validator.core.constants
|
|
24
|
+
_TAG_KEY_PATTERN = re.compile(rf"^[{AWS_TAG_KEY_ALLOWED_CHARS}]{{1,{AWS_TAG_KEY_MAX_LENGTH}}}$")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _is_valid_tag_key(tag_key: str) -> bool:
|
|
28
|
+
"""Validate an AWS tag key format.
|
|
29
|
+
|
|
30
|
+
AWS tag keys must:
|
|
31
|
+
- Be 1-128 characters long
|
|
32
|
+
- Contain only: letters, numbers, spaces, and + - = . _ : / @
|
|
33
|
+
- Not be empty
|
|
34
|
+
|
|
35
|
+
Note: The 'aws:' prefix check is not done here as it's for the condition key prefix,
|
|
36
|
+
not the tag key portion (e.g., in 'ssm:resourceTag/owner', 'owner' is the tag key).
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
tag_key: The tag key portion to validate
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
True if valid AWS tag key format
|
|
43
|
+
"""
|
|
44
|
+
if not tag_key or len(tag_key) > AWS_TAG_KEY_MAX_LENGTH:
|
|
45
|
+
return False
|
|
46
|
+
return bool(_TAG_KEY_PATTERN.match(tag_key))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _matches_condition_key_pattern(condition_key: str, pattern: str) -> bool:
|
|
50
|
+
"""Check if a condition key matches a pattern with tag-key placeholders.
|
|
51
|
+
|
|
52
|
+
AWS service definitions use patterns like:
|
|
53
|
+
- `ssm:resourceTag/tag-key` or `ssm:resourceTag/${TagKey}` to match `ssm:resourceTag/owner`
|
|
54
|
+
- `aws:ResourceTag/${TagKey}` to match `aws:ResourceTag/Environment`
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
condition_key: The actual condition key from the policy (e.g., "ssm:resourceTag/owner")
|
|
58
|
+
pattern: The pattern from AWS service definition (e.g., "ssm:resourceTag/tag-key")
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
True if condition_key matches the pattern
|
|
62
|
+
"""
|
|
63
|
+
# Exact match (fast path)
|
|
64
|
+
if condition_key == pattern:
|
|
65
|
+
return True
|
|
66
|
+
|
|
67
|
+
# Check for tag-key placeholder patterns
|
|
68
|
+
for tag_placeholder in AWS_TAG_KEY_PLACEHOLDERS:
|
|
69
|
+
if tag_placeholder in pattern:
|
|
70
|
+
# Extract the prefix before the placeholder
|
|
71
|
+
prefix = pattern.split(tag_placeholder, 1)[0]
|
|
72
|
+
prefix_with_slash = prefix + "/"
|
|
73
|
+
# Check if condition_key starts with prefix and has a tag key after it
|
|
74
|
+
if condition_key.startswith(prefix_with_slash):
|
|
75
|
+
# Validate tag key format per AWS constraints
|
|
76
|
+
tag_key = condition_key[len(prefix_with_slash) :]
|
|
77
|
+
if _is_valid_tag_key(tag_key):
|
|
78
|
+
return True
|
|
79
|
+
|
|
80
|
+
return False
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _condition_key_in_list(condition_key: str, condition_keys: list[str]) -> bool:
|
|
84
|
+
"""Check if a condition key matches any key in the list, supporting patterns.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
condition_key: The condition key to check
|
|
88
|
+
condition_keys: List of condition keys (may include patterns)
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
True if condition_key matches any entry in the list
|
|
92
|
+
"""
|
|
93
|
+
# Fast path: check for exact match first (most common case)
|
|
94
|
+
if condition_key in condition_keys:
|
|
95
|
+
return True
|
|
96
|
+
|
|
97
|
+
# Slower path: check patterns only if no exact match
|
|
98
|
+
for pattern in condition_keys:
|
|
99
|
+
# Skip exact matches (already checked above)
|
|
100
|
+
if pattern == condition_key:
|
|
101
|
+
continue
|
|
102
|
+
if _matches_condition_key_pattern(condition_key, pattern):
|
|
103
|
+
return True
|
|
104
|
+
return False
|
|
105
|
+
|
|
16
106
|
|
|
17
107
|
@dataclass
|
|
18
108
|
class ConditionKeyValidationResult:
|
|
@@ -134,7 +224,7 @@ class ServiceValidator:
|
|
|
134
224
|
action: str,
|
|
135
225
|
condition_key: str,
|
|
136
226
|
service_detail: ServiceDetail,
|
|
137
|
-
resources: list[str] | None = None,
|
|
227
|
+
resources: list[str] | None = None, # pylint: disable=unused-argument - kept for API compatibility
|
|
138
228
|
) -> ConditionKeyValidationResult:
|
|
139
229
|
"""Validate condition key against action and optionally resource types.
|
|
140
230
|
|
|
@@ -173,22 +263,23 @@ class ServiceValidator:
|
|
|
173
263
|
error_message=f"Invalid AWS global condition key: `{condition_key}`.",
|
|
174
264
|
)
|
|
175
265
|
|
|
176
|
-
# Check service-specific condition keys
|
|
177
|
-
if
|
|
266
|
+
# Check service-specific condition keys (with pattern matching for tag keys)
|
|
267
|
+
if service_detail.condition_keys and _condition_key_in_list(
|
|
268
|
+
condition_key, list(service_detail.condition_keys.keys())
|
|
269
|
+
):
|
|
178
270
|
return ConditionKeyValidationResult(is_valid=True)
|
|
179
271
|
|
|
180
272
|
# Check action-specific condition keys
|
|
181
273
|
if action_name in service_detail.actions:
|
|
182
274
|
action_detail = service_detail.actions[action_name]
|
|
183
|
-
if (
|
|
184
|
-
action_detail.action_condition_keys
|
|
185
|
-
and condition_key in action_detail.action_condition_keys
|
|
275
|
+
if action_detail.action_condition_keys and _condition_key_in_list(
|
|
276
|
+
condition_key, action_detail.action_condition_keys
|
|
186
277
|
):
|
|
187
278
|
return ConditionKeyValidationResult(is_valid=True)
|
|
188
279
|
|
|
189
280
|
# Check resource-specific condition keys
|
|
190
281
|
# Get resource types required by this action
|
|
191
|
-
if
|
|
282
|
+
if action_detail.resources:
|
|
192
283
|
for res_req in action_detail.resources:
|
|
193
284
|
resource_name = res_req.get("Name", "")
|
|
194
285
|
if not resource_name:
|
|
@@ -197,7 +288,7 @@ class ServiceValidator:
|
|
|
197
288
|
# Look up resource type definition
|
|
198
289
|
resource_type = service_detail.resources.get(resource_name)
|
|
199
290
|
if resource_type and resource_type.condition_keys:
|
|
200
|
-
if condition_key
|
|
291
|
+
if _condition_key_in_list(condition_key, resource_type.condition_keys):
|
|
201
292
|
return ConditionKeyValidationResult(is_valid=True)
|
|
202
293
|
|
|
203
294
|
# If it's a global key but the action has specific condition keys defined,
|
|
@@ -11,6 +11,8 @@ Last updated: 2025-01-17
|
|
|
11
11
|
import re
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
14
|
+
from iam_validator.core.constants import AWS_TAG_KEY_ALLOWED_CHARS
|
|
15
|
+
|
|
14
16
|
# AWS Global Condition Keys with Type Information
|
|
15
17
|
# These condition keys are available for use in IAM policies across all AWS services
|
|
16
18
|
# Format: {key: type} where type is one of: String, ARN, Bool, Date, IPAddress, Numeric
|
|
@@ -71,17 +73,18 @@ AWS_GLOBAL_CONDITION_KEYS = {
|
|
|
71
73
|
|
|
72
74
|
# Patterns that should be recognized (wildcards and tag-based keys)
|
|
73
75
|
# These allow things like aws:RequestTag/Department or aws:PrincipalTag/Environment
|
|
76
|
+
# Uses centralized tag key character class from constants
|
|
74
77
|
AWS_CONDITION_KEY_PATTERNS = [
|
|
75
78
|
{
|
|
76
|
-
"pattern":
|
|
79
|
+
"pattern": rf"^aws:RequestTag/[{AWS_TAG_KEY_ALLOWED_CHARS}]+$",
|
|
77
80
|
"description": "Tag keys in the request (for tag-based access control)",
|
|
78
81
|
},
|
|
79
82
|
{
|
|
80
|
-
"pattern":
|
|
83
|
+
"pattern": rf"^aws:ResourceTag/[{AWS_TAG_KEY_ALLOWED_CHARS}]+$",
|
|
81
84
|
"description": "Tags on the resource being accessed",
|
|
82
85
|
},
|
|
83
86
|
{
|
|
84
|
-
"pattern":
|
|
87
|
+
"pattern": rf"^aws:PrincipalTag/[{AWS_TAG_KEY_ALLOWED_CHARS}]+$",
|
|
85
88
|
"description": "Tags attached to the principal making the request",
|
|
86
89
|
},
|
|
87
90
|
]
|
|
@@ -154,7 +157,8 @@ _global_conditions_instance = None
|
|
|
154
157
|
|
|
155
158
|
def get_global_conditions() -> AWSGlobalConditions:
|
|
156
159
|
"""Get singleton instance of AWSGlobalConditions."""
|
|
157
|
-
global _global_conditions_instance
|
|
160
|
+
global _global_conditions_instance # pylint: disable=global-statement
|
|
161
|
+
|
|
158
162
|
if _global_conditions_instance is None:
|
|
159
163
|
_global_conditions_instance = AWSGlobalConditions()
|
|
160
164
|
return _global_conditions_instance
|
|
@@ -147,3 +147,32 @@ RCP_SUPPORTED_SERVICES = frozenset(
|
|
|
147
147
|
|
|
148
148
|
# AWS Service Authorization Reference (for finding valid actions, resources, and condition keys)
|
|
149
149
|
AWS_SERVICE_AUTH_REF_URL = "https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html"
|
|
150
|
+
|
|
151
|
+
# ============================================================================
|
|
152
|
+
# AWS Tag Constraints
|
|
153
|
+
# ============================================================================
|
|
154
|
+
# Reference: https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html
|
|
155
|
+
|
|
156
|
+
# --- Tag Key Constraints ---
|
|
157
|
+
# Allowed characters in AWS tag keys: letters, numbers, spaces, and + - = . _ : / @
|
|
158
|
+
# This is the character class for use in regex patterns
|
|
159
|
+
AWS_TAG_KEY_ALLOWED_CHARS = r"a-zA-Z0-9 +\-=._:/@"
|
|
160
|
+
|
|
161
|
+
# Maximum length for AWS tag keys (per AWS documentation)
|
|
162
|
+
AWS_TAG_KEY_MAX_LENGTH = 128
|
|
163
|
+
|
|
164
|
+
# Tag-key placeholder patterns used in AWS service definitions
|
|
165
|
+
# These patterns indicate where a tag key should be substituted
|
|
166
|
+
AWS_TAG_KEY_PLACEHOLDERS = ("/tag-key", "/${TagKey}", "/${tag-key}")
|
|
167
|
+
|
|
168
|
+
# --- Tag Value Constraints ---
|
|
169
|
+
# Allowed characters in AWS tag values: letters, numbers, spaces, and + - = . _ : / @
|
|
170
|
+
# Same character set as tag keys
|
|
171
|
+
AWS_TAG_VALUE_ALLOWED_CHARS = r"a-zA-Z0-9 +\-=._:/@"
|
|
172
|
+
|
|
173
|
+
# Maximum length for AWS tag values (per AWS documentation)
|
|
174
|
+
# Note: Tag values can be empty (minimum 0), unlike keys which must have at least 1 char
|
|
175
|
+
AWS_TAG_VALUE_MAX_LENGTH = 256
|
|
176
|
+
|
|
177
|
+
# Minimum length for AWS tag values (can be empty)
|
|
178
|
+
AWS_TAG_VALUE_MIN_LENGTH = 0
|
{iam_policy_validator-1.14.2 → iam_policy_validator-1.14.4}/iam_validator/core/pr_commenter.py
RENAMED
|
@@ -17,7 +17,7 @@ from iam_validator.core.diff_parser import DiffParser
|
|
|
17
17
|
from iam_validator.core.label_manager import LabelManager
|
|
18
18
|
from iam_validator.core.models import ValidationIssue, ValidationReport
|
|
19
19
|
from iam_validator.core.policy_loader import PolicyLineMap, PolicyLoader
|
|
20
|
-
from iam_validator.core.report import ReportGenerator
|
|
20
|
+
from iam_validator.core.report import IgnoredFindingInfo, ReportGenerator
|
|
21
21
|
from iam_validator.integrations.github_integration import GitHubIntegration, ReviewEvent
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
@@ -96,6 +96,8 @@ class PRCommenter:
|
|
|
96
96
|
self._context_issues: list[ContextIssue] = []
|
|
97
97
|
# Track ignored finding IDs for the current run
|
|
98
98
|
self._ignored_finding_ids: frozenset[str] = frozenset()
|
|
99
|
+
# Store full ignored findings for display in summary
|
|
100
|
+
self._ignored_findings: dict[str, Any] = {}
|
|
99
101
|
# Cache for PolicyLineMap per file (for field-level line detection)
|
|
100
102
|
self._policy_line_maps: dict[str, PolicyLineMap] = {}
|
|
101
103
|
|
|
@@ -155,8 +157,28 @@ class PRCommenter:
|
|
|
155
157
|
generator = ReportGenerator()
|
|
156
158
|
# Pass ignored count to show in summary
|
|
157
159
|
ignored_count = len(self._ignored_finding_ids) if self._ignored_finding_ids else 0
|
|
160
|
+
|
|
161
|
+
# Convert ignored findings to IgnoredFindingInfo for display
|
|
162
|
+
ignored_findings_info: list[IgnoredFindingInfo] = []
|
|
163
|
+
if self._ignored_findings:
|
|
164
|
+
for finding in self._ignored_findings.values():
|
|
165
|
+
ignored_findings_info.append(
|
|
166
|
+
IgnoredFindingInfo(
|
|
167
|
+
file_path=finding.file_path,
|
|
168
|
+
issue_type=finding.issue_type,
|
|
169
|
+
ignored_by=finding.ignored_by,
|
|
170
|
+
reason=finding.reason,
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Determine if all blocking issues are ignored
|
|
175
|
+
all_blocking_ignored = self._are_all_blocking_issues_ignored(report)
|
|
176
|
+
|
|
158
177
|
comment_parts = generator.generate_github_comment_parts(
|
|
159
|
-
report,
|
|
178
|
+
report,
|
|
179
|
+
ignored_count=ignored_count,
|
|
180
|
+
ignored_findings=ignored_findings_info if ignored_findings_info else None,
|
|
181
|
+
all_blocking_ignored=all_blocking_ignored,
|
|
160
182
|
)
|
|
161
183
|
|
|
162
184
|
# Post all parts using the multipart method
|
|
@@ -694,7 +716,10 @@ class PRCommenter:
|
|
|
694
716
|
)
|
|
695
717
|
|
|
696
718
|
store = IgnoredFindingsStore(self.github)
|
|
697
|
-
|
|
719
|
+
# Load full ignored findings for display in summary
|
|
720
|
+
self._ignored_findings = await store.load()
|
|
721
|
+
# Also get just the IDs for fast lookup
|
|
722
|
+
self._ignored_finding_ids = frozenset(self._ignored_findings.keys())
|
|
698
723
|
if self._ignored_finding_ids:
|
|
699
724
|
logger.debug(f"Loaded {len(self._ignored_finding_ids)} ignored finding(s)")
|
|
700
725
|
|
|
@@ -718,6 +743,36 @@ class PRCommenter:
|
|
|
718
743
|
fingerprint = FindingFingerprint.from_issue(issue, file_path)
|
|
719
744
|
return fingerprint.to_hash() in self._ignored_finding_ids
|
|
720
745
|
|
|
746
|
+
def _are_all_blocking_issues_ignored(self, report: ValidationReport) -> bool:
|
|
747
|
+
"""Check if all blocking issues (based on fail_on_severities) are ignored.
|
|
748
|
+
|
|
749
|
+
Args:
|
|
750
|
+
report: The validation report
|
|
751
|
+
|
|
752
|
+
Returns:
|
|
753
|
+
True if there are no unignored blocking issues (i.e., all blocking
|
|
754
|
+
issues have been ignored, or there were no blocking issues to begin with)
|
|
755
|
+
"""
|
|
756
|
+
if not self._ignored_finding_ids:
|
|
757
|
+
# No ignored findings - check if there are any blocking issues at all
|
|
758
|
+
for result in report.results:
|
|
759
|
+
for issue in result.issues:
|
|
760
|
+
if issue.severity in self.fail_on_severities:
|
|
761
|
+
return False
|
|
762
|
+
return True
|
|
763
|
+
|
|
764
|
+
# Check each blocking issue to see if it's ignored
|
|
765
|
+
for result in report.results:
|
|
766
|
+
relative_path = self._make_relative_path(result.policy_file)
|
|
767
|
+
if not relative_path:
|
|
768
|
+
continue
|
|
769
|
+
for issue in result.issues:
|
|
770
|
+
if issue.severity in self.fail_on_severities:
|
|
771
|
+
if not self._is_issue_ignored(issue, relative_path):
|
|
772
|
+
return False
|
|
773
|
+
|
|
774
|
+
return True
|
|
775
|
+
|
|
721
776
|
|
|
722
777
|
async def post_report_to_pr(
|
|
723
778
|
report_file: str,
|
|
@@ -5,6 +5,7 @@ including console output, JSON, and GitHub-flavored markdown for PR comments.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
import logging
|
|
8
|
+
from dataclasses import dataclass
|
|
8
9
|
|
|
9
10
|
from rich.console import Console
|
|
10
11
|
from rich.panel import Panel
|
|
@@ -29,6 +30,24 @@ from iam_validator.core.models import (
|
|
|
29
30
|
ValidationReport,
|
|
30
31
|
)
|
|
31
32
|
|
|
33
|
+
|
|
34
|
+
@dataclass
|
|
35
|
+
class IgnoredFindingInfo:
|
|
36
|
+
"""Information about an ignored finding for display in summary.
|
|
37
|
+
|
|
38
|
+
Attributes:
|
|
39
|
+
file_path: Path to the policy file
|
|
40
|
+
issue_type: Type of issue (e.g., "invalid_action")
|
|
41
|
+
ignored_by: Username who ignored the finding
|
|
42
|
+
reason: Optional reason provided by the user
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
file_path: str
|
|
46
|
+
issue_type: str
|
|
47
|
+
ignored_by: str
|
|
48
|
+
reason: str | None = None
|
|
49
|
+
|
|
50
|
+
|
|
32
51
|
logger = logging.getLogger(__name__)
|
|
33
52
|
|
|
34
53
|
|
|
@@ -239,6 +258,8 @@ class ReportGenerator:
|
|
|
239
258
|
report: ValidationReport,
|
|
240
259
|
max_length_per_part: int = constants.GITHUB_COMMENT_SPLIT_LIMIT,
|
|
241
260
|
ignored_count: int = 0,
|
|
261
|
+
ignored_findings: list[IgnoredFindingInfo] | None = None,
|
|
262
|
+
all_blocking_ignored: bool = False,
|
|
242
263
|
) -> list[str]:
|
|
243
264
|
"""Generate GitHub PR comment(s), splitting into multiple parts if needed.
|
|
244
265
|
|
|
@@ -246,6 +267,8 @@ class ReportGenerator:
|
|
|
246
267
|
report: Validation report
|
|
247
268
|
max_length_per_part: Maximum character length per comment part (default from GITHUB_COMMENT_SPLIT_LIMIT)
|
|
248
269
|
ignored_count: Number of findings that were ignored (will be shown in summary)
|
|
270
|
+
ignored_findings: List of ignored finding details for display in summary
|
|
271
|
+
all_blocking_ignored: True if all blocking issues were ignored (shows "Passed" status)
|
|
249
272
|
|
|
250
273
|
Returns:
|
|
251
274
|
List of comment parts (each under max_length_per_part)
|
|
@@ -257,13 +280,19 @@ class ReportGenerator:
|
|
|
257
280
|
if estimated_size <= max_length_per_part:
|
|
258
281
|
# Try single comment
|
|
259
282
|
single_comment = self.generate_github_comment(
|
|
260
|
-
report,
|
|
283
|
+
report,
|
|
284
|
+
max_length=max_length_per_part * 2,
|
|
285
|
+
ignored_count=ignored_count,
|
|
286
|
+
ignored_findings=ignored_findings,
|
|
287
|
+
all_blocking_ignored=all_blocking_ignored,
|
|
261
288
|
)
|
|
262
289
|
if len(single_comment) <= max_length_per_part:
|
|
263
290
|
return [single_comment]
|
|
264
291
|
|
|
265
292
|
# Need to split into multiple parts
|
|
266
|
-
return self._generate_split_comments(
|
|
293
|
+
return self._generate_split_comments(
|
|
294
|
+
report, max_length_per_part, ignored_count, ignored_findings, all_blocking_ignored
|
|
295
|
+
)
|
|
267
296
|
|
|
268
297
|
def _estimate_report_size(self, report: ValidationReport) -> int:
|
|
269
298
|
"""Estimate the size of the report in characters.
|
|
@@ -280,7 +309,12 @@ class ReportGenerator:
|
|
|
280
309
|
)
|
|
281
310
|
|
|
282
311
|
def _generate_split_comments(
|
|
283
|
-
self,
|
|
312
|
+
self,
|
|
313
|
+
report: ValidationReport,
|
|
314
|
+
max_length: int,
|
|
315
|
+
ignored_count: int = 0,
|
|
316
|
+
ignored_findings: list[IgnoredFindingInfo] | None = None,
|
|
317
|
+
all_blocking_ignored: bool = False,
|
|
284
318
|
) -> list[str]:
|
|
285
319
|
"""Split a large report into multiple comment parts.
|
|
286
320
|
|
|
@@ -288,6 +322,8 @@ class ReportGenerator:
|
|
|
288
322
|
report: Validation report
|
|
289
323
|
max_length: Maximum length per part
|
|
290
324
|
ignored_count: Number of ignored findings to show in summary
|
|
325
|
+
ignored_findings: List of ignored finding details for display
|
|
326
|
+
all_blocking_ignored: True if all blocking issues were ignored
|
|
291
327
|
|
|
292
328
|
Returns:
|
|
293
329
|
List of comment parts
|
|
@@ -295,7 +331,9 @@ class ReportGenerator:
|
|
|
295
331
|
parts: list[str] = []
|
|
296
332
|
|
|
297
333
|
# Generate header (will be in first part only)
|
|
298
|
-
header_lines = self._generate_header(
|
|
334
|
+
header_lines = self._generate_header(
|
|
335
|
+
report, ignored_count, ignored_findings, all_blocking_ignored
|
|
336
|
+
)
|
|
299
337
|
header_content = "\n".join(header_lines)
|
|
300
338
|
|
|
301
339
|
# Generate footer (will be in all parts)
|
|
@@ -388,17 +426,27 @@ class ReportGenerator:
|
|
|
388
426
|
|
|
389
427
|
return parts
|
|
390
428
|
|
|
391
|
-
def _generate_header(
|
|
429
|
+
def _generate_header(
|
|
430
|
+
self,
|
|
431
|
+
report: ValidationReport,
|
|
432
|
+
ignored_count: int = 0,
|
|
433
|
+
ignored_findings: list[IgnoredFindingInfo] | None = None,
|
|
434
|
+
all_blocking_ignored: bool = False,
|
|
435
|
+
) -> list[str]:
|
|
392
436
|
"""Generate the comment header with summary.
|
|
393
437
|
|
|
394
438
|
Args:
|
|
395
439
|
report: Validation report
|
|
396
440
|
ignored_count: Number of findings that were ignored
|
|
441
|
+
ignored_findings: List of ignored finding details for display
|
|
442
|
+
all_blocking_ignored: True if all blocking issues were ignored (shows "Passed" status)
|
|
397
443
|
"""
|
|
398
444
|
lines = []
|
|
399
445
|
|
|
400
446
|
# Title with emoji and status badge
|
|
401
|
-
if
|
|
447
|
+
# Pass if: no invalid policies, OR all blocking issues were ignored
|
|
448
|
+
is_passing = report.invalid_policies == 0 or all_blocking_ignored
|
|
449
|
+
if is_passing:
|
|
402
450
|
lines.append("# 🎉 IAM Policy Validation Passed!")
|
|
403
451
|
status_badge = (
|
|
404
452
|
""
|
|
@@ -456,6 +504,56 @@ class ReportGenerator:
|
|
|
456
504
|
lines.append(f"| 🔵 **Info** | {infos} |")
|
|
457
505
|
lines.append("")
|
|
458
506
|
|
|
507
|
+
# Ignored findings section
|
|
508
|
+
if ignored_findings:
|
|
509
|
+
lines.extend(self._generate_ignored_findings_section(ignored_findings))
|
|
510
|
+
|
|
511
|
+
return lines
|
|
512
|
+
|
|
513
|
+
def _generate_ignored_findings_section(
|
|
514
|
+
self, ignored_findings: list[IgnoredFindingInfo]
|
|
515
|
+
) -> list[str]:
|
|
516
|
+
"""Generate the ignored findings section for the summary comment.
|
|
517
|
+
|
|
518
|
+
Args:
|
|
519
|
+
ignored_findings: List of ignored finding details
|
|
520
|
+
|
|
521
|
+
Returns:
|
|
522
|
+
List of markdown lines for the section
|
|
523
|
+
"""
|
|
524
|
+
lines = []
|
|
525
|
+
lines.append("### 🔕 Ignored Findings")
|
|
526
|
+
lines.append("")
|
|
527
|
+
lines.append(
|
|
528
|
+
"> The following findings were ignored by authorized users and are excluded from validation:"
|
|
529
|
+
)
|
|
530
|
+
lines.append("")
|
|
531
|
+
|
|
532
|
+
lines.append("<details>")
|
|
533
|
+
lines.append(f"<summary>View {len(ignored_findings)} ignored finding(s)</summary>")
|
|
534
|
+
lines.append("")
|
|
535
|
+
|
|
536
|
+
lines.append("| File | Issue Type | Ignored By | Reason |")
|
|
537
|
+
lines.append("|------|------------|------------|--------|")
|
|
538
|
+
|
|
539
|
+
for finding in ignored_findings:
|
|
540
|
+
# Truncate file path if too long
|
|
541
|
+
file_display = finding.file_path
|
|
542
|
+
if len(file_display) > 50:
|
|
543
|
+
file_display = "..." + file_display[-47:]
|
|
544
|
+
|
|
545
|
+
reason_display = finding.reason if finding.reason else "-"
|
|
546
|
+
if len(reason_display) > 30:
|
|
547
|
+
reason_display = reason_display[:27] + "..."
|
|
548
|
+
|
|
549
|
+
lines.append(
|
|
550
|
+
f"| `{file_display}` | `{finding.issue_type}` | @{finding.ignored_by} | {reason_display} |"
|
|
551
|
+
)
|
|
552
|
+
|
|
553
|
+
lines.append("")
|
|
554
|
+
lines.append("</details>")
|
|
555
|
+
lines.append("")
|
|
556
|
+
|
|
459
557
|
return lines
|
|
460
558
|
|
|
461
559
|
def _generate_footer(self) -> str:
|
|
@@ -540,6 +638,8 @@ class ReportGenerator:
|
|
|
540
638
|
report: ValidationReport,
|
|
541
639
|
max_length: int = constants.GITHUB_MAX_COMMENT_LENGTH,
|
|
542
640
|
ignored_count: int = 0,
|
|
641
|
+
ignored_findings: list[IgnoredFindingInfo] | None = None,
|
|
642
|
+
all_blocking_ignored: bool = False,
|
|
543
643
|
) -> str:
|
|
544
644
|
"""Generate a GitHub-flavored markdown comment for PR reviews.
|
|
545
645
|
|
|
@@ -547,6 +647,8 @@ class ReportGenerator:
|
|
|
547
647
|
report: Validation report
|
|
548
648
|
max_length: Maximum character length (default from GITHUB_MAX_COMMENT_LENGTH constant)
|
|
549
649
|
ignored_count: Number of findings that were ignored (will be shown in summary)
|
|
650
|
+
ignored_findings: List of ignored finding details for display in summary
|
|
651
|
+
all_blocking_ignored: True if all blocking issues were ignored (shows "Passed" status)
|
|
550
652
|
|
|
551
653
|
Returns:
|
|
552
654
|
Markdown formatted string
|
|
@@ -554,8 +656,12 @@ class ReportGenerator:
|
|
|
554
656
|
lines = []
|
|
555
657
|
|
|
556
658
|
# Header with emoji and status badge
|
|
659
|
+
# Pass if: no invalid policies, OR all blocking issues were ignored
|
|
557
660
|
has_parsing_errors = len(report.parsing_errors) > 0
|
|
558
|
-
|
|
661
|
+
is_passing = (
|
|
662
|
+
report.invalid_policies == 0 or all_blocking_ignored
|
|
663
|
+
) and not has_parsing_errors
|
|
664
|
+
if is_passing:
|
|
559
665
|
lines.append("# 🎉 IAM Policy Validation Passed!")
|
|
560
666
|
status_badge = (
|
|
561
667
|
""
|
|
@@ -613,6 +719,10 @@ class ReportGenerator:
|
|
|
613
719
|
lines.append(f"| 🔵 **Info** | {infos} |")
|
|
614
720
|
lines.append("")
|
|
615
721
|
|
|
722
|
+
# Ignored findings section
|
|
723
|
+
if ignored_findings:
|
|
724
|
+
lines.extend(self._generate_ignored_findings_section(ignored_findings))
|
|
725
|
+
|
|
616
726
|
# Parsing errors section (if any)
|
|
617
727
|
if report.parsing_errors:
|
|
618
728
|
lines.append("### ⚠️ Parsing Errors")
|