iam-policy-validator 1.0.2__tar.gz → 1.5.0__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.0.2 → iam_policy_validator-1.5.0}/.github/workflows/ci.yml +20 -51
- iam_policy_validator-1.5.0/.github/workflows/release.yml +168 -0
- iam_policy_validator-1.5.0/.python-version +1 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/CONTRIBUTING.md +41 -31
- iam_policy_validator-1.5.0/DOCS.md +1423 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/Makefile +24 -3
- iam_policy_validator-1.5.0/PKG-INFO +1021 -0
- iam_policy_validator-1.5.0/README.md +979 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/action.yaml +145 -10
- iam_policy_validator-1.5.0/aws_services/_manifest.json +7 -0
- iam_policy_validator-1.5.0/aws_services/_services.json +1722 -0
- iam_policy_validator-1.5.0/aws_services/a2c.json +66 -0
- iam_policy_validator-1.5.0/aws_services/a4b.json +1945 -0
- iam_policy_validator-1.5.0/aws_services/access-analyzer.json +717 -0
- iam_policy_validator-1.5.0/aws_services/account.json +409 -0
- iam_policy_validator-1.5.0/aws_services/acm-pca.json +511 -0
- iam_policy_validator-1.5.0/aws_services/acm.json +401 -0
- iam_policy_validator-1.5.0/aws_services/action-recommendations.json +21 -0
- iam_policy_validator-1.5.0/aws_services/activate.json +126 -0
- iam_policy_validator-1.5.0/aws_services/aiops.json +694 -0
- iam_policy_validator-1.5.0/aws_services/airflow.json +301 -0
- iam_policy_validator-1.5.0/aws_services/amplify.json +917 -0
- iam_policy_validator-1.5.0/aws_services/amplifybackend.json +797 -0
- iam_policy_validator-1.5.0/aws_services/amplifyuibuilder.json +698 -0
- iam_policy_validator-1.5.0/aws_services/aoss.json +787 -0
- iam_policy_validator-1.5.0/aws_services/apigateway.json +1812 -0
- iam_policy_validator-1.5.0/aws_services/app-integrations.json +860 -0
- iam_policy_validator-1.5.0/aws_services/appconfig.json +1212 -0
- iam_policy_validator-1.5.0/aws_services/appfabric.json +691 -0
- iam_policy_validator-1.5.0/aws_services/appflow.json +671 -0
- iam_policy_validator-1.5.0/aws_services/application-autoscaling.json +337 -0
- iam_policy_validator-1.5.0/aws_services/application-signals.json +453 -0
- iam_policy_validator-1.5.0/aws_services/application-transformation.json +216 -0
- iam_policy_validator-1.5.0/aws_services/applicationinsights.json +543 -0
- iam_policy_validator-1.5.0/aws_services/appmesh-preview.json +855 -0
- iam_policy_validator-1.5.0/aws_services/appmesh.json +1045 -0
- iam_policy_validator-1.5.0/aws_services/apprunner.json +1057 -0
- iam_policy_validator-1.5.0/aws_services/appstream.json +1800 -0
- iam_policy_validator-1.5.0/aws_services/appstudio.json +101 -0
- iam_policy_validator-1.5.0/aws_services/appsync.json +1621 -0
- iam_policy_validator-1.5.0/aws_services/apptest.json +540 -0
- iam_policy_validator-1.5.0/aws_services/aps.json +1504 -0
- iam_policy_validator-1.5.0/aws_services/arc-region-switch.json +493 -0
- iam_policy_validator-1.5.0/aws_services/arc-zonal-shift.json +405 -0
- iam_policy_validator-1.5.0/aws_services/arsenal.json +21 -0
- iam_policy_validator-1.5.0/aws_services/artifact.json +299 -0
- iam_policy_validator-1.5.0/aws_services/athena.json +1600 -0
- iam_policy_validator-1.5.0/aws_services/auditmanager.json +1228 -0
- iam_policy_validator-1.5.0/aws_services/autoscaling-plans.json +96 -0
- iam_policy_validator-1.5.0/aws_services/autoscaling.json +1600 -0
- iam_policy_validator-1.5.0/aws_services/aws-marketplace-management.json +201 -0
- iam_policy_validator-1.5.0/aws_services/aws-marketplace.json +1031 -0
- iam_policy_validator-1.5.0/aws_services/aws-portal.json +141 -0
- iam_policy_validator-1.5.0/aws_services/awsconnector.json +51 -0
- iam_policy_validator-1.5.0/aws_services/b2bi.json +693 -0
- iam_policy_validator-1.5.0/aws_services/backup-gateway.json +606 -0
- iam_policy_validator-1.5.0/aws_services/backup-search.json +296 -0
- iam_policy_validator-1.5.0/aws_services/backup-storage.json +231 -0
- iam_policy_validator-1.5.0/aws_services/backup.json +2196 -0
- iam_policy_validator-1.5.0/aws_services/batch.json +1071 -0
- iam_policy_validator-1.5.0/aws_services/bcm-dashboards.json +162 -0
- iam_policy_validator-1.5.0/aws_services/bcm-data-exports.json +307 -0
- iam_policy_validator-1.5.0/aws_services/bcm-pricing-calculator.json +723 -0
- iam_policy_validator-1.5.0/aws_services/bcm-recommended-actions.json +21 -0
- iam_policy_validator-1.5.0/aws_services/bedrock-agentcore.json +2283 -0
- iam_policy_validator-1.5.0/aws_services/bedrock.json +5215 -0
- iam_policy_validator-1.5.0/aws_services/billing.json +570 -0
- iam_policy_validator-1.5.0/aws_services/billingconductor.json +729 -0
- iam_policy_validator-1.5.0/aws_services/braket.json +347 -0
- iam_policy_validator-1.5.0/aws_services/budgets.json +326 -0
- iam_policy_validator-1.5.0/aws_services/bugbust.json +421 -0
- iam_policy_validator-1.5.0/aws_services/cases.json +1053 -0
- iam_policy_validator-1.5.0/aws_services/cassandra.json +536 -0
- iam_policy_validator-1.5.0/aws_services/ce.json +1143 -0
- iam_policy_validator-1.5.0/aws_services/chatbot.json +772 -0
- iam_policy_validator-1.5.0/aws_services/chime.json +6165 -0
- iam_policy_validator-1.5.0/aws_services/cleanrooms-ml.json +1501 -0
- iam_policy_validator-1.5.0/aws_services/cleanrooms.json +2193 -0
- iam_policy_validator-1.5.0/aws_services/cloud9.json +667 -0
- iam_policy_validator-1.5.0/aws_services/clouddirectory.json +1385 -0
- iam_policy_validator-1.5.0/aws_services/cloudformation.json +2024 -0
- iam_policy_validator-1.5.0/aws_services/cloudfront-keyvaluestore.json +134 -0
- iam_policy_validator-1.5.0/aws_services/cloudfront.json +3023 -0
- iam_policy_validator-1.5.0/aws_services/cloudhsm.json +415 -0
- iam_policy_validator-1.5.0/aws_services/cloudsearch.json +654 -0
- iam_policy_validator-1.5.0/aws_services/cloudshell.json +249 -0
- iam_policy_validator-1.5.0/aws_services/cloudtrail-data.json +57 -0
- iam_policy_validator-1.5.0/aws_services/cloudtrail.json +1361 -0
- iam_policy_validator-1.5.0/aws_services/cloudwatch.json +1139 -0
- iam_policy_validator-1.5.0/aws_services/codeartifact.json +1096 -0
- iam_policy_validator-1.5.0/aws_services/codebuild.json +2400 -0
- iam_policy_validator-1.5.0/aws_services/codecatalyst.json +708 -0
- iam_policy_validator-1.5.0/aws_services/codecommit.json +1853 -0
- iam_policy_validator-1.5.0/aws_services/codeconnections.json +893 -0
- iam_policy_validator-1.5.0/aws_services/codedeploy-commands-secure.json +66 -0
- iam_policy_validator-1.5.0/aws_services/codedeploy.json +972 -0
- iam_policy_validator-1.5.0/aws_services/codeguru-profiler.json +493 -0
- iam_policy_validator-1.5.0/aws_services/codeguru-reviewer.json +391 -0
- iam_policy_validator-1.5.0/aws_services/codeguru-security.json +319 -0
- iam_policy_validator-1.5.0/aws_services/codeguru.json +21 -0
- iam_policy_validator-1.5.0/aws_services/codepipeline.json +928 -0
- iam_policy_validator-1.5.0/aws_services/codestar-connections.json +893 -0
- iam_policy_validator-1.5.0/aws_services/codestar-notifications.json +340 -0
- iam_policy_validator-1.5.0/aws_services/codestar.json +478 -0
- iam_policy_validator-1.5.0/aws_services/codewhisperer.json +455 -0
- iam_policy_validator-1.5.0/aws_services/cognito-identity.json +518 -0
- iam_policy_validator-1.5.0/aws_services/cognito-idp.json +2277 -0
- iam_policy_validator-1.5.0/aws_services/cognito-sync.json +401 -0
- iam_policy_validator-1.5.0/aws_services/comprehend.json +2071 -0
- iam_policy_validator-1.5.0/aws_services/comprehendmedical.json +389 -0
- iam_policy_validator-1.5.0/aws_services/compute-optimizer.json +446 -0
- iam_policy_validator-1.5.0/aws_services/config.json +1936 -0
- iam_policy_validator-1.5.0/aws_services/connect-campaigns.json +768 -0
- iam_policy_validator-1.5.0/aws_services/connect.json +7821 -0
- iam_policy_validator-1.5.0/aws_services/consoleapp.json +49 -0
- iam_policy_validator-1.5.0/aws_services/consolidatedbilling.json +36 -0
- iam_policy_validator-1.5.0/aws_services/controlcatalog.json +132 -0
- iam_policy_validator-1.5.0/aws_services/controltower.json +1158 -0
- iam_policy_validator-1.5.0/aws_services/cost-optimization-hub.json +111 -0
- iam_policy_validator-1.5.0/aws_services/cur.json +261 -0
- iam_policy_validator-1.5.0/aws_services/customer-verification.json +81 -0
- iam_policy_validator-1.5.0/aws_services/databrew.json +984 -0
- iam_policy_validator-1.5.0/aws_services/dataexchange.json +956 -0
- iam_policy_validator-1.5.0/aws_services/datapipeline.json +514 -0
- iam_policy_validator-1.5.0/aws_services/datasync.json +1441 -0
- iam_policy_validator-1.5.0/aws_services/datazone.json +3021 -0
- iam_policy_validator-1.5.0/aws_services/dax.json +579 -0
- iam_policy_validator-1.5.0/aws_services/dbqms.json +201 -0
- iam_policy_validator-1.5.0/aws_services/deadline.json +2639 -0
- iam_policy_validator-1.5.0/aws_services/deepcomposer.json +442 -0
- iam_policy_validator-1.5.0/aws_services/deepracer.json +1302 -0
- iam_policy_validator-1.5.0/aws_services/detective.json +733 -0
- iam_policy_validator-1.5.0/aws_services/devicefarm.json +1751 -0
- iam_policy_validator-1.5.0/aws_services/devops-guru.json +503 -0
- iam_policy_validator-1.5.0/aws_services/directconnect.json +1424 -0
- iam_policy_validator-1.5.0/aws_services/discovery.json +452 -0
- iam_policy_validator-1.5.0/aws_services/dlm.json +198 -0
- iam_policy_validator-1.5.0/aws_services/dms.json +2544 -0
- iam_policy_validator-1.5.0/aws_services/docdb-elastic.json +481 -0
- iam_policy_validator-1.5.0/aws_services/drs.json +1937 -0
- iam_policy_validator-1.5.0/aws_services/ds-data.json +478 -0
- iam_policy_validator-1.5.0/aws_services/ds.json +1810 -0
- iam_policy_validator-1.5.0/aws_services/dsql.json +567 -0
- iam_policy_validator-1.5.0/aws_services/dynamodb.json +1640 -0
- iam_policy_validator-1.5.0/aws_services/ebs.json +203 -0
- iam_policy_validator-1.5.0/aws_services/ec2-instance-connect.json +139 -0
- iam_policy_validator-1.5.0/aws_services/ec2.json +25565 -0
- iam_policy_validator-1.5.0/aws_services/ec2messages.json +118 -0
- iam_policy_validator-1.5.0/aws_services/ecr-public.json +516 -0
- iam_policy_validator-1.5.0/aws_services/ecr.json +1016 -0
- iam_policy_validator-1.5.0/aws_services/ecs.json +1832 -0
- iam_policy_validator-1.5.0/aws_services/eks-auth.json +45 -0
- iam_policy_validator-1.5.0/aws_services/eks.json +1597 -0
- iam_policy_validator-1.5.0/aws_services/elasticache.json +2402 -0
- iam_policy_validator-1.5.0/aws_services/elasticbeanstalk.json +1331 -0
- iam_policy_validator-1.5.0/aws_services/elasticfilesystem.json +866 -0
- iam_policy_validator-1.5.0/aws_services/elasticloadbalancing.json +1911 -0
- iam_policy_validator-1.5.0/aws_services/elasticmapreduce.json +1690 -0
- iam_policy_validator-1.5.0/aws_services/elastictranscoder.json +339 -0
- iam_policy_validator-1.5.0/aws_services/elemental-activations.json +201 -0
- iam_policy_validator-1.5.0/aws_services/elemental-appliances-software.json +239 -0
- iam_policy_validator-1.5.0/aws_services/elemental-support-cases.json +363 -0
- iam_policy_validator-1.5.0/aws_services/elemental-support-content.json +21 -0
- iam_policy_validator-1.5.0/aws_services/emr-containers.json +616 -0
- iam_policy_validator-1.5.0/aws_services/emr-serverless.json +440 -0
- iam_policy_validator-1.5.0/aws_services/entityresolution.json +840 -0
- iam_policy_validator-1.5.0/aws_services/es.json +2084 -0
- iam_policy_validator-1.5.0/aws_services/events.json +1451 -0
- iam_policy_validator-1.5.0/aws_services/evidently.json +819 -0
- iam_policy_validator-1.5.0/aws_services/evs.json +300 -0
- iam_policy_validator-1.5.0/aws_services/execute-api.json +94 -0
- iam_policy_validator-1.5.0/aws_services/finspace-api.json +34 -0
- iam_policy_validator-1.5.0/aws_services/finspace.json +1400 -0
- iam_policy_validator-1.5.0/aws_services/firehose.json +283 -0
- iam_policy_validator-1.5.0/aws_services/fis.json +713 -0
- iam_policy_validator-1.5.0/aws_services/fms.json +851 -0
- iam_policy_validator-1.5.0/aws_services/forecast.json +1757 -0
- iam_policy_validator-1.5.0/aws_services/frauddetector.json +1878 -0
- iam_policy_validator-1.5.0/aws_services/freertos.json +379 -0
- iam_policy_validator-1.5.0/aws_services/freetier.json +111 -0
- iam_policy_validator-1.5.0/aws_services/fsx.json +1400 -0
- iam_policy_validator-1.5.0/aws_services/gamelift.json +2421 -0
- iam_policy_validator-1.5.0/aws_services/gameliftstreams.json +531 -0
- iam_policy_validator-1.5.0/aws_services/geo-maps.json +54 -0
- iam_policy_validator-1.5.0/aws_services/geo-places.json +154 -0
- iam_policy_validator-1.5.0/aws_services/geo-routes.json +114 -0
- iam_policy_validator-1.5.0/aws_services/geo.json +1402 -0
- iam_policy_validator-1.5.0/aws_services/glacier.json +669 -0
- iam_policy_validator-1.5.0/aws_services/globalaccelerator.json +1142 -0
- iam_policy_validator-1.5.0/aws_services/glue.json +6633 -0
- iam_policy_validator-1.5.0/aws_services/grafana.json +538 -0
- iam_policy_validator-1.5.0/aws_services/greengrass.json +2532 -0
- iam_policy_validator-1.5.0/aws_services/groundstation.json +810 -0
- iam_policy_validator-1.5.0/aws_services/groundtruthlabeling.json +246 -0
- iam_policy_validator-1.5.0/aws_services/guardduty.json +1615 -0
- iam_policy_validator-1.5.0/aws_services/health.json +256 -0
- iam_policy_validator-1.5.0/aws_services/healthlake.json +779 -0
- iam_policy_validator-1.5.0/aws_services/honeycode.json +542 -0
- iam_policy_validator-1.5.0/aws_services/iam.json +3720 -0
- iam_policy_validator-1.5.0/aws_services/identity-sync.json +284 -0
- iam_policy_validator-1.5.0/aws_services/identitystore-auth.json +51 -0
- iam_policy_validator-1.5.0/aws_services/identitystore.json +567 -0
- iam_policy_validator-1.5.0/aws_services/imagebuilder.json +1791 -0
- iam_policy_validator-1.5.0/aws_services/importexport.json +96 -0
- iam_policy_validator-1.5.0/aws_services/inspector-scan.json +21 -0
- iam_policy_validator-1.5.0/aws_services/inspector.json +561 -0
- iam_policy_validator-1.5.0/aws_services/inspector2.json +1325 -0
- iam_policy_validator-1.5.0/aws_services/internetmonitor.json +388 -0
- iam_policy_validator-1.5.0/aws_services/invoicing.json +329 -0
- iam_policy_validator-1.5.0/aws_services/iot-device-tester.json +81 -0
- iam_policy_validator-1.5.0/aws_services/iot.json +6181 -0
- iam_policy_validator-1.5.0/aws_services/iotanalytics.json +768 -0
- iam_policy_validator-1.5.0/aws_services/iotdeviceadvisor.json +330 -0
- iam_policy_validator-1.5.0/aws_services/iotevents.json +833 -0
- iam_policy_validator-1.5.0/aws_services/iotfleethub.json +198 -0
- iam_policy_validator-1.5.0/aws_services/iotfleetwise.json +1313 -0
- iam_policy_validator-1.5.0/aws_services/iotjobsdata.json +108 -0
- iam_policy_validator-1.5.0/aws_services/iotmanagedintegrations.json +1568 -0
- iam_policy_validator-1.5.0/aws_services/iotsitewise.json +2388 -0
- iam_policy_validator-1.5.0/aws_services/iottwinmaker.json +990 -0
- iam_policy_validator-1.5.0/aws_services/iotwireless.json +2459 -0
- iam_policy_validator-1.5.0/aws_services/iq-permission.json +194 -0
- iam_policy_validator-1.5.0/aws_services/iq.json +1295 -0
- iam_policy_validator-1.5.0/aws_services/ivs.json +1696 -0
- iam_policy_validator-1.5.0/aws_services/ivschat.json +415 -0
- iam_policy_validator-1.5.0/aws_services/kafka-cluster.json +423 -0
- iam_policy_validator-1.5.0/aws_services/kafka.json +1116 -0
- iam_policy_validator-1.5.0/aws_services/kafkaconnect.json +452 -0
- iam_policy_validator-1.5.0/aws_services/kendra-ranking.json +218 -0
- iam_policy_validator-1.5.0/aws_services/kendra.json +1576 -0
- iam_policy_validator-1.5.0/aws_services/kinesis.json +925 -0
- iam_policy_validator-1.5.0/aws_services/kinesisanalytics.json +713 -0
- iam_policy_validator-1.5.0/aws_services/kinesisvideo.json +942 -0
- iam_policy_validator-1.5.0/aws_services/kms.json +2213 -0
- iam_policy_validator-1.5.0/aws_services/lakeformation.json +902 -0
- iam_policy_validator-1.5.0/aws_services/lambda.json +1616 -0
- iam_policy_validator-1.5.0/aws_services/launchwizard.json +643 -0
- iam_policy_validator-1.5.0/aws_services/lex.json +3086 -0
- iam_policy_validator-1.5.0/aws_services/license-manager-linux-subscriptions.json +238 -0
- iam_policy_validator-1.5.0/aws_services/license-manager-user-subscriptions.json +440 -0
- iam_policy_validator-1.5.0/aws_services/license-manager.json +1007 -0
- iam_policy_validator-1.5.0/aws_services/lightsail.json +3142 -0
- iam_policy_validator-1.5.0/aws_services/logs.json +2007 -0
- iam_policy_validator-1.5.0/aws_services/lookoutequipment.json +1138 -0
- iam_policy_validator-1.5.0/aws_services/lookoutmetrics.json +689 -0
- iam_policy_validator-1.5.0/aws_services/lookoutvision.json +494 -0
- iam_policy_validator-1.5.0/aws_services/m2.json +775 -0
- iam_policy_validator-1.5.0/aws_services/machinelearning.json +614 -0
- iam_policy_validator-1.5.0/aws_services/macie2.json +1464 -0
- iam_policy_validator-1.5.0/aws_services/managedblockchain-query.json +141 -0
- iam_policy_validator-1.5.0/aws_services/managedblockchain.json +780 -0
- iam_policy_validator-1.5.0/aws_services/mapcredits.json +74 -0
- iam_policy_validator-1.5.0/aws_services/marketplacecommerceanalytics.json +36 -0
- iam_policy_validator-1.5.0/aws_services/mechanicalturk.json +591 -0
- iam_policy_validator-1.5.0/aws_services/mediaconnect.json +960 -0
- iam_policy_validator-1.5.0/aws_services/mediaconvert.json +733 -0
- iam_policy_validator-1.5.0/aws_services/mediaimport.json +21 -0
- iam_policy_validator-1.5.0/aws_services/medialive.json +2777 -0
- iam_policy_validator-1.5.0/aws_services/mediapackage-vod.json +402 -0
- iam_policy_validator-1.5.0/aws_services/mediapackage.json +442 -0
- iam_policy_validator-1.5.0/aws_services/mediapackagev2.json +921 -0
- iam_policy_validator-1.5.0/aws_services/mediastore.json +570 -0
- iam_policy_validator-1.5.0/aws_services/mediatailor.json +974 -0
- iam_policy_validator-1.5.0/aws_services/medical-imaging.json +638 -0
- iam_policy_validator-1.5.0/aws_services/memorydb.json +1259 -0
- iam_policy_validator-1.5.0/aws_services/mgh.json +932 -0
- iam_policy_validator-1.5.0/aws_services/mgn.json +2644 -0
- iam_policy_validator-1.5.0/aws_services/migrationhub-orchestrator.json +711 -0
- iam_policy_validator-1.5.0/aws_services/migrationhub-strategy.json +471 -0
- iam_policy_validator-1.5.0/aws_services/mobileanalytics.json +51 -0
- iam_policy_validator-1.5.0/aws_services/mobiletargeting.json +2802 -0
- iam_policy_validator-1.5.0/aws_services/monitron.json +398 -0
- iam_policy_validator-1.5.0/aws_services/mpa.json +534 -0
- iam_policy_validator-1.5.0/aws_services/mq.json +560 -0
- iam_policy_validator-1.5.0/aws_services/neptune-db.json +697 -0
- iam_policy_validator-1.5.0/aws_services/neptune-graph.json +956 -0
- iam_policy_validator-1.5.0/aws_services/network-firewall.json +1370 -0
- iam_policy_validator-1.5.0/aws_services/network-security-director.json +141 -0
- iam_policy_validator-1.5.0/aws_services/networkflowmonitor.json +570 -0
- iam_policy_validator-1.5.0/aws_services/networkmanager-chat.json +111 -0
- iam_policy_validator-1.5.0/aws_services/networkmanager.json +2143 -0
- iam_policy_validator-1.5.0/aws_services/networkmonitor.json +288 -0
- iam_policy_validator-1.5.0/aws_services/nimble.json +1265 -0
- iam_policy_validator-1.5.0/aws_services/notifications-contacts.json +213 -0
- iam_policy_validator-1.5.0/aws_services/notifications.json +813 -0
- iam_policy_validator-1.5.0/aws_services/oam.json +387 -0
- iam_policy_validator-1.5.0/aws_services/observabilityadmin.json +628 -0
- iam_policy_validator-1.5.0/aws_services/odb.json +1076 -0
- iam_policy_validator-1.5.0/aws_services/omics.json +2088 -0
- iam_policy_validator-1.5.0/aws_services/one.json +675 -0
- iam_policy_validator-1.5.0/aws_services/opensearch.json +120 -0
- iam_policy_validator-1.5.0/aws_services/opsworks-cm.json +305 -0
- iam_policy_validator-1.5.0/aws_services/opsworks.json +1454 -0
- iam_policy_validator-1.5.0/aws_services/organizations.json +1311 -0
- iam_policy_validator-1.5.0/aws_services/osis.json +497 -0
- iam_policy_validator-1.5.0/aws_services/outposts.json +729 -0
- iam_policy_validator-1.5.0/aws_services/panorama.json +727 -0
- iam_policy_validator-1.5.0/aws_services/partnercentral-account-management.json +51 -0
- iam_policy_validator-1.5.0/aws_services/partnercentral.json +940 -0
- iam_policy_validator-1.5.0/aws_services/payment-cryptography.json +777 -0
- iam_policy_validator-1.5.0/aws_services/payments.json +428 -0
- iam_policy_validator-1.5.0/aws_services/pca-connector-ad.json +564 -0
- iam_policy_validator-1.5.0/aws_services/pca-connector-scep.json +282 -0
- iam_policy_validator-1.5.0/aws_services/pcs.json +510 -0
- iam_policy_validator-1.5.0/aws_services/personalize.json +1661 -0
- iam_policy_validator-1.5.0/aws_services/pi.json +335 -0
- iam_policy_validator-1.5.0/aws_services/pipes.json +264 -0
- iam_policy_validator-1.5.0/aws_services/polly.json +174 -0
- iam_policy_validator-1.5.0/aws_services/pricing.json +81 -0
- iam_policy_validator-1.5.0/aws_services/private-networks.json +646 -0
- iam_policy_validator-1.5.0/aws_services/profile.json +1988 -0
- iam_policy_validator-1.5.0/aws_services/proton.json +2482 -0
- iam_policy_validator-1.5.0/aws_services/purchase-orders.json +341 -0
- iam_policy_validator-1.5.0/aws_services/q.json +699 -0
- iam_policy_validator-1.5.0/aws_services/qapps.json +1017 -0
- iam_policy_validator-1.5.0/aws_services/qbusiness.json +2236 -0
- iam_policy_validator-1.5.0/aws_services/qdeveloper.json +183 -0
- iam_policy_validator-1.5.0/aws_services/qldb.json +816 -0
- iam_policy_validator-1.5.0/aws_services/quicksight.json +5593 -0
- iam_policy_validator-1.5.0/aws_services/ram.json +877 -0
- iam_policy_validator-1.5.0/aws_services/rbin.json +287 -0
- iam_policy_validator-1.5.0/aws_services/rds-data.json +176 -0
- iam_policy_validator-1.5.0/aws_services/rds-db.json +34 -0
- iam_policy_validator-1.5.0/aws_services/rds.json +4376 -0
- iam_policy_validator-1.5.0/aws_services/redshift-data.json +296 -0
- iam_policy_validator-1.5.0/aws_services/redshift-serverless.json +1335 -0
- iam_policy_validator-1.5.0/aws_services/redshift.json +3367 -0
- iam_policy_validator-1.5.0/aws_services/refactor-spaces.json +655 -0
- iam_policy_validator-1.5.0/aws_services/rekognition.json +1503 -0
- iam_policy_validator-1.5.0/aws_services/repostspace.json +422 -0
- iam_policy_validator-1.5.0/aws_services/resiliencehub.json +1325 -0
- iam_policy_validator-1.5.0/aws_services/resource-explorer-2.json +705 -0
- iam_policy_validator-1.5.0/aws_services/resource-explorer.json +51 -0
- iam_policy_validator-1.5.0/aws_services/resource-groups.json +607 -0
- iam_policy_validator-1.5.0/aws_services/rhelkb.json +21 -0
- iam_policy_validator-1.5.0/aws_services/robomaker.json +1335 -0
- iam_policy_validator-1.5.0/aws_services/rolesanywhere.json +661 -0
- iam_policy_validator-1.5.0/aws_services/route53-recovery-cluster.json +103 -0
- iam_policy_validator-1.5.0/aws_services/route53-recovery-control-config.json +627 -0
- iam_policy_validator-1.5.0/aws_services/route53-recovery-readiness.json +713 -0
- iam_policy_validator-1.5.0/aws_services/route53.json +1418 -0
- iam_policy_validator-1.5.0/aws_services/route53domains.json +516 -0
- iam_policy_validator-1.5.0/aws_services/route53profiles.json +357 -0
- iam_policy_validator-1.5.0/aws_services/route53resolver.json +1540 -0
- iam_policy_validator-1.5.0/aws_services/rtbfabric.json +632 -0
- iam_policy_validator-1.5.0/aws_services/rum.json +438 -0
- iam_policy_validator-1.5.0/aws_services/s3-object-lambda.json +697 -0
- iam_policy_validator-1.5.0/aws_services/s3-outposts.json +1445 -0
- iam_policy_validator-1.5.0/aws_services/s3.json +5374 -0
- iam_policy_validator-1.5.0/aws_services/s3express.json +845 -0
- iam_policy_validator-1.5.0/aws_services/s3tables.json +788 -0
- iam_policy_validator-1.5.0/aws_services/s3vectors.json +353 -0
- iam_policy_validator-1.5.0/aws_services/sagemaker-data-science-assistant.json +21 -0
- iam_policy_validator-1.5.0/aws_services/sagemaker-geospatial.json +479 -0
- iam_policy_validator-1.5.0/aws_services/sagemaker-mlflow.json +1247 -0
- iam_policy_validator-1.5.0/aws_services/sagemaker.json +9855 -0
- iam_policy_validator-1.5.0/aws_services/savingsplans.json +245 -0
- iam_policy_validator-1.5.0/aws_services/scheduler.json +307 -0
- iam_policy_validator-1.5.0/aws_services/schemas.json +705 -0
- iam_policy_validator-1.5.0/aws_services/scn.json +813 -0
- iam_policy_validator-1.5.0/aws_services/sdb.json +209 -0
- iam_policy_validator-1.5.0/aws_services/secretsmanager.json +756 -0
- iam_policy_validator-1.5.0/aws_services/security-ir.json +506 -0
- iam_policy_validator-1.5.0/aws_services/securityhub.json +2313 -0
- iam_policy_validator-1.5.0/aws_services/securitylake.json +638 -0
- iam_policy_validator-1.5.0/aws_services/serverlessrepo.json +325 -0
- iam_policy_validator-1.5.0/aws_services/servicecatalog.json +2287 -0
- iam_policy_validator-1.5.0/aws_services/servicediscovery.json +768 -0
- iam_policy_validator-1.5.0/aws_services/serviceextract.json +21 -0
- iam_policy_validator-1.5.0/aws_services/servicequotas.json +423 -0
- iam_policy_validator-1.5.0/aws_services/ses.json +5172 -0
- iam_policy_validator-1.5.0/aws_services/shield.json +755 -0
- iam_policy_validator-1.5.0/aws_services/signer.json +437 -0
- iam_policy_validator-1.5.0/aws_services/signin.json +36 -0
- iam_policy_validator-1.5.0/aws_services/simspaceweaver.json +353 -0
- iam_policy_validator-1.5.0/aws_services/sms-voice.json +2083 -0
- iam_policy_validator-1.5.0/aws_services/sms.json +561 -0
- iam_policy_validator-1.5.0/aws_services/snow-device-management.json +298 -0
- iam_policy_validator-1.5.0/aws_services/snowball.json +411 -0
- iam_policy_validator-1.5.0/aws_services/sns.json +754 -0
- iam_policy_validator-1.5.0/aws_services/social-messaging.json +479 -0
- iam_policy_validator-1.5.0/aws_services/sqlworkbench.json +1553 -0
- iam_policy_validator-1.5.0/aws_services/sqs.json +443 -0
- iam_policy_validator-1.5.0/aws_services/ssm-contacts.json +868 -0
- iam_policy_validator-1.5.0/aws_services/ssm-guiconnect.json +111 -0
- iam_policy_validator-1.5.0/aws_services/ssm-incidents.json +717 -0
- iam_policy_validator-1.5.0/aws_services/ssm-quicksetup.json +309 -0
- iam_policy_validator-1.5.0/aws_services/ssm-sap.json +573 -0
- iam_policy_validator-1.5.0/aws_services/ssm.json +3613 -0
- iam_policy_validator-1.5.0/aws_services/ssmmessages.json +84 -0
- iam_policy_validator-1.5.0/aws_services/sso-directory.json +861 -0
- iam_policy_validator-1.5.0/aws_services/sso-oauth.json +74 -0
- iam_policy_validator-1.5.0/aws_services/sso.json +2493 -0
- iam_policy_validator-1.5.0/aws_services/states.json +914 -0
- iam_policy_validator-1.5.0/aws_services/storagegateway.json +2120 -0
- iam_policy_validator-1.5.0/aws_services/sts.json +728 -0
- iam_policy_validator-1.5.0/aws_services/support-console.json +171 -0
- iam_policy_validator-1.5.0/aws_services/support.json +471 -0
- iam_policy_validator-1.5.0/aws_services/supportapp.json +201 -0
- iam_policy_validator-1.5.0/aws_services/supportplans.json +81 -0
- iam_policy_validator-1.5.0/aws_services/sustainability.json +21 -0
- iam_policy_validator-1.5.0/aws_services/swf.json +1250 -0
- iam_policy_validator-1.5.0/aws_services/synthetics.json +545 -0
- iam_policy_validator-1.5.0/aws_services/tag.json +126 -0
- iam_policy_validator-1.5.0/aws_services/tax.json +351 -0
- iam_policy_validator-1.5.0/aws_services/textract.json +490 -0
- iam_policy_validator-1.5.0/aws_services/thinclient.json +463 -0
- iam_policy_validator-1.5.0/aws_services/timestream-influxdb.json +423 -0
- iam_policy_validator-1.5.0/aws_services/timestream.json +767 -0
- iam_policy_validator-1.5.0/aws_services/tiros.json +81 -0
- iam_policy_validator-1.5.0/aws_services/tnb.json +831 -0
- iam_policy_validator-1.5.0/aws_services/transcribe.json +1073 -0
- iam_policy_validator-1.5.0/aws_services/transfer.json +1607 -0
- iam_policy_validator-1.5.0/aws_services/transform.json +271 -0
- iam_policy_validator-1.5.0/aws_services/translate.json +426 -0
- iam_policy_validator-1.5.0/aws_services/trustedadvisor.json +829 -0
- iam_policy_validator-1.5.0/aws_services/ts.json +223 -0
- iam_policy_validator-1.5.0/aws_services/user-subscriptions.json +107 -0
- iam_policy_validator-1.5.0/aws_services/uxc.json +51 -0
- iam_policy_validator-1.5.0/aws_services/vendor-insights.json +570 -0
- iam_policy_validator-1.5.0/aws_services/verified-access.json +21 -0
- iam_policy_validator-1.5.0/aws_services/verifiedpermissions.json +579 -0
- iam_policy_validator-1.5.0/aws_services/voiceid.json +648 -0
- iam_policy_validator-1.5.0/aws_services/vpc-lattice-svcs.json +134 -0
- iam_policy_validator-1.5.0/aws_services/vpc-lattice.json +1876 -0
- iam_policy_validator-1.5.0/aws_services/vpce.json +21 -0
- iam_policy_validator-1.5.0/aws_services/waf-regional.json +1706 -0
- iam_policy_validator-1.5.0/aws_services/waf.json +1617 -0
- iam_policy_validator-1.5.0/aws_services/wafv2.json +1355 -0
- iam_policy_validator-1.5.0/aws_services/wam.json +21 -0
- iam_policy_validator-1.5.0/aws_services/wellarchitected.json +1665 -0
- iam_policy_validator-1.5.0/aws_services/wickr.json +185 -0
- iam_policy_validator-1.5.0/aws_services/wisdom.json +2122 -0
- iam_policy_validator-1.5.0/aws_services/workdocs.json +934 -0
- iam_policy_validator-1.5.0/aws_services/worklink.json +726 -0
- iam_policy_validator-1.5.0/aws_services/workmail.json +2548 -0
- iam_policy_validator-1.5.0/aws_services/workmailmessageflow.json +54 -0
- iam_policy_validator-1.5.0/aws_services/workspaces-instances.json +292 -0
- iam_policy_validator-1.5.0/aws_services/workspaces-web.json +1652 -0
- iam_policy_validator-1.5.0/aws_services/workspaces.json +2038 -0
- iam_policy_validator-1.5.0/aws_services/xray.json +813 -0
- iam_policy_validator-1.5.0/docs/README.md +43 -0
- iam_policy_validator-1.5.0/docs/ROADMAP.md +307 -0
- iam_policy_validator-1.5.0/docs/aws-api-configuration.md +157 -0
- iam_policy_validator-1.5.0/docs/aws-services-backup.md +159 -0
- iam_policy_validator-1.5.0/docs/condition-requirements.md +182 -0
- iam_policy_validator-1.5.0/docs/configuration.md +574 -0
- iam_policy_validator-1.5.0/docs/custom-checks.md +558 -0
- iam_policy_validator-1.5.0/docs/development/PUBLISHING.md +281 -0
- iam_policy_validator-1.0.2/examples/github-actions/README.md → iam_policy_validator-1.5.0/docs/github-actions-workflows.md +35 -12
- iam_policy_validator-1.5.0/docs/modular-configuration.md +327 -0
- iam_policy_validator-1.0.2/examples/policies/test-cases/README-privilege-escalation.md → iam_policy_validator-1.5.0/docs/privilege-escalation.md +2 -2
- iam_policy_validator-1.5.0/docs/python-library-usage.md +987 -0
- iam_policy_validator-1.5.0/docs/smart-filtering.md +381 -0
- iam_policy_validator-1.5.0/examples/README.md +214 -0
- iam_policy_validator-1.5.0/examples/configs/basic-config.yaml +31 -0
- iam_policy_validator-1.5.0/examples/configs/full-reference-config.yaml +661 -0
- iam_policy_validator-1.5.0/examples/configs/offline-validation.yaml +28 -0
- iam_policy_validator-1.5.0/examples/configs/principal-condition-enforcement.yaml +240 -0
- iam_policy_validator-1.5.0/examples/configs/principal-validation-public-with-conditions.yaml +33 -0
- iam_policy_validator-1.5.0/examples/configs/principal-validation-relaxed.yaml +32 -0
- iam_policy_validator-1.5.0/examples/configs/principal-validation-strict.yaml +36 -0
- iam_policy_validator-1.5.0/examples/configs/strict-security.yaml +128 -0
- iam_policy_validator-1.5.0/examples/custom_checks/README.md +623 -0
- iam_policy_validator-1.5.0/examples/github-actions/README.md +119 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/access-analyzer-only.yaml +5 -6
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/basic-validation.yaml +12 -9
- iam_policy_validator-1.0.2/examples/github-actions/custom-policy-checks.yml → iam_policy_validator-1.5.0/examples/github-actions/custom-policy-checks.yaml +2 -2
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/multi-region-validation.yaml +5 -6
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/resource-policy-validation.yaml +7 -8
- iam_policy_validator-1.5.0/examples/github-actions/sarif-code-scanning.yaml +62 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/sequential-validation.yaml +10 -7
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/github-actions/two-step-validation.yaml +7 -9
- iam_policy_validator-1.5.0/examples/github-actions/validate-changed-files.yaml +54 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/README.md +159 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/allowed-wildcard-resource.json +21 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/insecure_policy.json +18 -1
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/insecure_policy.yaml +37 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/invalid-resource-constraint.json +41 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/invalid-sid-special-chars.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/invalid-sid-with-spaces.json +23 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/lambda_developer.yaml +53 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/s3_bucket_access.yaml +58 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/sample_policy.yaml +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/sensitive-action-wildcards.json +46 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/valid-sid-formats.json +29 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/wildcard_examples.yaml +47 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/wrong-condition-key.json +27 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies/wrong-s3-condition.json +28 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-invalid-allow-effect.json +12 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-invalid-not-action.json +12 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-invalid-specific-principal.json +14 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-invalid-unsupported-service.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-invalid-wildcard-action.json +12 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-control-policies/rcp-valid-enforce-encryption.json +32 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/README.md +218 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/backup-vault-policy-org-access.json +34 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/ecr-repository-policy-org-restricted.json +25 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/ecr-repository-policy-public.json +16 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/efs-filesystem-policy-vpc-only.json +23 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/glacier-vault-policy-cross-account.json +23 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/kms-key-policy-cross-account.json +29 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/kms-key-policy-insecure.json +26 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/kms-key-policy-org-restricted.json +38 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/kms-key-policy-service-specific.json +53 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/lambda-permission-api-gateway.json +19 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/lambda-permission-cross-account-invoke.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/lambda-permission-eventbridge-multiple.json +23 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/lambda-permission-public-url.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/lambda-permission-s3-trigger.json +22 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/opensearch-domain-policy-ip-restricted.json +22 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-cloudfront.json +19 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-cross-account-org.json +25 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-insecure-transport.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-ip-restriction.json +36 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-public-with-conditions.json +20 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-public.json +12 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-specific-account.json +17 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-vpc-endpoint.json +20 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/s3-bucket-policy-wildcard-actions.json +21 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/secrets-manager-policy-cross-account.json +25 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account-mfa.json +25 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sns-topic-policy-cross-account.json +20 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sns-topic-policy-eventbridge.json +18 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sns-topic-policy-org-wide.json +23 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sns-topic-policy-public-no-conditions.json +15 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sqs-queue-policy-cross-account-role.json +26 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sqs-queue-policy-iam-users-mfa.json +27 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sqs-queue-policy-public.json +12 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/resource-policies/sqs-queue-policy-sns-subscription.json +18 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/service-control-policies/deny-root-account-usage.json +16 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/service-control-policies/require-mfa.json +24 -0
- iam_policy_validator-1.5.0/examples/iam-test-policies/service-control-policies/restrict-regions.json +20 -0
- iam_policy_validator-1.5.0/examples/library-usage/README.md +225 -0
- iam_policy_validator-1.5.0/examples/library-usage/example1_basic_usage.py +77 -0
- iam_policy_validator-1.5.0/examples/library-usage/example2_config_file.py +111 -0
- iam_policy_validator-1.5.0/examples/library-usage/example3_programmatic_config.py +158 -0
- iam_policy_validator-1.5.0/examples/library-usage/example4_custom_condition_requirements.py +347 -0
- iam_policy_validator-1.5.0/examples/library-usage/quick_reference.py +230 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/__version__.py +1 -1
- iam_policy_validator-1.5.0/iam_validator/checks/__init__.py +37 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/checks/action_condition_enforcement.py +113 -34
- iam_policy_validator-1.5.0/iam_validator/checks/action_resource_constraint.py +151 -0
- iam_policy_validator-1.5.0/iam_validator/checks/action_validation.py +72 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/checks/condition_key_validation.py +21 -1
- iam_policy_validator-1.5.0/iam_validator/checks/full_wildcard.py +67 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/checks/policy_size.py +1 -0
- iam_policy_validator-1.5.0/iam_validator/checks/policy_type_validation.py +299 -0
- iam_policy_validator-1.5.0/iam_validator/checks/principal_validation.py +776 -0
- iam_policy_validator-1.5.0/iam_validator/checks/sensitive_action.py +178 -0
- iam_policy_validator-1.5.0/iam_validator/checks/service_wildcard.py +105 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/checks/sid_uniqueness.py +48 -8
- iam_policy_validator-1.5.0/iam_validator/checks/utils/__init__.py +1 -0
- iam_policy_validator-1.5.0/iam_validator/checks/utils/policy_level_checks.py +143 -0
- iam_policy_validator-1.5.0/iam_validator/checks/utils/sensitive_action_matcher.py +260 -0
- iam_policy_validator-1.5.0/iam_validator/checks/utils/wildcard_expansion.py +87 -0
- iam_policy_validator-1.5.0/iam_validator/checks/wildcard_action.py +62 -0
- iam_policy_validator-1.5.0/iam_validator/checks/wildcard_resource.py +131 -0
- iam_policy_validator-1.5.0/iam_validator/commands/__init__.py +25 -0
- iam_policy_validator-1.5.0/iam_validator/commands/cache.py +392 -0
- iam_policy_validator-1.5.0/iam_validator/commands/download_services.py +255 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/commands/post_to_pr.py +7 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/commands/validate.py +211 -21
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/access_analyzer_report.py +2 -1
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/aws_fetcher.py +246 -37
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/check_registry.py +26 -19
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/cli.py +27 -10
- iam_policy_validator-1.5.0/iam_validator/core/config/__init__.py +83 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/aws_api.py +35 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/condition_requirements.py +535 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/defaults.py +390 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/principal_requirements.py +421 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/sensitive_actions.py +133 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/service_principals.py +95 -0
- iam_policy_validator-1.5.0/iam_validator/core/config/wildcards.py +124 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/config_loader.py +68 -11
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/__init__.py +2 -0
- iam_policy_validator-1.5.0/iam_validator/core/formatters/console.py +59 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/csv.py +7 -2
- iam_policy_validator-1.5.0/iam_validator/core/formatters/enhanced.py +440 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/html.py +127 -37
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/markdown.py +10 -2
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/sarif.py +78 -14
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/models.py +43 -9
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/policy_checks.py +68 -8
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/pr_commenter.py +30 -9
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/report.py +119 -29
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/pyproject.toml +10 -2
- iam_policy_validator-1.5.0/scripts/download_aws_services.py +215 -0
- iam_policy_validator-1.5.0/scripts/sync_defaults_from_yaml.py +204 -0
- iam_policy_validator-1.5.0/tests/test_action_resource_constraint.py +273 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_action_validation_check.py +6 -7
- iam_policy_validator-1.5.0/tests/test_aws_api_config.py +10 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_condition_key_validation_check.py +98 -13
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_config_loader.py +19 -10
- iam_policy_validator-1.5.0/tests/test_full_wildcard_check.py +254 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_models.py +8 -2
- iam_policy_validator-1.5.0/tests/test_policy_type_validation.py +334 -0
- iam_policy_validator-1.5.0/tests/test_principal_validation_check.py +1084 -0
- iam_policy_validator-1.5.0/tests/test_sensitive_action_wildcard_expansion.py +302 -0
- iam_policy_validator-1.5.0/tests/test_service_wildcard_check.py +332 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_sid_uniqueness_check.py +4 -4
- iam_policy_validator-1.5.0/tests/test_wildcard_action_check.py +297 -0
- iam_policy_validator-1.5.0/tests/test_wildcard_resource_check.py +349 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/uv.lock +51 -35
- iam_policy_validator-1.0.2/.github/workflows/release.yml +0 -119
- iam_policy_validator-1.0.2/.python-version +0 -1
- iam_policy_validator-1.0.2/DOCS.md +0 -941
- iam_policy_validator-1.0.2/PKG-INFO +0 -984
- iam_policy_validator-1.0.2/README.md +0 -942
- iam_policy_validator-1.0.2/docs/README.md +0 -23
- iam_policy_validator-1.0.2/docs/development/PUBLISHING.md +0 -240
- iam_policy_validator-1.0.2/examples/README.md +0 -206
- iam_policy_validator-1.0.2/examples/configs/action-condition-enforcement-advanced.yaml +0 -243
- iam_policy_validator-1.0.2/examples/configs/config-privilege-escalation.yaml +0 -36
- iam_policy_validator-1.0.2/examples/configs/custom-business-rules.yaml +0 -83
- iam_policy_validator-1.0.2/examples/configs/custom-wildcard-config.yaml +0 -44
- iam_policy_validator-1.0.2/examples/configs/none_of_example.yaml +0 -54
- iam_policy_validator-1.0.2/examples/configs/unified-condition-enforcement.yaml +0 -287
- iam_policy_validator-1.0.2/examples/custom_checks/README.md +0 -550
- iam_policy_validator-1.0.2/iam-validator.yaml +0 -584
- iam_policy_validator-1.0.2/iam_validator/checks/__init__.py +0 -23
- iam_policy_validator-1.0.2/iam_validator/checks/action_validation.py +0 -192
- iam_policy_validator-1.0.2/iam_validator/checks/security_best_practices.py +0 -674
- iam_policy_validator-1.0.2/iam_validator/commands/__init__.py +0 -14
- iam_policy_validator-1.0.2/iam_validator/core/formatters/console.py +0 -22
- iam_policy_validator-1.0.2/tests/test_security_best_practices.py +0 -1183
- iam_policy_validator-1.0.2/tests/test_wildcard_allowlist.py +0 -288
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/.gitignore +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/LICENSE +0 -0
- /iam_policy_validator-1.0.2/examples/github-actions/action-examples.md → /iam_policy_validator-1.5.0/docs/github-actions-examples.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/advanced_multi_condition_validator.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/encryption_required_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/mfa_required_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/region_restriction_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/tag_enforcement_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/examples/custom_checks/time_based_access_check.py +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/api_gateway_management.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/athena_query_access.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/backup_vault_access.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/invalid_policy.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/lambda_developer.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/rds_database_admin.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/sample_policy.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.0.2/examples/policies/test-cases → iam_policy_validator-1.5.0/examples/iam-test-policies/identity-policies}/wildcard_examples.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/aws_global_conditions.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/integrations/github_integration.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_aws_global_conditions.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_check_registry.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_multipart_comments.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_policy_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.5.0}/tests/test_resource_validation_check.py +0 -0
|
@@ -13,17 +13,17 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout code
|
|
16
|
-
uses: actions/checkout@v5
|
|
16
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
17
17
|
|
|
18
18
|
- name: Set up Python
|
|
19
|
-
uses: actions/setup-python@v6
|
|
19
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
20
20
|
with:
|
|
21
21
|
python-version: "3.12"
|
|
22
22
|
|
|
23
23
|
- name: Install uv
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
27
|
|
|
28
28
|
- name: Install dependencies
|
|
29
29
|
run: uv sync --all-extras
|
|
@@ -34,30 +34,6 @@ jobs:
|
|
|
34
34
|
- name: Run Ruff formatter check
|
|
35
35
|
run: uv run ruff format --check .
|
|
36
36
|
|
|
37
|
-
# Temporarily disabled - will re-enable when type annotations are complete
|
|
38
|
-
# type-check:
|
|
39
|
-
# name: Type Check with mypy
|
|
40
|
-
# runs-on: ubuntu-latest
|
|
41
|
-
# steps:
|
|
42
|
-
# - name: Checkout code
|
|
43
|
-
# uses: actions/checkout@v5
|
|
44
|
-
|
|
45
|
-
# - name: Set up Python
|
|
46
|
-
# uses: actions/setup-python@v6
|
|
47
|
-
# with:
|
|
48
|
-
# python-version: "3.12"
|
|
49
|
-
|
|
50
|
-
# - name: Install uv
|
|
51
|
-
# run: |
|
|
52
|
-
# curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
53
|
-
# echo "$HOME/.local/bin" >> $GITHUB_PATH
|
|
54
|
-
|
|
55
|
-
# - name: Install dependencies
|
|
56
|
-
# run: uv sync --all-extras
|
|
57
|
-
|
|
58
|
-
# - name: Run mypy
|
|
59
|
-
# run: uv run mypy iam_validator/
|
|
60
|
-
|
|
61
37
|
test:
|
|
62
38
|
name: Test (Python ${{ matrix.python-version }})
|
|
63
39
|
runs-on: ubuntu-latest
|
|
@@ -67,17 +43,17 @@ jobs:
|
|
|
67
43
|
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
68
44
|
steps:
|
|
69
45
|
- name: Checkout code
|
|
70
|
-
uses: actions/checkout@v5
|
|
46
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
71
47
|
|
|
72
48
|
- name: Set up Python ${{ matrix.python-version }}
|
|
73
|
-
uses: actions/setup-python@v6
|
|
49
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
74
50
|
with:
|
|
75
51
|
python-version: ${{ matrix.python-version }}
|
|
76
52
|
|
|
77
53
|
- name: Install uv
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
54
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
55
|
+
with:
|
|
56
|
+
enable-cache: true
|
|
81
57
|
|
|
82
58
|
- name: Install dependencies
|
|
83
59
|
run: uv sync --all-extras
|
|
@@ -91,17 +67,17 @@ jobs:
|
|
|
91
67
|
needs: [lint, test]
|
|
92
68
|
steps:
|
|
93
69
|
- name: Checkout code
|
|
94
|
-
uses: actions/checkout@v5
|
|
70
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
95
71
|
|
|
96
72
|
- name: Set up Python
|
|
97
|
-
uses: actions/setup-python@v6
|
|
73
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
98
74
|
with:
|
|
99
75
|
python-version: "3.12"
|
|
100
76
|
|
|
101
77
|
- name: Install uv
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
78
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
79
|
+
with:
|
|
80
|
+
enable-cache: true
|
|
105
81
|
|
|
106
82
|
- name: Install dependencies
|
|
107
83
|
run: uv sync
|
|
@@ -109,30 +85,23 @@ jobs:
|
|
|
109
85
|
- name: Build package
|
|
110
86
|
run: uv build
|
|
111
87
|
|
|
112
|
-
- name: Upload build artifacts
|
|
113
|
-
uses: actions/upload-artifact@v5
|
|
114
|
-
with:
|
|
115
|
-
name: dist-packages
|
|
116
|
-
path: dist/
|
|
117
|
-
retention-days: 7
|
|
118
|
-
|
|
119
88
|
integration-test:
|
|
120
89
|
name: Integration Test (Self-Test)
|
|
121
90
|
runs-on: ubuntu-latest
|
|
122
91
|
needs: [lint, test]
|
|
123
92
|
steps:
|
|
124
93
|
- name: Checkout code
|
|
125
|
-
uses: actions/checkout@v5
|
|
94
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
126
95
|
|
|
127
96
|
- name: Set up Python
|
|
128
|
-
uses: actions/setup-python@v6
|
|
97
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
129
98
|
with:
|
|
130
99
|
python-version: "3.12"
|
|
131
100
|
|
|
132
101
|
- name: Install uv
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
102
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
103
|
+
with:
|
|
104
|
+
enable-cache: true
|
|
136
105
|
|
|
137
106
|
- name: Install dependencies
|
|
138
107
|
run: uv sync
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-and-release:
|
|
14
|
+
name: Build and Create Release
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
environment: production
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout code
|
|
20
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0 # Full history for changelog generation
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
|
|
29
|
+
- name: Install uv
|
|
30
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
31
|
+
with:
|
|
32
|
+
enable-cache: true
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: uv sync
|
|
36
|
+
|
|
37
|
+
- name: Build package
|
|
38
|
+
run: uv build
|
|
39
|
+
|
|
40
|
+
- name: Get version from tag
|
|
41
|
+
id: get_version
|
|
42
|
+
run: |
|
|
43
|
+
VERSION=${GITHUB_REF#refs/tags/v}
|
|
44
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
45
|
+
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
46
|
+
|
|
47
|
+
- name: Generate changelog
|
|
48
|
+
id: changelog
|
|
49
|
+
run: |
|
|
50
|
+
# Get the previous tag
|
|
51
|
+
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
52
|
+
|
|
53
|
+
if [ -z "$PREV_TAG" ]; then
|
|
54
|
+
# First release - get all commits
|
|
55
|
+
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
|
|
56
|
+
else
|
|
57
|
+
# Get commits since previous tag
|
|
58
|
+
CHANGELOG=$(git log ${PREV_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges)
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Save to file for multiline output
|
|
62
|
+
echo "$CHANGELOG" > CHANGELOG.txt
|
|
63
|
+
|
|
64
|
+
# Also create a summary
|
|
65
|
+
COMMIT_COUNT=$(echo "$CHANGELOG" | wc -l)
|
|
66
|
+
echo "Generated changelog with $COMMIT_COUNT commits"
|
|
67
|
+
|
|
68
|
+
- name: Create GitHub Release
|
|
69
|
+
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2
|
|
70
|
+
with:
|
|
71
|
+
name: ${{ steps.get_version.outputs.tag }}
|
|
72
|
+
body_path: CHANGELOG.txt
|
|
73
|
+
files: |
|
|
74
|
+
dist/*.whl
|
|
75
|
+
dist/*.tar.gz
|
|
76
|
+
draft: false
|
|
77
|
+
prerelease: ${{ contains(steps.get_version.outputs.version, 'rc') || contains(steps.get_version.outputs.version, 'beta') || contains(steps.get_version.outputs.version, 'alpha') }}
|
|
78
|
+
generate_release_notes: true
|
|
79
|
+
env:
|
|
80
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
81
|
+
|
|
82
|
+
- name: Publish to PyPI
|
|
83
|
+
if: |
|
|
84
|
+
!contains(steps.get_version.outputs.version, 'rc') &&
|
|
85
|
+
!contains(steps.get_version.outputs.version, 'beta') &&
|
|
86
|
+
!contains(steps.get_version.outputs.version, 'alpha')
|
|
87
|
+
run: uv publish --trusted-publishing always
|
|
88
|
+
|
|
89
|
+
- name: Create Release Summary
|
|
90
|
+
if: always()
|
|
91
|
+
run: |
|
|
92
|
+
VERSION="${{ steps.get_version.outputs.version }}"
|
|
93
|
+
TAG="${{ steps.get_version.outputs.tag }}"
|
|
94
|
+
IS_PRERELEASE="${{ contains(steps.get_version.outputs.version, 'rc') || contains(steps.get_version.outputs.version, 'beta') || contains(steps.get_version.outputs.version, 'alpha') }}"
|
|
95
|
+
|
|
96
|
+
# Extract major and minor versions
|
|
97
|
+
MAJOR=$(echo "$VERSION" | cut -d. -f1)
|
|
98
|
+
MINOR=$(echo "$VERSION" | cut -d. -f1-2)
|
|
99
|
+
|
|
100
|
+
cat >> $GITHUB_STEP_SUMMARY << EOF
|
|
101
|
+
# 🚀 Release Summary
|
|
102
|
+
|
|
103
|
+
## 📦 Package Information
|
|
104
|
+
- **Package**: \`iam-policy-validator\`
|
|
105
|
+
- **Version**: \`$VERSION\`
|
|
106
|
+
- **Tag**: \`$TAG\`
|
|
107
|
+
|
|
108
|
+
## 📋 What Was Published
|
|
109
|
+
|
|
110
|
+
### GitHub Release
|
|
111
|
+
- ✅ Created release: [$TAG](https://github.com/${{ github.repository }}/releases/tag/$TAG)
|
|
112
|
+
- 📄 Changelog generated from commits
|
|
113
|
+
- 📦 Artifacts attached: wheel + source distribution
|
|
114
|
+
|
|
115
|
+
### PyPI
|
|
116
|
+
$(if [ "$IS_PRERELEASE" = "false" ]; then echo "- ✅ Published to [PyPI](https://pypi.org/project/iam-policy-validator/)"; else echo "- ⏭️ Skipped (pre-release version)"; fi)
|
|
117
|
+
|
|
118
|
+
### Version Tags
|
|
119
|
+
- 🏷️ Major tag: \`v$MAJOR\`
|
|
120
|
+
- 🏷️ Minor tag: \`v$MINOR\`
|
|
121
|
+
- 🏷️ Full tag: \`v$VERSION\`
|
|
122
|
+
|
|
123
|
+
## 🔗 Quick Links
|
|
124
|
+
- [📦 PyPI Package](https://pypi.org/project/iam-policy-validator/)
|
|
125
|
+
- [📚 GitHub Release](https://github.com/${{ github.repository }}/releases/tag/$TAG)
|
|
126
|
+
- [📖 Repository](https://github.com/${{ github.repository }})
|
|
127
|
+
|
|
128
|
+
## 📥 Installation
|
|
129
|
+
\`\`\`bash
|
|
130
|
+
pip install iam-policy-validator==$VERSION
|
|
131
|
+
\`\`\`
|
|
132
|
+
|
|
133
|
+
or use the latest:
|
|
134
|
+
\`\`\`bash
|
|
135
|
+
pip install iam-policy-validator
|
|
136
|
+
\`\`\`
|
|
137
|
+
EOF
|
|
138
|
+
|
|
139
|
+
# update-action-versions:
|
|
140
|
+
# name: Update Major/Minor Tag References
|
|
141
|
+
# runs-on: ubuntu-latest
|
|
142
|
+
# needs: build-and-release
|
|
143
|
+
|
|
144
|
+
# steps:
|
|
145
|
+
# - name: Checkout code
|
|
146
|
+
# uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
147
|
+
|
|
148
|
+
# - name: Configure Git
|
|
149
|
+
# run: |
|
|
150
|
+
# git config user.name "github-actions[bot]"
|
|
151
|
+
# git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
152
|
+
|
|
153
|
+
# - name: Update major and minor version tags
|
|
154
|
+
# run: |
|
|
155
|
+
# VERSION=${GITHUB_REF#refs/tags/v}
|
|
156
|
+
# MAJOR=$(echo $VERSION | cut -d. -f1)
|
|
157
|
+
# MINOR=$(echo $VERSION | cut -d. -f1-2)
|
|
158
|
+
|
|
159
|
+
# # Update vX tag (e.g., v1) - annotated (unsigned by bot)
|
|
160
|
+
# git tag -fa "v$MAJOR" -m "Update v$MAJOR to $VERSION"
|
|
161
|
+
# git push origin "v$MAJOR" --force
|
|
162
|
+
|
|
163
|
+
# # Update vX.Y tag (e.g., v1.2) - annotated (unsigned by bot)
|
|
164
|
+
# git tag -fa "v$MINOR" -m "Updated v$MINOR to $VERSION"
|
|
165
|
+
# git push origin "v$MINOR" --force
|
|
166
|
+
|
|
167
|
+
# echo "✅ Updated tags: v$MAJOR and v$MINOR to point to $VERSION"
|
|
168
|
+
# echo "ℹ️ Note: Automated tags are annotated but not signed by the bot."
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -132,7 +132,7 @@ iam-policy-auditor/
|
|
|
132
132
|
├── .github/workflows/ # CI/CD workflows
|
|
133
133
|
├── pyproject.toml # Project metadata and dependencies
|
|
134
134
|
├── Makefile # Development commands
|
|
135
|
-
└──
|
|
135
|
+
└── default-config.yaml # Example configuration file
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
## Development Workflow
|
|
@@ -400,49 +400,59 @@ For detailed publishing instructions, see [docs/development/PUBLISHING.md](docs/
|
|
|
400
400
|
|
|
401
401
|
### Creating a New Check
|
|
402
402
|
|
|
403
|
-
|
|
403
|
+
See the comprehensive [Custom Checks Guide](docs/custom-checks.md) for detailed instructions on creating custom validation checks.
|
|
404
|
+
|
|
405
|
+
**Quick Example:**
|
|
406
|
+
|
|
407
|
+
1. **Create Check File**
|
|
404
408
|
```python
|
|
405
|
-
#
|
|
409
|
+
# my_checks/mfa_check.py
|
|
406
410
|
from typing import List
|
|
407
|
-
from iam_validator.core.models import
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
411
|
+
from iam_validator.core.models import PolicyValidationIssue, PolicyStatement
|
|
412
|
+
|
|
413
|
+
def execute(statement: PolicyStatement, policy_document: dict) -> List[PolicyValidationIssue]:
|
|
414
|
+
"""Ensure sensitive actions require MFA."""
|
|
415
|
+
issues = []
|
|
416
|
+
|
|
417
|
+
sensitive_actions = ["iam:CreateUser", "iam:DeleteUser"]
|
|
418
|
+
actions = statement.action if isinstance(statement.action, list) else [statement.action]
|
|
419
|
+
|
|
420
|
+
for action in actions:
|
|
421
|
+
if action in sensitive_actions:
|
|
422
|
+
# Check for MFA condition
|
|
423
|
+
has_mfa = statement.condition and "aws:MultiFactorAuthPresent" in str(statement.condition)
|
|
424
|
+
|
|
425
|
+
if not has_mfa:
|
|
426
|
+
issues.append(
|
|
427
|
+
PolicyValidationIssue(
|
|
428
|
+
check_name="mfa_required",
|
|
429
|
+
severity="high",
|
|
430
|
+
message=f"Action '{action}' requires MFA",
|
|
431
|
+
statement_index=statement.index,
|
|
432
|
+
action=action,
|
|
433
|
+
suggestion='Add: {"Bool": {"aws:MultiFactorAuthPresent": "true"}}'
|
|
434
|
+
)
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
return issues
|
|
429
438
|
```
|
|
430
439
|
|
|
431
|
-
2. **
|
|
432
|
-
|
|
433
|
-
-
|
|
440
|
+
2. **Use the Check**
|
|
441
|
+
```bash
|
|
442
|
+
iam-validator validate --path ./policies/ --custom-checks-dir ./my_checks
|
|
443
|
+
```
|
|
434
444
|
|
|
435
445
|
3. **Add Tests**
|
|
436
446
|
```python
|
|
437
447
|
# tests/test_my_check.py
|
|
438
|
-
def
|
|
448
|
+
def test_mfa_check():
|
|
439
449
|
# Test your check
|
|
440
450
|
pass
|
|
441
451
|
```
|
|
442
452
|
|
|
443
453
|
4. **Document the Check**
|
|
444
|
-
- Add to `docs/
|
|
445
|
-
- Add example to `examples/`
|
|
454
|
+
- Add to `docs/custom-checks.md`
|
|
455
|
+
- Add example to `examples/custom_checks/`
|
|
446
456
|
|
|
447
457
|
### Adding a New Formatter
|
|
448
458
|
|