iam-policy-validator 1.9.0__tar.gz → 1.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/PKG-INFO +1 -1
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/full-reference-config.yaml +39 -0
- iam_policy_validator-1.10.1/examples/configs/github-labels-config.yaml +116 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/validate.py +14 -4
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/validators.py +5 -2
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/defaults.py +10 -0
- iam_policy_validator-1.10.1/iam_validator/core/label_manager.py +197 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/models.py +6 -6
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/pr_commenter.py +34 -7
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/policy_utils.py +34 -8
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/pyproject.toml +1 -1
- iam_policy_validator-1.10.1/tests/test_label_manager.py +401 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/uv.lock +1 -1
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/ci.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/cleanup-prereleases.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/codeql.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/pre-release.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/release.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.github/workflows/scorecard.yml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.gitignore +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/.python-version +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/DOCS.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/LICENSE +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/Makefile +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/SECURITY.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/action.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/_manifest.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/_services.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/a2c.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/a4b.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/access-analyzer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/acm-pca.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/acm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/action-recommendations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/activate.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aiops.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/airflow.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/amplify.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/amplifybackend.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/amplifyuibuilder.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aoss.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/apigateway.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/app-integrations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appconfig.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appfabric.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appflow.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/application-autoscaling.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/application-signals.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/application-transformation.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/applicationinsights.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appmesh-preview.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appmesh.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/apprunner.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appstream.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appstudio.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/appsync.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/apptest.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aps.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/arc-region-switch.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/arc-zonal-shift.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/arsenal.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/artifact.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/athena.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/auditmanager.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/autoscaling-plans.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/autoscaling.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aws-marketplace-management.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aws-marketplace.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/aws-portal.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/awsconnector.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/b2bi.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/backup-gateway.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/backup-search.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/backup-storage.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/backup.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/batch.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bcm-dashboards.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bcm-data-exports.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bcm-pricing-calculator.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bcm-recommended-actions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bedrock-agentcore.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bedrock.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/billing.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/billingconductor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/braket.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/budgets.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/bugbust.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cases.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cassandra.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ce.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/chatbot.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/chime.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cleanrooms-ml.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cleanrooms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloud9.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/clouddirectory.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudformation.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudfront-keyvaluestore.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudfront.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudhsm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudsearch.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudshell.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudtrail-data.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudtrail.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cloudwatch.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeartifact.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codebuild.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codecatalyst.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codecommit.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeconnections.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codedeploy-commands-secure.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codedeploy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeguru-profiler.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeguru-reviewer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeguru-security.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codeguru.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codepipeline.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codestar-connections.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codestar-notifications.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codestar.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/codewhisperer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cognito-identity.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cognito-idp.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cognito-sync.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/comprehend.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/comprehendmedical.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/compute-optimizer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/config.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/connect-campaigns.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/connect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/consoleapp.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/consolidatedbilling.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/controlcatalog.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/controltower.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cost-optimization-hub.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/cur.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/customer-verification.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/databrew.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dataexchange.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/datapipeline.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/datasync.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/datazone.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dax.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dbqms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/deadline.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/deepcomposer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/deepracer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/detective.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/devicefarm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/devops-guru.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/directconnect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/discovery.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dlm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/docdb-elastic.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/drs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ds-data.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ds.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dsql.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/dynamodb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ebs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ec2-instance-connect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ec2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ec2messages.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ecr-public.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ecr.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ecs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/eks-auth.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/eks.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elasticache.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elasticbeanstalk.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elasticfilesystem.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elasticloadbalancing.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elasticmapreduce.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elastictranscoder.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elemental-activations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elemental-appliances-software.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elemental-support-cases.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/elemental-support-content.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/emr-containers.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/emr-serverless.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/entityresolution.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/es.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/events.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/evidently.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/evs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/execute-api.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/finspace-api.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/finspace.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/firehose.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/fis.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/fms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/forecast.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/frauddetector.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/freertos.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/freetier.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/fsx.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/gamelift.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/gameliftstreams.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/geo-maps.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/geo-places.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/geo-routes.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/geo.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/glacier.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/globalaccelerator.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/glue.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/grafana.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/greengrass.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/groundstation.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/groundtruthlabeling.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/guardduty.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/health.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/healthlake.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/honeycode.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iam.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/identity-sync.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/identitystore-auth.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/identitystore.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/imagebuilder.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/importexport.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/inspector-scan.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/inspector.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/inspector2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/internetmonitor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/invoicing.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iot-device-tester.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iot.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotanalytics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotdeviceadvisor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotevents.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotfleethub.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotfleetwise.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotjobsdata.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotmanagedintegrations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotsitewise.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iottwinmaker.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iotwireless.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iq-permission.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/iq.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ivs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ivschat.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kafka-cluster.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kafka.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kafkaconnect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kendra-ranking.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kendra.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kinesis.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kinesisanalytics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kinesisvideo.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/kms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lakeformation.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lambda.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/launchwizard.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lex.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/license-manager-linux-subscriptions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/license-manager-user-subscriptions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/license-manager.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lightsail.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/logs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lookoutequipment.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lookoutmetrics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/lookoutvision.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/m2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/machinelearning.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/macie2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/managedblockchain-query.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/managedblockchain.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mapcredits.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/marketplacecommerceanalytics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mechanicalturk.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediaconnect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediaconvert.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediaimport.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/medialive.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediapackage-vod.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediapackage.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediapackagev2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediastore.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mediatailor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/medical-imaging.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/memorydb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mgh.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mgn.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/migrationhub-orchestrator.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/migrationhub-strategy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mobileanalytics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mobiletargeting.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/monitron.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mpa.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/mq.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/neptune-db.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/neptune-graph.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/network-firewall.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/network-security-director.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/networkflowmonitor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/networkmanager-chat.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/networkmanager.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/networkmonitor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/nimble.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/notifications-contacts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/notifications.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/oam.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/observabilityadmin.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/odb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/omics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/one.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/opensearch.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/opsworks-cm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/opsworks.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/organizations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/osis.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/outposts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/panorama.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/partnercentral-account-management.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/partnercentral.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/payment-cryptography.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/payments.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pca-connector-ad.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pca-connector-scep.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pcs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/personalize.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pi.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pipes.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/polly.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/pricing.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/private-networks.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/profile.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/proton.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/purchase-orders.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/q.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/qapps.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/qbusiness.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/qdeveloper.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/qldb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/quicksight.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ram.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rbin.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rds-data.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rds-db.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rds.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/redshift-data.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/redshift-serverless.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/redshift.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/refactor-spaces.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rekognition.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/repostspace.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/resiliencehub.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/resource-explorer-2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/resource-explorer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/resource-groups.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rhelkb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/robomaker.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rolesanywhere.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53-recovery-cluster.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53-recovery-control-config.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53-recovery-readiness.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53domains.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53profiles.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/route53resolver.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rtbfabric.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/rum.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3-object-lambda.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3-outposts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3express.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3tables.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/s3vectors.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sagemaker-data-science-assistant.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sagemaker-geospatial.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sagemaker-mlflow.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sagemaker.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/savingsplans.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/scheduler.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/schemas.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/scn.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sdb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/secretsmanager.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/security-ir.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/securityhub.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/securitylake.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/serverlessrepo.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/servicecatalog.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/servicediscovery.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/serviceextract.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/servicequotas.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ses.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/shield.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/signer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/signin.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/simspaceweaver.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sms-voice.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sms.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/snow-device-management.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/snowball.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sns.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/social-messaging.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sqlworkbench.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sqs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm-contacts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm-guiconnect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm-incidents.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm-quicksetup.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm-sap.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssm.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ssmmessages.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sso-directory.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sso-oauth.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sso.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/states.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/storagegateway.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/support-console.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/support.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/supportapp.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/supportplans.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/sustainability.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/swf.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/synthetics.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/tag.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/tax.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/textract.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/thinclient.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/timestream-influxdb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/timestream.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/tiros.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/tnb.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/transcribe.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/transfer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/transform.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/translate.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/trustedadvisor.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/ts.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/user-subscriptions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/uxc.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/vendor-insights.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/verified-access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/verifiedpermissions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/voiceid.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/vpc-lattice-svcs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/vpc-lattice.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/vpce.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/waf-regional.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/waf.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/wafv2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/wam.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/wellarchitected.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/wickr.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/wisdom.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workdocs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/worklink.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workmail.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workmailmessageflow.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workspaces-instances.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workspaces-web.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/workspaces.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/aws_services/xray.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/ROADMAP.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/SDK.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/aws-api-configuration.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/aws-services-backup.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/check-reference.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/condition-requirements.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/configuration.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/custom-checks.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/development/PUBLISHING.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/development/pre-release-guide.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/github-actions-examples.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/github-actions-workflows.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/modular-configuration.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/privilege-escalation.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/python-library-usage.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/docs/smart-filtering.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/basic-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/ci-cd-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/development-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/ignore-patterns-list-example.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/minimal-validation-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/offline-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/policy-level-condition-enforcement-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/principal-condition-enforcement.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/principal-validation-public-with-conditions.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/principal-validation-relaxed.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/principal-validation-strict.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/privilege-escalation-focus-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/resource-policy-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/security-audit-config.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/configs/strict-security.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/advanced_multi_condition_validator.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/encryption_required_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/mfa_required_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/region_restriction_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/tag_enforcement_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/custom_checks/time_based_access_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/custom-policy-checks.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/sarif-code-scanning.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/github-actions/validate-changed-files.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/api_gateway_management.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/athena_query_access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/backup_vault_access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/insecure_policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/insecure_policy.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/invalid_policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/lambda_developer.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/lambda_developer.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/rds_database_admin.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/sample_policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/sample_policy.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/terraform-template-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/valid-sid-formats.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/wildcard_examples.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/wrong-condition-key.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/service-control-policies/require-mfa.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/service-control-policies/restrict-regions.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/correct-condition-wrong-key.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/dynamodb-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/ec2-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/iam-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/lambda-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/s3-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/sqs-sns-wrong-resources.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/iam-test-policies/wrong_actions_mismatch/typo-condition-field.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example1_basic_usage.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example1_basic_usage_new.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example2_config_file.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example2_context_manager.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example3_policy_manipulation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example3_programmatic_config.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/example4_custom_condition_requirements.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/policies/my-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/policies/policy1.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/policies/policy2.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/library-usage/quick_reference.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/INVALID-wrong-principal-type.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/cross-account-trust-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/github-actions-oidc-trust-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/lambda-service-role-trust-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/examples/trust-policies/saml-federated-trust-policy.json +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/action_resource_matching.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/action_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/condition_key_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/full_wildcard.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/mfa_condition_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/policy_structure.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/policy_type_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/principal_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/sensitive_action.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/service_wildcard.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/set_operator_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/trust_policy_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/utils/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/utils/policy_level_checks.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/utils/sensitive_action_matcher.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/utils/wildcard_expansion.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/wildcard_action.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/checks/wildcard_resource.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/cache.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/download_services.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/cache.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/client.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/fetcher.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/parsers.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/patterns.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/aws_service/storage.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/check_registry.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/condition_validators.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/aws_api.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/aws_global_conditions.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/category_suggestions.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/condition_requirements.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/config_loader.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/principal_requirements.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/sensitive_actions.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/service_principals.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/wildcards.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/constants.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/enhanced.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/ignore_patterns.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/report.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/integrations/github_integration.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/arn_matching.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/context.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/exceptions.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/helpers.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/sdk/shortcuts.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/utils/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/utils/cache.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/utils/regex.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/utils/terminal.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/scripts/download_aws_services.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/scripts/sync_defaults_from_yaml.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/README.md +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/__init__.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_action_condition_enforcement_policy_level.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_action_resource_matching.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_action_validation_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_aws_api_config.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_aws_global_conditions.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_check_id_in_comments.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_check_id_injection.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_check_registry.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_condition_key_validation_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_condition_type_mismatch.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_config_loader.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_full_wildcard_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_ignore_patterns.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_mfa_condition_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_models.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_multipart_comments.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_policy_loader.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_policy_type_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_principal_validation_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_regex_utils.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_resource_validation_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_sensitive_action_wildcard_expansion.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_service_principal_wildcard.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_service_wildcard_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_set_operator_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_sid_uniqueness_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_trust_policy_detection.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_trust_policy_detection.py.bak4 +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_trust_policy_multiple_statements.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_trust_policy_oidc_aud_required.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_trust_policy_validation.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_wildcard_action_check.py +0 -0
- {iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/tests/test_wildcard_resource_check.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iam-policy-validator
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.10.1
|
|
4
4
|
Summary: Validate AWS IAM policies for correctness and security using AWS Service Reference API
|
|
5
5
|
Project-URL: Homepage, https://github.com/boogy/iam-policy-validator
|
|
6
6
|
Project-URL: Documentation, https://github.com/boogy/iam-policy-validator/tree/main/docs
|
|
@@ -154,6 +154,45 @@ settings:
|
|
|
154
154
|
# - medium # Uncomment to fail on medium severity
|
|
155
155
|
# - warning # Uncomment to fail on IAM validity warnings
|
|
156
156
|
|
|
157
|
+
# GitHub PR label mapping based on severity findings
|
|
158
|
+
# When issues with these severities are found, apply the corresponding labels to the PR
|
|
159
|
+
# If no issues with these severities exist, remove the labels if present
|
|
160
|
+
# This helps signal to reviewers if the PR is ready for final review
|
|
161
|
+
#
|
|
162
|
+
# Supports both single labels and lists of labels per severity:
|
|
163
|
+
#
|
|
164
|
+
# Single label per severity:
|
|
165
|
+
# severity_labels:
|
|
166
|
+
# error: "iam-validity-error"
|
|
167
|
+
# critical: "security-critical"
|
|
168
|
+
#
|
|
169
|
+
# Multiple labels per severity:
|
|
170
|
+
# severity_labels:
|
|
171
|
+
# error: ["iam-error", "needs-fix"]
|
|
172
|
+
# critical: ["security-critical", "needs-security-review"]
|
|
173
|
+
#
|
|
174
|
+
# Mixed (some single, some multiple):
|
|
175
|
+
# severity_labels:
|
|
176
|
+
# error: "iam-validity-error"
|
|
177
|
+
# critical: ["security-critical", "needs-security-review"]
|
|
178
|
+
#
|
|
179
|
+
# Example use cases:
|
|
180
|
+
# - Apply multiple labels for better categorization
|
|
181
|
+
# - Apply "needs-security-review" when critical/high issues are found
|
|
182
|
+
# - Apply "needs-fix" for any validation errors
|
|
183
|
+
# - Remove all labels when issues are fixed
|
|
184
|
+
#
|
|
185
|
+
# Note: Requires GitHub integration (--github-comment or --github-review flags)
|
|
186
|
+
# Default: [] (empty list = disabled)
|
|
187
|
+
severity_labels:
|
|
188
|
+
error: "iam-validity-error"
|
|
189
|
+
critical: "iam-security-critical"
|
|
190
|
+
high: "iam-security-high"
|
|
191
|
+
# medium: "security-medium" # Uncomment to label medium severity issues
|
|
192
|
+
# Multiple labels example:
|
|
193
|
+
# error: ["iam-validity-error", "needs-fix"]
|
|
194
|
+
# critical: ["security-critical", "needs-security-review"]
|
|
195
|
+
|
|
157
196
|
# Template Variable Support (applies to all ARN validation checks)
|
|
158
197
|
#
|
|
159
198
|
# When enabled, the validator is POSITION-AWARE and supports ANY variable name
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# ============================================================================
|
|
2
|
+
# IAM Policy Validator - GitHub PR Labels Configuration
|
|
3
|
+
# ============================================================================
|
|
4
|
+
# This configuration demonstrates automatic GitHub PR label management based
|
|
5
|
+
# on validation severity findings.
|
|
6
|
+
#
|
|
7
|
+
# When validation finds issues with configured severities, it automatically
|
|
8
|
+
# applies the corresponding labels to the PR. When those issues are fixed,
|
|
9
|
+
# the labels are removed. This helps reviewers quickly understand the status
|
|
10
|
+
# of the PR without reading through all the validation comments.
|
|
11
|
+
# ============================================================================
|
|
12
|
+
|
|
13
|
+
settings:
|
|
14
|
+
# Define which severities should cause the build to fail
|
|
15
|
+
fail_on_severity:
|
|
16
|
+
- error # IAM validity errors (invalid actions, malformed ARNs, etc.)
|
|
17
|
+
- critical # Critical security risks (e.g., full wildcard policies)
|
|
18
|
+
- high # High severity security issues
|
|
19
|
+
|
|
20
|
+
# Map severity levels to GitHub PR labels
|
|
21
|
+
# When validation finds issues with these severities, it will:
|
|
22
|
+
# 1. Apply the corresponding label(s) to the PR
|
|
23
|
+
# 2. Remove the label(s) if no issues with that severity exist
|
|
24
|
+
#
|
|
25
|
+
# Supports both single labels and lists of labels per severity:
|
|
26
|
+
# - Single: error: "iam-validity-error"
|
|
27
|
+
# - Multiple: error: ["iam-validity-error", "needs-fix"]
|
|
28
|
+
#
|
|
29
|
+
# This provides visual feedback to reviewers about the PR status:
|
|
30
|
+
# - Labels present = issues need to be fixed
|
|
31
|
+
# - Labels removed = issues resolved, ready for review
|
|
32
|
+
severity_labels:
|
|
33
|
+
error: "iam-validity-error" # Applied when IAM validity errors found
|
|
34
|
+
critical: "security-critical" # Applied when critical security issues found
|
|
35
|
+
high: "security-high" # Applied when high severity issues found
|
|
36
|
+
|
|
37
|
+
# Example with multiple labels per severity:
|
|
38
|
+
# error: ["iam-validity-error", "needs-fix"]
|
|
39
|
+
# critical: ["security-critical", "needs-security-review", "high-priority"]
|
|
40
|
+
# high: ["security-high", "needs-review"]
|
|
41
|
+
|
|
42
|
+
# ============================================================================
|
|
43
|
+
# Example GitHub Actions Workflow
|
|
44
|
+
# ============================================================================
|
|
45
|
+
# To use this feature in GitHub Actions:
|
|
46
|
+
#
|
|
47
|
+
# name: Validate IAM Policies
|
|
48
|
+
#
|
|
49
|
+
# on:
|
|
50
|
+
# pull_request:
|
|
51
|
+
# paths:
|
|
52
|
+
# - 'policies/**/*.json'
|
|
53
|
+
#
|
|
54
|
+
# permissions:
|
|
55
|
+
# contents: read
|
|
56
|
+
# pull-requests: write # Required for labels
|
|
57
|
+
# issues: write # Required for labels
|
|
58
|
+
#
|
|
59
|
+
# jobs:
|
|
60
|
+
# validate:
|
|
61
|
+
# runs-on: ubuntu-latest
|
|
62
|
+
# steps:
|
|
63
|
+
# - uses: actions/checkout@v4
|
|
64
|
+
#
|
|
65
|
+
# - name: Validate IAM Policies
|
|
66
|
+
# env:
|
|
67
|
+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
68
|
+
# GITHUB_REPOSITORY: ${{ github.repository }}
|
|
69
|
+
# GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
70
|
+
# run: |
|
|
71
|
+
# pip install iam-policy-validator
|
|
72
|
+
# iam-validator validate \
|
|
73
|
+
# --path ./policies/ \
|
|
74
|
+
# --config examples/configs/github-labels-config.yaml \
|
|
75
|
+
# --github-comment \
|
|
76
|
+
# --github-review
|
|
77
|
+
# ============================================================================
|
|
78
|
+
|
|
79
|
+
# ============================================================================
|
|
80
|
+
# Label Behavior Examples
|
|
81
|
+
# ============================================================================
|
|
82
|
+
# Scenario 1: Initial validation finds issues
|
|
83
|
+
# - Policy has invalid action (severity: error)
|
|
84
|
+
# - Policy has wildcard resource (severity: high)
|
|
85
|
+
# → Labels applied: "iam-validity-error", "security-high"
|
|
86
|
+
# → Reviewer sees: This PR needs fixes before review
|
|
87
|
+
#
|
|
88
|
+
# Scenario 2: Developer fixes the invalid action
|
|
89
|
+
# - Only wildcard resource remains (severity: high)
|
|
90
|
+
# → Labels applied: "security-high"
|
|
91
|
+
# → Labels removed: "iam-validity-error"
|
|
92
|
+
# → Reviewer sees: IAM validity is good, but security issue remains
|
|
93
|
+
#
|
|
94
|
+
# Scenario 3: Developer fixes all issues
|
|
95
|
+
# - No issues found
|
|
96
|
+
# → All labels removed
|
|
97
|
+
# → Reviewer sees: Clean PR, ready for final review
|
|
98
|
+
# ============================================================================
|
|
99
|
+
|
|
100
|
+
# ============================================================================
|
|
101
|
+
# Additional Configuration
|
|
102
|
+
# ============================================================================
|
|
103
|
+
# You can customize individual checks below. For a comprehensive list of
|
|
104
|
+
# all available checks and options, see:
|
|
105
|
+
# - examples/configs/full-reference-config.yaml
|
|
106
|
+
# - examples/configs/basic-config.yaml
|
|
107
|
+
# - examples/configs/strict-security.yaml
|
|
108
|
+
# ============================================================================
|
|
109
|
+
|
|
110
|
+
# Example: Disable specific checks
|
|
111
|
+
# wildcard_resource:
|
|
112
|
+
# enabled: false
|
|
113
|
+
|
|
114
|
+
# Example: Adjust severity levels
|
|
115
|
+
# service_wildcard:
|
|
116
|
+
# severity: medium # Default is "high"
|
|
@@ -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.
|
|
6
|
+
__version__ = "1.10.1"
|
|
7
7
|
# Parse version, handling pre-release suffixes like -rc, -alpha, -beta
|
|
8
8
|
_version_base = __version__.split("-")[0] # Remove pre-release suffix if present
|
|
9
9
|
__version_info__ = tuple(int(part) for part in _version_base.split("."))
|
{iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/commands/validate.py
RENAMED
|
@@ -302,12 +302,17 @@ Examples:
|
|
|
302
302
|
from iam_validator.core.config.config_loader import ConfigLoader
|
|
303
303
|
from iam_validator.core.pr_commenter import PRCommenter
|
|
304
304
|
|
|
305
|
-
# Load config to get fail_on_severity
|
|
305
|
+
# Load config to get fail_on_severity and severity_labels settings
|
|
306
306
|
config = ConfigLoader.load_config(config_path)
|
|
307
307
|
fail_on_severities = config.get_setting("fail_on_severity", ["error", "critical"])
|
|
308
|
+
severity_labels = config.get_setting("severity_labels", {})
|
|
308
309
|
|
|
309
310
|
async with GitHubIntegration() as github:
|
|
310
|
-
commenter = PRCommenter(
|
|
311
|
+
commenter = PRCommenter(
|
|
312
|
+
github,
|
|
313
|
+
fail_on_severities=fail_on_severities,
|
|
314
|
+
severity_labels=severity_labels,
|
|
315
|
+
)
|
|
311
316
|
success = await commenter.post_findings_to_pr(
|
|
312
317
|
report,
|
|
313
318
|
create_review=getattr(args, "github_review", False),
|
|
@@ -426,12 +431,17 @@ Examples:
|
|
|
426
431
|
from iam_validator.core.config.config_loader import ConfigLoader
|
|
427
432
|
from iam_validator.core.pr_commenter import PRCommenter
|
|
428
433
|
|
|
429
|
-
# Load config to get fail_on_severity
|
|
434
|
+
# Load config to get fail_on_severity and severity_labels settings
|
|
430
435
|
config = ConfigLoader.load_config(config_path)
|
|
431
436
|
fail_on_severities = config.get_setting("fail_on_severity", ["error", "critical"])
|
|
437
|
+
severity_labels = config.get_setting("severity_labels", {})
|
|
432
438
|
|
|
433
439
|
async with GitHubIntegration() as github:
|
|
434
|
-
commenter = PRCommenter(
|
|
440
|
+
commenter = PRCommenter(
|
|
441
|
+
github,
|
|
442
|
+
fail_on_severities=fail_on_severities,
|
|
443
|
+
severity_labels=severity_labels,
|
|
444
|
+
)
|
|
435
445
|
success = await commenter.post_findings_to_pr(
|
|
436
446
|
report,
|
|
437
447
|
create_review=False, # Already posted per-file reviews in streaming mode
|
|
@@ -280,9 +280,12 @@ class ServiceValidator:
|
|
|
280
280
|
"- `aws:RequestedRegion`\n"
|
|
281
281
|
"- `aws:SourceIp`\n"
|
|
282
282
|
"- `aws:SourceVpce`\n"
|
|
283
|
-
"- `aws:
|
|
283
|
+
"- `aws:ResourceOrgID`\n"
|
|
284
|
+
"- `aws:PrincipalOrgID`\n"
|
|
285
|
+
"- `aws:SourceAccount`\n"
|
|
286
|
+
"- `aws:PrincipalAccount`\n"
|
|
284
287
|
"- `aws:CurrentTime`\n"
|
|
285
|
-
"- `aws:
|
|
288
|
+
"- `aws:ResourceAccount`\n"
|
|
286
289
|
"- `aws:PrincipalArn`\n"
|
|
287
290
|
"- And many others"
|
|
288
291
|
)
|
{iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/config/defaults.py
RENAMED
|
@@ -75,6 +75,16 @@ DEFAULT_CONFIG = {
|
|
|
75
75
|
# IAM Validity: error, warning, info
|
|
76
76
|
# Security: critical, high, medium, low
|
|
77
77
|
"fail_on_severity": list(constants.HIGH_SEVERITY_LEVELS),
|
|
78
|
+
# GitHub PR label mapping based on severity findings
|
|
79
|
+
# When issues with these severities are found, apply the corresponding labels
|
|
80
|
+
# If no issues with these severities exist, remove the labels if present
|
|
81
|
+
# Supports both single labels and lists of labels per severity
|
|
82
|
+
# Examples:
|
|
83
|
+
# Single label per severity: {"error": "iam-validity-error", "critical": "security-critical"}
|
|
84
|
+
# Multiple labels per severity: {"error": ["iam-error", "needs-fix"], "critical": ["security-critical", "needs-review"]}
|
|
85
|
+
# Mixed: {"error": "iam-validity-error", "critical": ["security-critical", "needs-review"]}
|
|
86
|
+
# Default: {} (disabled)
|
|
87
|
+
"severity_labels": {},
|
|
78
88
|
},
|
|
79
89
|
# ========================================================================
|
|
80
90
|
# AWS IAM Validation Checks (17 checks total)
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"""Label Manager for GitHub PR Labels based on Severity Findings.
|
|
2
|
+
|
|
3
|
+
This module manages GitHub PR labels based on IAM policy validation severity findings.
|
|
4
|
+
When validation finds issues with specific severities, it applies corresponding labels.
|
|
5
|
+
When those severities are not found, it removes the labels if present.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from typing import TYPE_CHECKING
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from iam_validator.core.models import PolicyValidationResult, ValidationReport
|
|
13
|
+
from iam_validator.integrations.github_integration import GitHubIntegration
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LabelManager:
|
|
19
|
+
"""Manages GitHub PR labels based on severity findings."""
|
|
20
|
+
|
|
21
|
+
def __init__(
|
|
22
|
+
self,
|
|
23
|
+
github: "GitHubIntegration",
|
|
24
|
+
severity_labels: dict[str, str | list[str]] | None = None,
|
|
25
|
+
):
|
|
26
|
+
"""Initialize label manager.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
github: GitHubIntegration instance for API calls
|
|
30
|
+
severity_labels: Mapping of severity levels to label name(s)
|
|
31
|
+
Supports both single labels and lists of labels per severity.
|
|
32
|
+
Examples:
|
|
33
|
+
- Single label per severity:
|
|
34
|
+
{"error": "iam-validity-error", "critical": "security-critical"}
|
|
35
|
+
- Multiple labels per severity:
|
|
36
|
+
{"error": ["iam-error", "needs-fix"], "critical": ["security-critical", "needs-security-review"]}
|
|
37
|
+
- Mixed:
|
|
38
|
+
{"error": "iam-validity-error", "critical": ["security-critical", "needs-review"]}
|
|
39
|
+
"""
|
|
40
|
+
self.github = github
|
|
41
|
+
self.severity_labels = severity_labels or {}
|
|
42
|
+
|
|
43
|
+
def is_enabled(self) -> bool:
|
|
44
|
+
"""Check if label management is enabled.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
True if severity_labels is configured and GitHub is configured
|
|
48
|
+
"""
|
|
49
|
+
return bool(self.severity_labels) and self.github.is_configured()
|
|
50
|
+
|
|
51
|
+
def _get_severities_in_results(self, results: list["PolicyValidationResult"]) -> set[str]:
|
|
52
|
+
"""Extract all severity levels found in validation results.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
results: List of PolicyValidationResult objects
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
Set of severity levels found (e.g., {"error", "critical", "high"})
|
|
59
|
+
"""
|
|
60
|
+
severities = set()
|
|
61
|
+
for result in results:
|
|
62
|
+
for issue in result.issues:
|
|
63
|
+
severities.add(issue.severity)
|
|
64
|
+
return severities
|
|
65
|
+
|
|
66
|
+
def _get_severities_in_report(self, report: "ValidationReport") -> set[str]:
|
|
67
|
+
"""Extract all severity levels found in validation report.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
report: ValidationReport object
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
Set of severity levels found (e.g., {"error", "critical", "high"})
|
|
74
|
+
"""
|
|
75
|
+
return self._get_severities_in_results(report.results)
|
|
76
|
+
|
|
77
|
+
def _determine_labels_to_apply(self, found_severities: set[str]) -> set[str]:
|
|
78
|
+
"""Determine which labels should be applied based on found severities.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
found_severities: Set of severity levels found in validation
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Set of label names to apply
|
|
85
|
+
"""
|
|
86
|
+
labels_to_apply = set()
|
|
87
|
+
for severity, labels in self.severity_labels.items():
|
|
88
|
+
if severity in found_severities:
|
|
89
|
+
# Support both single labels and lists of labels
|
|
90
|
+
if isinstance(labels, list):
|
|
91
|
+
labels_to_apply.update(labels)
|
|
92
|
+
else:
|
|
93
|
+
labels_to_apply.add(labels)
|
|
94
|
+
return labels_to_apply
|
|
95
|
+
|
|
96
|
+
def _determine_labels_to_remove(self, found_severities: set[str]) -> set[str]:
|
|
97
|
+
"""Determine which labels should be removed based on missing severities.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
found_severities: Set of severity levels found in validation
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
Set of label names to remove
|
|
104
|
+
"""
|
|
105
|
+
labels_to_remove = set()
|
|
106
|
+
for severity, labels in self.severity_labels.items():
|
|
107
|
+
if severity not in found_severities:
|
|
108
|
+
# Support both single labels and lists of labels
|
|
109
|
+
if isinstance(labels, list):
|
|
110
|
+
labels_to_remove.update(labels)
|
|
111
|
+
else:
|
|
112
|
+
labels_to_remove.add(labels)
|
|
113
|
+
return labels_to_remove
|
|
114
|
+
|
|
115
|
+
async def manage_labels_from_results(
|
|
116
|
+
self, results: list["PolicyValidationResult"]
|
|
117
|
+
) -> tuple[bool, int, int]:
|
|
118
|
+
"""Manage PR labels based on validation results.
|
|
119
|
+
|
|
120
|
+
This method will:
|
|
121
|
+
1. Determine which severity levels are present in the results
|
|
122
|
+
2. Add labels for severities that are found
|
|
123
|
+
3. Remove labels for severities that are not found
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
results: List of PolicyValidationResult objects
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
Tuple of (success, labels_added, labels_removed)
|
|
130
|
+
"""
|
|
131
|
+
if not self.is_enabled():
|
|
132
|
+
logger.debug("Label management not enabled (no severity_labels configured)")
|
|
133
|
+
return (True, 0, 0)
|
|
134
|
+
|
|
135
|
+
# Get all severities found in results
|
|
136
|
+
found_severities = self._get_severities_in_results(results)
|
|
137
|
+
logger.debug(f"Found severities in results: {found_severities}")
|
|
138
|
+
|
|
139
|
+
# Determine which labels to apply/remove
|
|
140
|
+
labels_to_apply = self._determine_labels_to_apply(found_severities)
|
|
141
|
+
labels_to_remove = self._determine_labels_to_remove(found_severities)
|
|
142
|
+
|
|
143
|
+
logger.debug(f"Labels to apply: {labels_to_apply}")
|
|
144
|
+
logger.debug(f"Labels to remove: {labels_to_remove}")
|
|
145
|
+
|
|
146
|
+
# Get current labels on PR
|
|
147
|
+
current_labels = set(await self.github.get_labels())
|
|
148
|
+
logger.debug(f"Current PR labels: {current_labels}")
|
|
149
|
+
|
|
150
|
+
# Filter: only add labels that aren't already present
|
|
151
|
+
labels_to_add = labels_to_apply - current_labels
|
|
152
|
+
|
|
153
|
+
# Filter: only remove labels that are currently present
|
|
154
|
+
labels_to_actually_remove = labels_to_remove & current_labels
|
|
155
|
+
|
|
156
|
+
success = True
|
|
157
|
+
added_count = 0
|
|
158
|
+
removed_count = 0
|
|
159
|
+
|
|
160
|
+
# Add new labels
|
|
161
|
+
if labels_to_add:
|
|
162
|
+
logger.info(f"Adding labels to PR: {labels_to_add}")
|
|
163
|
+
if await self.github.add_labels(list(labels_to_add)):
|
|
164
|
+
added_count = len(labels_to_add)
|
|
165
|
+
else:
|
|
166
|
+
logger.error("Failed to add labels to PR")
|
|
167
|
+
success = False
|
|
168
|
+
|
|
169
|
+
# Remove old labels
|
|
170
|
+
for label in labels_to_actually_remove:
|
|
171
|
+
logger.info(f"Removing label from PR: {label}")
|
|
172
|
+
if await self.github.remove_label(label):
|
|
173
|
+
removed_count += 1
|
|
174
|
+
else:
|
|
175
|
+
logger.error(f"Failed to remove label: {label}")
|
|
176
|
+
success = False
|
|
177
|
+
|
|
178
|
+
if added_count > 0 or removed_count > 0:
|
|
179
|
+
logger.info(f"Label management complete: added {added_count}, removed {removed_count}")
|
|
180
|
+
else:
|
|
181
|
+
logger.debug("No label changes needed")
|
|
182
|
+
|
|
183
|
+
return (success, added_count, removed_count)
|
|
184
|
+
|
|
185
|
+
async def manage_labels_from_report(self, report: "ValidationReport") -> tuple[bool, int, int]:
|
|
186
|
+
"""Manage PR labels based on validation report.
|
|
187
|
+
|
|
188
|
+
This is a convenience method that extracts results from the report
|
|
189
|
+
and calls manage_labels_from_results().
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
report: ValidationReport object
|
|
193
|
+
|
|
194
|
+
Returns:
|
|
195
|
+
Tuple of (success, labels_added, labels_removed)
|
|
196
|
+
"""
|
|
197
|
+
return await self.manage_labels_from_results(report.results)
|
|
@@ -31,7 +31,7 @@ class ServiceInfo(BaseModel):
|
|
|
31
31
|
class ActionDetail(BaseModel):
|
|
32
32
|
"""Details about an AWS IAM action."""
|
|
33
33
|
|
|
34
|
-
model_config = ConfigDict(
|
|
34
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True)
|
|
35
35
|
|
|
36
36
|
name: str = Field(alias="Name")
|
|
37
37
|
action_condition_keys: list[str] | None = Field(
|
|
@@ -45,7 +45,7 @@ class ActionDetail(BaseModel):
|
|
|
45
45
|
class ResourceType(BaseModel):
|
|
46
46
|
"""Details about an AWS resource type."""
|
|
47
47
|
|
|
48
|
-
model_config = ConfigDict(
|
|
48
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True)
|
|
49
49
|
|
|
50
50
|
name: str = Field(alias="Name")
|
|
51
51
|
arn_formats: list[str] | None = Field(default=None, alias="ARNFormats")
|
|
@@ -68,7 +68,7 @@ class ResourceType(BaseModel):
|
|
|
68
68
|
class ConditionKey(BaseModel):
|
|
69
69
|
"""Details about an AWS condition key."""
|
|
70
70
|
|
|
71
|
-
model_config = ConfigDict(
|
|
71
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True)
|
|
72
72
|
|
|
73
73
|
name: str = Field(alias="Name")
|
|
74
74
|
description: str | None = Field(default=None, alias="Description")
|
|
@@ -78,7 +78,7 @@ class ConditionKey(BaseModel):
|
|
|
78
78
|
class ServiceDetail(BaseModel):
|
|
79
79
|
"""Detailed information about an AWS service."""
|
|
80
80
|
|
|
81
|
-
model_config = ConfigDict(
|
|
81
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True)
|
|
82
82
|
|
|
83
83
|
name: str = Field(alias="Name")
|
|
84
84
|
prefix: str | None = None # Not always present in API response
|
|
@@ -106,7 +106,7 @@ class ServiceDetail(BaseModel):
|
|
|
106
106
|
class Statement(BaseModel):
|
|
107
107
|
"""IAM policy statement."""
|
|
108
108
|
|
|
109
|
-
model_config = ConfigDict(
|
|
109
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True, extra="allow")
|
|
110
110
|
|
|
111
111
|
sid: str | None = Field(default=None, alias="Sid")
|
|
112
112
|
effect: str | None = Field(default=None, alias="Effect")
|
|
@@ -136,7 +136,7 @@ class Statement(BaseModel):
|
|
|
136
136
|
class IAMPolicy(BaseModel):
|
|
137
137
|
"""IAM policy document."""
|
|
138
138
|
|
|
139
|
-
model_config = ConfigDict(
|
|
139
|
+
model_config = ConfigDict(validate_by_name=True, validate_by_alias=True, extra="allow")
|
|
140
140
|
|
|
141
141
|
version: str | None = Field(default=None, alias="Version")
|
|
142
142
|
statement: list[Statement] | None = Field(default=None, alias="Statement")
|
{iam_policy_validator-1.9.0 → iam_policy_validator-1.10.1}/iam_validator/core/pr_commenter.py
RENAMED
|
@@ -13,7 +13,9 @@ from iam_validator.core.constants import (
|
|
|
13
13
|
REVIEW_IDENTIFIER,
|
|
14
14
|
SUMMARY_IDENTIFIER,
|
|
15
15
|
)
|
|
16
|
+
from iam_validator.core.label_manager import LabelManager
|
|
16
17
|
from iam_validator.core.models import ValidationIssue, ValidationReport
|
|
18
|
+
from iam_validator.core.report import ReportGenerator
|
|
17
19
|
from iam_validator.integrations.github_integration import GitHubIntegration, ReviewEvent
|
|
18
20
|
|
|
19
21
|
logger = logging.getLogger(__name__)
|
|
@@ -32,6 +34,7 @@ class PRCommenter:
|
|
|
32
34
|
github: GitHubIntegration | None = None,
|
|
33
35
|
cleanup_old_comments: bool = True,
|
|
34
36
|
fail_on_severities: list[str] | None = None,
|
|
37
|
+
severity_labels: dict[str, str | list[str]] | None = None,
|
|
35
38
|
):
|
|
36
39
|
"""Initialize PR commenter.
|
|
37
40
|
|
|
@@ -40,16 +43,24 @@ class PRCommenter:
|
|
|
40
43
|
cleanup_old_comments: Whether to clean up old bot comments before posting new ones
|
|
41
44
|
fail_on_severities: List of severity levels that should trigger REQUEST_CHANGES
|
|
42
45
|
(e.g., ["error", "critical", "high"])
|
|
46
|
+
severity_labels: Mapping of severity levels to label name(s) for automatic label management
|
|
47
|
+
Supports both single labels and lists of labels per severity.
|
|
48
|
+
Examples:
|
|
49
|
+
- Single: {"error": "iam-validity-error", "critical": "security-critical"}
|
|
50
|
+
- Multiple: {"error": ["iam-error", "needs-fix"], "critical": ["security-critical", "needs-review"]}
|
|
51
|
+
- Mixed: {"error": "iam-validity-error", "critical": ["security-critical", "needs-review"]}
|
|
43
52
|
"""
|
|
44
53
|
self.github = github
|
|
45
54
|
self.cleanup_old_comments = cleanup_old_comments
|
|
46
55
|
self.fail_on_severities = fail_on_severities or ["error", "critical"]
|
|
56
|
+
self.severity_labels = severity_labels or {}
|
|
47
57
|
|
|
48
58
|
async def post_findings_to_pr(
|
|
49
59
|
self,
|
|
50
60
|
report: ValidationReport,
|
|
51
61
|
create_review: bool = True,
|
|
52
62
|
add_summary_comment: bool = True,
|
|
63
|
+
manage_labels: bool = True,
|
|
53
64
|
) -> bool:
|
|
54
65
|
"""Post validation findings to a PR.
|
|
55
66
|
|
|
@@ -57,6 +68,7 @@ class PRCommenter:
|
|
|
57
68
|
report: Validation report with findings
|
|
58
69
|
create_review: Whether to create a PR review with line comments
|
|
59
70
|
add_summary_comment: Whether to add a summary comment
|
|
71
|
+
manage_labels: Whether to manage PR labels based on severity findings
|
|
60
72
|
|
|
61
73
|
Returns:
|
|
62
74
|
True if successful, False otherwise
|
|
@@ -81,8 +93,6 @@ class PRCommenter:
|
|
|
81
93
|
|
|
82
94
|
# Post summary comment (potentially as multiple parts)
|
|
83
95
|
if add_summary_comment:
|
|
84
|
-
from iam_validator.core.report import ReportGenerator
|
|
85
|
-
|
|
86
96
|
generator = ReportGenerator()
|
|
87
97
|
comment_parts = generator.generate_github_comment_parts(report)
|
|
88
98
|
|
|
@@ -104,6 +114,18 @@ class PRCommenter:
|
|
|
104
114
|
logger.error("Failed to post review comments")
|
|
105
115
|
success = False
|
|
106
116
|
|
|
117
|
+
# Manage PR labels based on severity findings
|
|
118
|
+
if manage_labels and self.severity_labels:
|
|
119
|
+
label_manager = LabelManager(self.github, self.severity_labels)
|
|
120
|
+
label_success, added, removed = await label_manager.manage_labels_from_report(report)
|
|
121
|
+
|
|
122
|
+
if not label_success:
|
|
123
|
+
logger.error("Failed to manage PR labels")
|
|
124
|
+
success = False
|
|
125
|
+
else:
|
|
126
|
+
if added > 0 or removed > 0:
|
|
127
|
+
logger.info(f"Label management: added {added}, removed {removed}")
|
|
128
|
+
|
|
107
129
|
return success
|
|
108
130
|
|
|
109
131
|
async def _post_review_comments(self, report: ValidationReport) -> bool:
|
|
@@ -288,7 +310,7 @@ class PRCommenter:
|
|
|
288
310
|
|
|
289
311
|
return mapping
|
|
290
312
|
|
|
291
|
-
except Exception as e:
|
|
313
|
+
except Exception as e: # pylint: disable=broad-exception-caught
|
|
292
314
|
logger.warning(f"Could not parse {policy_file} for line mapping: {e}")
|
|
293
315
|
return {}
|
|
294
316
|
|
|
@@ -369,7 +391,7 @@ class PRCommenter:
|
|
|
369
391
|
|
|
370
392
|
return None
|
|
371
393
|
|
|
372
|
-
except Exception as e:
|
|
394
|
+
except Exception as e: # pylint: disable=broad-exception-caught
|
|
373
395
|
logger.debug(f"Could not search {policy_file}: {e}")
|
|
374
396
|
return None
|
|
375
397
|
|
|
@@ -398,15 +420,20 @@ async def post_report_to_pr(
|
|
|
398
420
|
|
|
399
421
|
report = ValidationReport.model_validate(report_data)
|
|
400
422
|
|
|
401
|
-
# Load config to get fail_on_severity
|
|
423
|
+
# Load config to get fail_on_severity and severity_labels settings
|
|
402
424
|
from iam_validator.core.config.config_loader import ConfigLoader
|
|
403
425
|
|
|
404
426
|
config = ConfigLoader.load_config(config_path)
|
|
405
427
|
fail_on_severities = config.get_setting("fail_on_severity", ["error", "critical"])
|
|
428
|
+
severity_labels = config.get_setting("severity_labels", {})
|
|
406
429
|
|
|
407
430
|
# Post to PR
|
|
408
431
|
async with GitHubIntegration() as github:
|
|
409
|
-
commenter = PRCommenter(
|
|
432
|
+
commenter = PRCommenter(
|
|
433
|
+
github,
|
|
434
|
+
fail_on_severities=fail_on_severities,
|
|
435
|
+
severity_labels=severity_labels,
|
|
436
|
+
)
|
|
410
437
|
return await commenter.post_findings_to_pr(
|
|
411
438
|
report,
|
|
412
439
|
create_review=create_review,
|
|
@@ -419,6 +446,6 @@ async def post_report_to_pr(
|
|
|
419
446
|
except json.JSONDecodeError as e:
|
|
420
447
|
logger.error(f"Invalid JSON in report file: {e}")
|
|
421
448
|
return False
|
|
422
|
-
except Exception as e:
|
|
449
|
+
except Exception as e: # pylint: disable=broad-exception-caught
|
|
423
450
|
logger.error(f"Failed to post report to PR: {e}")
|
|
424
451
|
return False
|