iam-policy-validator 1.14.3__tar.gz → 1.14.5__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.3 → iam_policy_validator-1.14.5}/PKG-INFO +1 -1
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/label_manager.py +30 -8
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/pr_commenter.py +69 -4
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/report.py +117 -7
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/integrations/github_integration.py +20 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_multipart_comments.py +126 -1
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_pr_commenter_diff_filtering.py +160 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/integrations/test_label_manager.py +185 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/ci.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/cleanup-prereleases.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/codeql.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/pre-release.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/release.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.github/workflows/scorecard.yml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.gitignore +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/.python-version +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/DOCS.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/LICENSE +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/Makefile +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/SECURITY.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/action.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/_manifest.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/_services.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/a2c.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/a4b.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/access-analyzer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/acm-pca.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/acm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/action-recommendations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/activate.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aiops.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/airflow.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/amplify.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/amplifybackend.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/amplifyuibuilder.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aoss.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/apigateway.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/app-integrations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appconfig.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appfabric.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appflow.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/application-autoscaling.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/application-signals.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/application-transformation.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/applicationinsights.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appmesh-preview.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appmesh.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/apprunner.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appstream.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appstudio.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/appsync.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/apptest.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aps.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/arc-region-switch.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/arc-zonal-shift.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/arsenal.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/artifact.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/athena.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/auditmanager.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/autoscaling-plans.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/autoscaling.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aws-marketplace-management.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aws-marketplace.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/aws-portal.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/awsconnector.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/b2bi.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/backup-gateway.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/backup-search.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/backup-storage.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/backup.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/batch.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bcm-dashboards.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bcm-data-exports.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bcm-pricing-calculator.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bcm-recommended-actions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bedrock-agentcore.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bedrock.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/billing.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/billingconductor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/braket.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/budgets.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/bugbust.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cases.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cassandra.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ce.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/chatbot.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/chime.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cleanrooms-ml.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cleanrooms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloud9.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/clouddirectory.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudformation.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudfront-keyvaluestore.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudfront.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudhsm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudsearch.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudshell.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudtrail-data.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudtrail.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cloudwatch.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeartifact.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codebuild.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codecatalyst.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codecommit.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeconnections.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codedeploy-commands-secure.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codedeploy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeguru-profiler.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeguru-reviewer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeguru-security.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codeguru.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codepipeline.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codestar-connections.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codestar-notifications.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codestar.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/codewhisperer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cognito-identity.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cognito-idp.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cognito-sync.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/comprehend.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/comprehendmedical.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/compute-optimizer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/config.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/connect-campaigns.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/connect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/consoleapp.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/consolidatedbilling.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/controlcatalog.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/controltower.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cost-optimization-hub.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/cur.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/customer-verification.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/databrew.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dataexchange.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/datapipeline.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/datasync.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/datazone.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dax.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dbqms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/deadline.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/deepcomposer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/deepracer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/detective.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/devicefarm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/devops-guru.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/directconnect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/discovery.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dlm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/docdb-elastic.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/drs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ds-data.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ds.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dsql.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/dynamodb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ebs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ec2-instance-connect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ec2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ec2messages.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ecr-public.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ecr.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ecs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/eks-auth.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/eks.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elasticache.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elasticbeanstalk.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elasticfilesystem.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elasticloadbalancing.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elasticmapreduce.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elastictranscoder.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elemental-activations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elemental-appliances-software.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elemental-support-cases.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/elemental-support-content.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/emr-containers.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/emr-serverless.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/entityresolution.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/es.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/events.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/evidently.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/evs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/execute-api.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/finspace-api.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/finspace.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/firehose.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/fis.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/fms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/forecast.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/frauddetector.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/freertos.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/freetier.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/fsx.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/gamelift.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/gameliftstreams.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/geo-maps.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/geo-places.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/geo-routes.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/geo.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/glacier.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/globalaccelerator.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/glue.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/grafana.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/greengrass.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/groundstation.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/groundtruthlabeling.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/guardduty.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/health.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/healthlake.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/honeycode.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iam.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/identity-sync.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/identitystore-auth.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/identitystore.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/imagebuilder.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/importexport.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/inspector-scan.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/inspector.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/inspector2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/internetmonitor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/invoicing.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iot-device-tester.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iot.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotanalytics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotdeviceadvisor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotevents.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotfleethub.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotfleetwise.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotjobsdata.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotmanagedintegrations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotsitewise.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iottwinmaker.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iotwireless.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iq-permission.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/iq.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ivs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ivschat.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kafka-cluster.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kafka.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kafkaconnect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kendra-ranking.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kendra.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kinesis.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kinesisanalytics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kinesisvideo.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/kms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lakeformation.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lambda.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/launchwizard.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lex.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/license-manager-linux-subscriptions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/license-manager-user-subscriptions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/license-manager.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lightsail.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/logs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lookoutequipment.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lookoutmetrics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/lookoutvision.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/m2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/machinelearning.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/macie2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/managedblockchain-query.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/managedblockchain.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mapcredits.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/marketplacecommerceanalytics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mechanicalturk.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediaconnect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediaconvert.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediaimport.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/medialive.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediapackage-vod.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediapackage.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediapackagev2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediastore.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mediatailor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/medical-imaging.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/memorydb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mgh.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mgn.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/migrationhub-orchestrator.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/migrationhub-strategy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mobileanalytics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mobiletargeting.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/monitron.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mpa.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/mq.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/neptune-db.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/neptune-graph.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/network-firewall.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/network-security-director.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/networkflowmonitor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/networkmanager-chat.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/networkmanager.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/networkmonitor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/nimble.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/notifications-contacts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/notifications.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/oam.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/observabilityadmin.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/odb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/omics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/one.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/opensearch.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/opsworks-cm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/opsworks.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/organizations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/osis.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/outposts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/panorama.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/partnercentral-account-management.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/partnercentral.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/payment-cryptography.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/payments.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pca-connector-ad.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pca-connector-scep.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pcs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/personalize.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pi.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pipes.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/polly.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/pricing.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/private-networks.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/profile.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/proton.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/purchase-orders.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/q.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/qapps.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/qbusiness.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/qdeveloper.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/qldb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/quicksight.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ram.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rbin.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rds-data.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rds-db.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rds.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/redshift-data.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/redshift-serverless.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/redshift.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/refactor-spaces.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rekognition.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/repostspace.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/resiliencehub.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/resource-explorer-2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/resource-explorer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/resource-groups.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rhelkb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/robomaker.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rolesanywhere.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53-recovery-cluster.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53-recovery-control-config.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53-recovery-readiness.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53domains.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53profiles.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/route53resolver.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rtbfabric.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/rum.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3-object-lambda.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3-outposts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3express.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3tables.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/s3vectors.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sagemaker-data-science-assistant.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sagemaker-geospatial.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sagemaker-mlflow.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sagemaker.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/savingsplans.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/scheduler.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/schemas.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/scn.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sdb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/secretsmanager.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/security-ir.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/securityhub.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/securitylake.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/serverlessrepo.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/servicecatalog.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/servicediscovery.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/serviceextract.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/servicequotas.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ses.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/shield.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/signer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/signin.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/simspaceweaver.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sms-voice.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sms.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/snow-device-management.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/snowball.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sns.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/social-messaging.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sqlworkbench.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sqs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm-contacts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm-guiconnect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm-incidents.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm-quicksetup.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm-sap.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssm.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ssmmessages.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sso-directory.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sso-oauth.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sso.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/states.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/storagegateway.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/support-console.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/support.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/supportapp.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/supportplans.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/sustainability.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/swf.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/synthetics.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/tag.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/tax.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/textract.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/thinclient.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/timestream-influxdb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/timestream.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/tiros.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/tnb.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/transcribe.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/transfer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/transform.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/translate.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/trustedadvisor.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/ts.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/user-subscriptions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/uxc.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/vendor-insights.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/verified-access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/verifiedpermissions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/voiceid.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/vpc-lattice-svcs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/vpc-lattice.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/vpce.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/waf-regional.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/waf.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/wafv2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/wam.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/wellarchitected.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/wickr.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/wisdom.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workdocs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/worklink.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workmail.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workmailmessageflow.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workspaces-instances.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workspaces-web.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/workspaces.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/aws_services/xray.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/ROADMAP.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/SDK.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/aws-api-configuration.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/aws-services-backup.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/check-reference.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/condition-requirements.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/configuration.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/custom-checks.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/development/PUBLISHING.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/development/pre-release-guide.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/github-actions-examples.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/github-actions-workflows.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/modular-configuration.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/privilege-escalation.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/python-library-usage.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/query-command.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/shell-completion.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/docs/smart-filtering.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/full-reference-config.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/github-labels-config.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/minimal-validation-config.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/offline-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/configs/strict-security.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/advanced_multi_condition_validator.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/encryption_required_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/mfa_required_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/region_restriction_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/tag_enforcement_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/custom_checks/time_based_access_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/custom-policy-checks.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/sarif-code-scanning.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/github-actions/validate-changed-files.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/example1_basic_usage.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/example2_config_file.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/example3_programmatic_config.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/example4_custom_condition_requirements.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/example5_query_aws_services.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/policies/my-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/policies/policy1.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/library-usage/policies/policy2.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/query-examples.sh +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/quick-start/lambda-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/quick-start/s3-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/quick-start/user-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/cross-account-trust-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/action_resource_matching.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/action_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/condition_key_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/full_wildcard.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/mfa_condition_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/policy_structure.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/principal_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/sensitive_action.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/service_wildcard.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/utils/action_parser.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/utils/policy_level_checks.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/wildcard_action.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/checks/wildcard_resource.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/cache.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/completion.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/download_services.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/query.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/commands/validate.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/cache.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/client.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/fetcher.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/parsers.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/patterns.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/storage.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/aws_service/validators.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/check_registry.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/codeowners.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/condition_validators.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/aws_api.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/aws_global_conditions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/category_suggestions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/check_documentation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/condition_requirements.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/config_loader.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/defaults.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/principal_requirements.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/sensitive_actions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/service_principals.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/config/wildcards.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/constants.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/diff_parser.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/enhanced.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/ignore_processor.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/ignored_findings.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/models.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/arn_matching.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/context.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/exceptions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/helpers.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/policy_utils.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/query_utils.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/sdk/shortcuts.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/utils/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/utils/cache.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/utils/regex.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/utils/terminal.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/pyproject.toml +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/scripts/download_aws_services.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/scripts/sync_defaults_from_yaml.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/README.md +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_action_validation_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_aws_global_conditions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_condition_key_validation_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_full_wildcard_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_mfa_condition_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_principal_validation_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_resource_validation_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_sensitive_action_filtering.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_sensitive_action_suggestions.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_sensitive_action_wildcard_expansion.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_service_principal_wildcard.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_service_wildcard_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_sid_uniqueness_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_wildcard_action_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/checks/test_wildcard_resource_check.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/commands/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/commands/test_completion_command.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/commands/test_query_command.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/config/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/config/test_config_loader.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_action_condition_enforcement_policy_level.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_action_resource_matching.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_aws_api_config.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_check_id_in_comments.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_check_id_injection.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_check_registry.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_codeowners.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_diff_parser.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_finding_fingerprint.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_ignore_patterns.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_ignored_findings.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_models.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_policy_loader.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_policy_type_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_regex_utils.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_set_operator_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_trust_policy_detection.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_trust_policy_multiple_statements.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_trust_policy_oidc_aud_required.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_trust_policy_validation.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/integrations/__init__.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/integrations/test_comment_deduplication.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/integrations/test_github_pagination.py +0 -0
- {iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/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.5
|
|
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.5"
|
|
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("."))
|
{iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/iam_validator/core/label_manager.py
RENAMED
|
@@ -6,10 +6,11 @@ When those severities are not found, it removes the labels if present.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import logging
|
|
9
|
+
from collections.abc import Callable
|
|
9
10
|
from typing import TYPE_CHECKING
|
|
10
11
|
|
|
11
12
|
if TYPE_CHECKING:
|
|
12
|
-
from iam_validator.core.models import PolicyValidationResult, ValidationReport
|
|
13
|
+
from iam_validator.core.models import PolicyValidationResult, ValidationIssue, ValidationReport
|
|
13
14
|
from iam_validator.integrations.github_integration import GitHubIntegration
|
|
14
15
|
|
|
15
16
|
logger = logging.getLogger(__name__)
|
|
@@ -48,11 +49,17 @@ class LabelManager:
|
|
|
48
49
|
"""
|
|
49
50
|
return bool(self.severity_labels) and self.github.is_configured()
|
|
50
51
|
|
|
51
|
-
def _get_severities_in_results(
|
|
52
|
+
def _get_severities_in_results(
|
|
53
|
+
self,
|
|
54
|
+
results: list["PolicyValidationResult"],
|
|
55
|
+
is_issue_ignored: Callable[["ValidationIssue", str], bool] | None = None,
|
|
56
|
+
) -> set[str]:
|
|
52
57
|
"""Extract all severity levels found in validation results.
|
|
53
58
|
|
|
54
59
|
Args:
|
|
55
60
|
results: List of PolicyValidationResult objects
|
|
61
|
+
is_issue_ignored: Optional callback to check if an issue is ignored.
|
|
62
|
+
Takes (issue, file_path) and returns True if ignored.
|
|
56
63
|
|
|
57
64
|
Returns:
|
|
58
65
|
Set of severity levels found (e.g., {"error", "critical", "high"})
|
|
@@ -60,6 +67,9 @@ class LabelManager:
|
|
|
60
67
|
severities = set()
|
|
61
68
|
for result in results:
|
|
62
69
|
for issue in result.issues:
|
|
70
|
+
# Skip ignored issues if a filter is provided
|
|
71
|
+
if is_issue_ignored and is_issue_ignored(issue, result.policy_file):
|
|
72
|
+
continue
|
|
63
73
|
severities.add(issue.severity)
|
|
64
74
|
return severities
|
|
65
75
|
|
|
@@ -113,17 +123,22 @@ class LabelManager:
|
|
|
113
123
|
return labels_to_remove
|
|
114
124
|
|
|
115
125
|
async def manage_labels_from_results(
|
|
116
|
-
self,
|
|
126
|
+
self,
|
|
127
|
+
results: list["PolicyValidationResult"],
|
|
128
|
+
is_issue_ignored: Callable[["ValidationIssue", str], bool] | None = None,
|
|
117
129
|
) -> tuple[bool, int, int]:
|
|
118
130
|
"""Manage PR labels based on validation results.
|
|
119
131
|
|
|
120
132
|
This method will:
|
|
121
|
-
1. Determine which severity levels are present in the results
|
|
133
|
+
1. Determine which severity levels are present in the results (excluding ignored issues)
|
|
122
134
|
2. Add labels for severities that are found
|
|
123
135
|
3. Remove labels for severities that are not found
|
|
124
136
|
|
|
125
137
|
Args:
|
|
126
138
|
results: List of PolicyValidationResult objects
|
|
139
|
+
is_issue_ignored: Optional callback to check if an issue is ignored.
|
|
140
|
+
Takes (issue, file_path) and returns True if ignored.
|
|
141
|
+
Ignored issues are excluded from label determination.
|
|
127
142
|
|
|
128
143
|
Returns:
|
|
129
144
|
Tuple of (success, labels_added, labels_removed)
|
|
@@ -132,8 +147,8 @@ class LabelManager:
|
|
|
132
147
|
logger.debug("Label management not enabled (no severity_labels configured)")
|
|
133
148
|
return (True, 0, 0)
|
|
134
149
|
|
|
135
|
-
# Get all severities found in results
|
|
136
|
-
found_severities = self._get_severities_in_results(results)
|
|
150
|
+
# Get all severities found in results (excluding ignored issues)
|
|
151
|
+
found_severities = self._get_severities_in_results(results, is_issue_ignored)
|
|
137
152
|
logger.debug(f"Found severities in results: {found_severities}")
|
|
138
153
|
|
|
139
154
|
# Determine which labels to apply/remove
|
|
@@ -182,7 +197,11 @@ class LabelManager:
|
|
|
182
197
|
|
|
183
198
|
return (success, added_count, removed_count)
|
|
184
199
|
|
|
185
|
-
async def manage_labels_from_report(
|
|
200
|
+
async def manage_labels_from_report(
|
|
201
|
+
self,
|
|
202
|
+
report: "ValidationReport",
|
|
203
|
+
is_issue_ignored: Callable[["ValidationIssue", str], bool] | None = None,
|
|
204
|
+
) -> tuple[bool, int, int]:
|
|
186
205
|
"""Manage PR labels based on validation report.
|
|
187
206
|
|
|
188
207
|
This is a convenience method that extracts results from the report
|
|
@@ -190,8 +209,11 @@ class LabelManager:
|
|
|
190
209
|
|
|
191
210
|
Args:
|
|
192
211
|
report: ValidationReport object
|
|
212
|
+
is_issue_ignored: Optional callback to check if an issue is ignored.
|
|
213
|
+
Takes (issue, file_path) and returns True if ignored.
|
|
214
|
+
Ignored issues are excluded from label determination.
|
|
193
215
|
|
|
194
216
|
Returns:
|
|
195
217
|
Tuple of (success, labels_added, labels_removed)
|
|
196
218
|
"""
|
|
197
|
-
return await self.manage_labels_from_results(report.results)
|
|
219
|
+
return await self.manage_labels_from_results(report.results, is_issue_ignored)
|
{iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/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
|
|
@@ -174,7 +196,17 @@ class PRCommenter:
|
|
|
174
196
|
# Manage PR labels based on severity findings
|
|
175
197
|
if manage_labels and self.severity_labels:
|
|
176
198
|
label_manager = LabelManager(self.github, self.severity_labels)
|
|
177
|
-
|
|
199
|
+
|
|
200
|
+
# Create a filter function that uses relative paths for ignored finding lookup
|
|
201
|
+
def is_issue_ignored_for_labels(issue: ValidationIssue, file_path: str) -> bool:
|
|
202
|
+
relative_path = self._make_relative_path(file_path)
|
|
203
|
+
if not relative_path:
|
|
204
|
+
return False
|
|
205
|
+
return self._is_issue_ignored(issue, relative_path)
|
|
206
|
+
|
|
207
|
+
label_success, added, removed = await label_manager.manage_labels_from_report(
|
|
208
|
+
report, is_issue_ignored=is_issue_ignored_for_labels
|
|
209
|
+
)
|
|
178
210
|
|
|
179
211
|
if not label_success:
|
|
180
212
|
logger.error("Failed to manage PR labels")
|
|
@@ -694,7 +726,10 @@ class PRCommenter:
|
|
|
694
726
|
)
|
|
695
727
|
|
|
696
728
|
store = IgnoredFindingsStore(self.github)
|
|
697
|
-
|
|
729
|
+
# Load full ignored findings for display in summary
|
|
730
|
+
self._ignored_findings = await store.load()
|
|
731
|
+
# Also get just the IDs for fast lookup
|
|
732
|
+
self._ignored_finding_ids = frozenset(self._ignored_findings.keys())
|
|
698
733
|
if self._ignored_finding_ids:
|
|
699
734
|
logger.debug(f"Loaded {len(self._ignored_finding_ids)} ignored finding(s)")
|
|
700
735
|
|
|
@@ -718,6 +753,36 @@ class PRCommenter:
|
|
|
718
753
|
fingerprint = FindingFingerprint.from_issue(issue, file_path)
|
|
719
754
|
return fingerprint.to_hash() in self._ignored_finding_ids
|
|
720
755
|
|
|
756
|
+
def _are_all_blocking_issues_ignored(self, report: ValidationReport) -> bool:
|
|
757
|
+
"""Check if all blocking issues (based on fail_on_severities) are ignored.
|
|
758
|
+
|
|
759
|
+
Args:
|
|
760
|
+
report: The validation report
|
|
761
|
+
|
|
762
|
+
Returns:
|
|
763
|
+
True if there are no unignored blocking issues (i.e., all blocking
|
|
764
|
+
issues have been ignored, or there were no blocking issues to begin with)
|
|
765
|
+
"""
|
|
766
|
+
if not self._ignored_finding_ids:
|
|
767
|
+
# No ignored findings - check if there are any blocking issues at all
|
|
768
|
+
for result in report.results:
|
|
769
|
+
for issue in result.issues:
|
|
770
|
+
if issue.severity in self.fail_on_severities:
|
|
771
|
+
return False
|
|
772
|
+
return True
|
|
773
|
+
|
|
774
|
+
# Check each blocking issue to see if it's ignored
|
|
775
|
+
for result in report.results:
|
|
776
|
+
relative_path = self._make_relative_path(result.policy_file)
|
|
777
|
+
if not relative_path:
|
|
778
|
+
continue
|
|
779
|
+
for issue in result.issues:
|
|
780
|
+
if issue.severity in self.fail_on_severities:
|
|
781
|
+
if not self._is_issue_ignored(issue, relative_path):
|
|
782
|
+
return False
|
|
783
|
+
|
|
784
|
+
return True
|
|
785
|
+
|
|
721
786
|
|
|
722
787
|
async def post_report_to_pr(
|
|
723
788
|
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")
|
|
@@ -1265,6 +1265,26 @@ class GitHubIntegration:
|
|
|
1265
1265
|
f"{created_count} created, {deleted_count} deleted (resolved)"
|
|
1266
1266
|
)
|
|
1267
1267
|
|
|
1268
|
+
# Step 4: If no new comments were created but we need to submit APPROVE/REQUEST_CHANGES,
|
|
1269
|
+
# submit a review without inline comments to update the PR review state.
|
|
1270
|
+
# This is important when all issues are ignored/resolved - we need to dismiss
|
|
1271
|
+
# the previous REQUEST_CHANGES review by submitting an APPROVE review.
|
|
1272
|
+
if not new_comments_for_review and event in (
|
|
1273
|
+
ReviewEvent.APPROVE,
|
|
1274
|
+
ReviewEvent.REQUEST_CHANGES,
|
|
1275
|
+
):
|
|
1276
|
+
# Only submit if there's a meaningful state change to make
|
|
1277
|
+
# (submitting APPROVE when all issues are resolved/ignored)
|
|
1278
|
+
logger.info(f"Submitting {event.value} review (no inline comments)")
|
|
1279
|
+
success = await self.create_review_with_comments(
|
|
1280
|
+
comments=[],
|
|
1281
|
+
body=body or f"<!-- {identifier} -->\nValidation complete.",
|
|
1282
|
+
event=event,
|
|
1283
|
+
)
|
|
1284
|
+
if not success:
|
|
1285
|
+
logger.warning(f"Failed to submit {event.value} review")
|
|
1286
|
+
# Don't fail the whole operation - comments were managed successfully
|
|
1287
|
+
|
|
1268
1288
|
return True
|
|
1269
1289
|
|
|
1270
1290
|
def _extract_finding_id(self, body: str) -> str | None:
|
{iam_policy_validator-1.14.3 → iam_policy_validator-1.14.5}/tests/core/test_multipart_comments.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
5
|
from iam_validator.core.models import PolicyValidationResult, ValidationIssue
|
|
6
|
-
from iam_validator.core.report import ReportGenerator
|
|
6
|
+
from iam_validator.core.report import IgnoredFindingInfo, ReportGenerator
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def create_large_issue(severity: str, index: int) -> ValidationIssue:
|
|
@@ -235,5 +235,130 @@ def test_empty_report_single_part():
|
|
|
235
235
|
assert "Part 1" not in parts[0]
|
|
236
236
|
|
|
237
237
|
|
|
238
|
+
def test_ignored_findings_displayed_in_summary():
|
|
239
|
+
"""Test that ignored findings are displayed in the summary comment."""
|
|
240
|
+
generator = ReportGenerator()
|
|
241
|
+
|
|
242
|
+
results = [create_large_result("policy-1.json", 2)]
|
|
243
|
+
report = generator.generate_report(results)
|
|
244
|
+
|
|
245
|
+
ignored_findings = [
|
|
246
|
+
IgnoredFindingInfo(
|
|
247
|
+
file_path="policy-1.json",
|
|
248
|
+
issue_type="TEST_ISSUE",
|
|
249
|
+
ignored_by="testuser",
|
|
250
|
+
reason="Approved by security team",
|
|
251
|
+
),
|
|
252
|
+
IgnoredFindingInfo(
|
|
253
|
+
file_path="policy-2.json",
|
|
254
|
+
issue_type="ANOTHER_ISSUE",
|
|
255
|
+
ignored_by="admin",
|
|
256
|
+
reason=None,
|
|
257
|
+
),
|
|
258
|
+
]
|
|
259
|
+
|
|
260
|
+
parts = generator.generate_github_comment_parts(
|
|
261
|
+
report, ignored_count=2, ignored_findings=ignored_findings
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
assert len(parts) == 1
|
|
265
|
+
# Check ignored findings section exists
|
|
266
|
+
assert "Ignored Findings" in parts[0]
|
|
267
|
+
assert "testuser" in parts[0]
|
|
268
|
+
assert "TEST_ISSUE" in parts[0]
|
|
269
|
+
assert "policy-1.json" in parts[0]
|
|
270
|
+
assert "Approved by security team" in parts[0]
|
|
271
|
+
assert "admin" in parts[0]
|
|
272
|
+
# Verify collapsible section
|
|
273
|
+
assert "View 2 ignored finding(s)" in parts[0]
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
def test_all_blocking_ignored_shows_passed():
|
|
277
|
+
"""Test that when all blocking issues are ignored, status shows Passed."""
|
|
278
|
+
generator = ReportGenerator()
|
|
279
|
+
|
|
280
|
+
# Create a report with errors (normally fails)
|
|
281
|
+
results = [
|
|
282
|
+
PolicyValidationResult(
|
|
283
|
+
policy_file="policy-1.json",
|
|
284
|
+
is_valid=False,
|
|
285
|
+
issues=[
|
|
286
|
+
ValidationIssue(
|
|
287
|
+
severity="error",
|
|
288
|
+
issue_type="CRITICAL_ERROR",
|
|
289
|
+
message="Critical error",
|
|
290
|
+
statement_index=0,
|
|
291
|
+
)
|
|
292
|
+
],
|
|
293
|
+
)
|
|
294
|
+
]
|
|
295
|
+
report = generator.generate_report(results)
|
|
296
|
+
|
|
297
|
+
# Without all_blocking_ignored=True, it should show Failed
|
|
298
|
+
parts_failed = generator.generate_github_comment_parts(report)
|
|
299
|
+
assert "Validation Failed" in parts_failed[0]
|
|
300
|
+
|
|
301
|
+
# With all_blocking_ignored=True, it should show Passed
|
|
302
|
+
parts_passed = generator.generate_github_comment_parts(
|
|
303
|
+
report, ignored_count=1, all_blocking_ignored=True
|
|
304
|
+
)
|
|
305
|
+
assert "Validation Passed" in parts_passed[0]
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
def test_ignored_count_shown_in_summary_table():
|
|
309
|
+
"""Test that ignored count appears in the summary table."""
|
|
310
|
+
generator = ReportGenerator()
|
|
311
|
+
|
|
312
|
+
results = [create_large_result("policy-1.json", 1)]
|
|
313
|
+
report = generator.generate_report(results)
|
|
314
|
+
|
|
315
|
+
parts = generator.generate_github_comment_parts(report, ignored_count=5)
|
|
316
|
+
|
|
317
|
+
assert "Ignored Findings" in parts[0]
|
|
318
|
+
assert "5" in parts[0] # The count
|
|
319
|
+
assert "🔕" in parts[0] # The emoji
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
def test_no_ignored_findings_section_when_empty():
|
|
323
|
+
"""Test that no ignored findings section is shown when list is empty."""
|
|
324
|
+
generator = ReportGenerator()
|
|
325
|
+
|
|
326
|
+
results = [create_large_result("policy-1.json", 1)]
|
|
327
|
+
report = generator.generate_report(results)
|
|
328
|
+
|
|
329
|
+
parts = generator.generate_github_comment_parts(
|
|
330
|
+
report, ignored_count=0, ignored_findings=None
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
assert "### 🔕 Ignored Findings" not in parts[0]
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
def test_ignored_findings_with_long_paths_truncated():
|
|
337
|
+
"""Test that long file paths in ignored findings are truncated."""
|
|
338
|
+
generator = ReportGenerator()
|
|
339
|
+
|
|
340
|
+
results = [create_large_result("policy-1.json", 1)]
|
|
341
|
+
report = generator.generate_report(results)
|
|
342
|
+
|
|
343
|
+
long_path = "very/long/path/that/exceeds/the/maximum/allowed/length/for/display/purposes/policy.json"
|
|
344
|
+
ignored_findings = [
|
|
345
|
+
IgnoredFindingInfo(
|
|
346
|
+
file_path=long_path,
|
|
347
|
+
issue_type="TEST_ISSUE",
|
|
348
|
+
ignored_by="testuser",
|
|
349
|
+
reason=None,
|
|
350
|
+
)
|
|
351
|
+
]
|
|
352
|
+
|
|
353
|
+
parts = generator.generate_github_comment_parts(
|
|
354
|
+
report, ignored_count=1, ignored_findings=ignored_findings
|
|
355
|
+
)
|
|
356
|
+
|
|
357
|
+
# Path should be truncated with ellipsis
|
|
358
|
+
assert "..." in parts[0]
|
|
359
|
+
# But end of path should still be visible
|
|
360
|
+
assert "policy.json" in parts[0]
|
|
361
|
+
|
|
362
|
+
|
|
238
363
|
if __name__ == "__main__":
|
|
239
364
|
pytest.main([__file__, "-v"])
|