cartography 0.95.0rc1__tar.gz → 0.96.0rc1__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.

Potentially problematic release.


This version of cartography might be problematic. Click here for more details.

Files changed (357) hide show
  1. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/PKG-INFO +1 -1
  2. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/README.md +1 -2
  3. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/querybuilder.py +4 -0
  4. cartography-0.96.0rc1/cartography/intel/aws/ec2/network_acls.py +208 -0
  5. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/resources.py +2 -0
  6. cartography-0.96.0rc1/cartography/intel/semgrep/__init__.py +30 -0
  7. cartography-0.96.0rc1/cartography/intel/semgrep/dependencies.py +201 -0
  8. cartography-0.96.0rc1/cartography/intel/semgrep/deployment.py +67 -0
  9. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/semgrep/findings.py +22 -53
  10. cartography-0.96.0rc1/cartography/models/aws/ec2/network_acl_rules.py +97 -0
  11. cartography-0.96.0rc1/cartography/models/aws/ec2/network_acls.py +86 -0
  12. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/core/common.py +18 -1
  13. cartography-0.96.0rc1/cartography/models/semgrep/dependencies.py +77 -0
  14. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/PKG-INFO +1 -1
  15. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/SOURCES.txt +6 -0
  16. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/setup.py +1 -1
  17. cartography-0.95.0rc1/cartography/intel/semgrep/__init__.py +0 -23
  18. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/LICENSE +0 -0
  19. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/__init__.py +0 -0
  20. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/__main__.py +0 -0
  21. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/cli.py +0 -0
  22. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/client/__init__.py +0 -0
  23. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/client/aws/__init__.py +0 -0
  24. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/client/aws/iam.py +0 -0
  25. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/client/core/__init__.py +0 -0
  26. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/client/core/tx.py +0 -0
  27. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/config.py +0 -0
  28. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/__init__.py +0 -0
  29. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/indexes.cypher +0 -0
  30. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/__init__.py +0 -0
  31. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/__init__.py +0 -0
  32. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json +0 -0
  33. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_ec2_iaminstance.json +0 -0
  34. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_ec2_iaminstanceprofile.json +0 -0
  35. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_ec2_keypair_analysis.json +0 -0
  36. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_eks_asset_exposure.json +0 -0
  37. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_foreign_accounts.json +0 -0
  38. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_lambda_ecr.json +0 -0
  39. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/aws_s3acl_analysis.json +0 -0
  40. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/gcp_compute_asset_inet_exposure.json +0 -0
  41. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/gcp_gke_asset_exposure.json +0 -0
  42. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/gcp_gke_basic_auth.json +0 -0
  43. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/analysis/gsuite_human_link.json +0 -0
  44. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/__init__.py +0 -0
  45. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_account_cleanup.json +0 -0
  46. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_apigateway_details.json +0 -0
  47. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_dns_cleanup.json +0 -0
  48. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json +0 -0
  49. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json +0 -0
  50. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_config_cleanup.json +0 -0
  51. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json +0 -0
  52. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json +0 -0
  53. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json +0 -0
  54. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json +0 -0
  55. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_elastic_ip_addresses_cleanup.json +0 -0
  56. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_elasticache_cleanup.json +0 -0
  57. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_es_cleanup.json +0 -0
  58. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_cleanup.json +0 -0
  59. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json +0 -0
  60. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json +0 -0
  61. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json +0 -0
  62. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_kms_cleanup.json +0 -0
  63. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +0 -0
  64. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_principals_cleanup.json +0 -0
  65. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json +0 -0
  66. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json +0 -0
  67. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_snapshots_cleanup.json +0 -0
  68. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_redshift_clusters_cleanup.json +0 -0
  69. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_reserved_instances_cleanup.json +0 -0
  70. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_roles_cleanup.json +0 -0
  71. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_roles_policy_cleanup.json +0 -0
  72. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_s3_acl_cleanup.json +0 -0
  73. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_s3_buckets_cleanup.json +0 -0
  74. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_secrets_cleanup.json +0 -0
  75. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_securityhub_cleanup.json +0 -0
  76. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_snapshots_cleanup.json +0 -0
  77. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_sqs_queues_cleanup.json +0 -0
  78. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_tags_cleanup.json +0 -0
  79. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_tgw_cleanup.json +0 -0
  80. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_users_cleanup.json +0 -0
  81. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_vpc_cleanup.json +0 -0
  82. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_import_vpc_peering_cleanup.json +0 -0
  83. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_ingest_ec2_auto_scaling_groups_cleanup.json +0 -0
  84. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_cleanup.json +0 -0
  85. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_v2_cleanup.json +0 -0
  86. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_ingest_subnets_cleanup.json +0 -0
  87. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_kms_details.json +0 -0
  88. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_post_ingestion_principals_cleanup.json +0 -0
  89. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/aws_s3_details.json +0 -0
  90. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_cassandra_keyspace_cleanup.json +0 -0
  91. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_cors_details.json +0 -0
  92. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_mongodb_database_cleanup.json +0 -0
  93. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_sql_database_cleanup.json +0 -0
  94. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_table_resources_cleanup.json +0 -0
  95. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_database_account_cleanup.json +0 -0
  96. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_import_disks_cleanup.json +0 -0
  97. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_import_snapshots_cleanup.json +0 -0
  98. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_import_virtual_machines_cleanup.json +0 -0
  99. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_sql_server_cleanup.json +0 -0
  100. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_storage_account_cleanup.json +0 -0
  101. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_subscriptions_cleanup.json +0 -0
  102. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/azure_tenant_cleanup.json +0 -0
  103. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/crowdstrike_import_cleanup.json +0 -0
  104. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/digitalocean_droplet_cleanup.json +0 -0
  105. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/digitalocean_project_cleanup.json +0 -0
  106. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_compute_firewall_cleanup.json +0 -0
  107. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_compute_forwarding_rules_cleanup.json +0 -0
  108. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_compute_instance_cleanup.json +0 -0
  109. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json +0 -0
  110. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_compute_vpc_subnet_cleanup.json +0 -0
  111. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_crm_folder_cleanup.json +0 -0
  112. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_crm_organization_cleanup.json +0 -0
  113. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json +0 -0
  114. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_dns_cleanup.json +0 -0
  115. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json +0 -0
  116. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json +0 -0
  117. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/github_repos_cleanup.json +0 -0
  118. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/github_users_cleanup.json +0 -0
  119. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json +0 -0
  120. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json +0 -0
  121. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json +0 -0
  122. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/kubernetes_import_cleanup.json +0 -0
  123. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_import_compartments_cleanup.json +0 -0
  124. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_import_groups_cleanup.json +0 -0
  125. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_import_groups_membership_cleanup.json +0 -0
  126. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_import_policies_cleanup.json +0 -0
  127. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_import_users_cleanup.json +0 -0
  128. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/oci_tenancy_cleanup.json +0 -0
  129. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/okta_groups_cleanup.json +0 -0
  130. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/okta_import_cleanup.json +0 -0
  131. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/cleanup/pagerduty_import_cleanup.json +0 -0
  132. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/scoped_analysis/__init__.py +0 -0
  133. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/jobs/scoped_analysis/semgrep_sca_risk_analysis.json +0 -0
  134. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/data/permission_relationships.yaml +0 -0
  135. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/__init__.py +0 -0
  136. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/__main__.py +0 -0
  137. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/add_shortcut.py +0 -0
  138. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/cli.py +0 -0
  139. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/config.py +0 -0
  140. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/detect_deviations.py +0 -0
  141. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/get_states.py +0 -0
  142. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/model.py +0 -0
  143. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/reporter.py +0 -0
  144. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/serializers.py +0 -0
  145. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/shortcut.py +0 -0
  146. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/storage.py +0 -0
  147. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/driftdetect/util.py +0 -0
  148. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/__init__.py +0 -0
  149. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/cleanupbuilder.py +0 -0
  150. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/context.py +0 -0
  151. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/job.py +0 -0
  152. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/graph/statement.py +0 -0
  153. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/__init__.py +0 -0
  154. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/analysis.py +0 -0
  155. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/__init__.py +0 -0
  156. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/apigateway.py +0 -0
  157. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/config.py +0 -0
  158. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/dynamodb.py +0 -0
  159. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/__init__.py +0 -0
  160. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/auto_scaling_groups.py +0 -0
  161. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/elastic_ip_addresses.py +0 -0
  162. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/images.py +0 -0
  163. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/instances.py +0 -0
  164. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/internet_gateways.py +0 -0
  165. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/key_pairs.py +0 -0
  166. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/launch_templates.py +0 -0
  167. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/load_balancer_v2s.py +0 -0
  168. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/load_balancers.py +0 -0
  169. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/network_interfaces.py +0 -0
  170. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/reserved_instances.py +0 -0
  171. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/security_groups.py +0 -0
  172. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/snapshots.py +0 -0
  173. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/subnets.py +0 -0
  174. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/tgw.py +0 -0
  175. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/util.py +0 -0
  176. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/volumes.py +0 -0
  177. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/vpc.py +0 -0
  178. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ec2/vpc_peerings.py +0 -0
  179. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ecr.py +0 -0
  180. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ecs.py +0 -0
  181. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/eks.py +0 -0
  182. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/elasticache.py +0 -0
  183. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/elasticsearch.py +0 -0
  184. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/emr.py +0 -0
  185. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/iam.py +0 -0
  186. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/inspector.py +0 -0
  187. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/kms.py +0 -0
  188. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/lambda_function.py +0 -0
  189. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/organizations.py +0 -0
  190. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/permission_relationships.py +0 -0
  191. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/rds.py +0 -0
  192. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/redshift.py +0 -0
  193. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/resourcegroupstaggingapi.py +0 -0
  194. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/route53.py +0 -0
  195. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/s3.py +0 -0
  196. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/secretsmanager.py +0 -0
  197. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/securityhub.py +0 -0
  198. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/sqs.py +0 -0
  199. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/ssm.py +0 -0
  200. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/util/__init__.py +0 -0
  201. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/util/arns.py +0 -0
  202. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/aws/util/common.py +0 -0
  203. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/__init__.py +0 -0
  204. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/compute.py +0 -0
  205. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/cosmosdb.py +0 -0
  206. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/sql.py +0 -0
  207. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/storage.py +0 -0
  208. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/subscription.py +0 -0
  209. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/tenant.py +0 -0
  210. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/util/__init__.py +0 -0
  211. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/azure/util/credentials.py +0 -0
  212. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/bigfix/__init__.py +0 -0
  213. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/bigfix/computers.py +0 -0
  214. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/create_indexes.py +0 -0
  215. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/crowdstrike/__init__.py +0 -0
  216. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/crowdstrike/endpoints.py +0 -0
  217. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/crowdstrike/spotlight.py +0 -0
  218. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/crowdstrike/util.py +0 -0
  219. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/cve/__init__.py +0 -0
  220. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/cve/feed.py +0 -0
  221. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/digitalocean/__init__.py +0 -0
  222. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/digitalocean/compute.py +0 -0
  223. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/digitalocean/management.py +0 -0
  224. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/digitalocean/platform.py +0 -0
  225. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/dns.py +0 -0
  226. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/__init__.py +0 -0
  227. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/api_host.py +0 -0
  228. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/endpoints.py +0 -0
  229. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/groups.py +0 -0
  230. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/phones.py +0 -0
  231. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/tokens.py +0 -0
  232. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/users.py +0 -0
  233. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/duo/web_authn_credentials.py +0 -0
  234. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/__init__.py +0 -0
  235. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/compute.py +0 -0
  236. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/crm.py +0 -0
  237. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/dns.py +0 -0
  238. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/gke.py +0 -0
  239. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gcp/storage.py +0 -0
  240. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/github/__init__.py +0 -0
  241. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/github/repos.py +0 -0
  242. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/github/teams.py +0 -0
  243. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/github/users.py +0 -0
  244. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/github/util.py +0 -0
  245. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gsuite/__init__.py +0 -0
  246. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/gsuite/api.py +0 -0
  247. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/jamf/__init__.py +0 -0
  248. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/jamf/computers.py +0 -0
  249. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/jamf/util.py +0 -0
  250. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kandji/__init__.py +0 -0
  251. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kandji/devices.py +0 -0
  252. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/__init__.py +0 -0
  253. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/namespaces.py +0 -0
  254. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/pods.py +0 -0
  255. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/secrets.py +0 -0
  256. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/services.py +0 -0
  257. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/kubernetes/util.py +0 -0
  258. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/lastpass/__init__.py +0 -0
  259. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/lastpass/users.py +0 -0
  260. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/oci/__init__.py +0 -0
  261. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/oci/iam.py +0 -0
  262. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/oci/organizations.py +0 -0
  263. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/oci/utils.py +0 -0
  264. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/__init__.py +0 -0
  265. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/applications.py +0 -0
  266. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/awssaml.py +0 -0
  267. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/factors.py +0 -0
  268. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/groups.py +0 -0
  269. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/organization.py +0 -0
  270. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/origins.py +0 -0
  271. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/roles.py +0 -0
  272. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/sync_state.py +0 -0
  273. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/users.py +0 -0
  274. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/okta/utils.py +0 -0
  275. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/__init__.py +0 -0
  276. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/escalation_policies.py +0 -0
  277. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/schedules.py +0 -0
  278. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/services.py +0 -0
  279. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/teams.py +0 -0
  280. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/users.py +0 -0
  281. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/pagerduty/vendors.py +0 -0
  282. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/snipeit/__init__.py +0 -0
  283. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/snipeit/asset.py +0 -0
  284. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/snipeit/user.py +0 -0
  285. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/intel/snipeit/util.py +0 -0
  286. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/__init__.py +0 -0
  287. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/__init__.py +0 -0
  288. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/dynamodb/__init__.py +0 -0
  289. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/dynamodb/gsi.py +0 -0
  290. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/dynamodb/tables.py +0 -0
  291. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/__init__.py +0 -0
  292. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/images.py +0 -0
  293. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/instances.py +0 -0
  294. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/keypairs.py +0 -0
  295. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/launch_template_versions.py +0 -0
  296. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/launch_templates.py +0 -0
  297. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/loadbalancerv2.py +0 -0
  298. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/networkinterface_instance.py +0 -0
  299. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/networkinterfaces.py +0 -0
  300. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/privateip_networkinterface.py +0 -0
  301. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/reservations.py +0 -0
  302. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/securitygroup_instance.py +0 -0
  303. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/securitygroup_networkinterface.py +0 -0
  304. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/subnet_instance.py +0 -0
  305. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/subnet_networkinterface.py +0 -0
  306. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ec2/volumes.py +0 -0
  307. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/eks/__init__.py +0 -0
  308. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/eks/clusters.py +0 -0
  309. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/emr.py +0 -0
  310. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/inspector/__init__.py +0 -0
  311. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/inspector/findings.py +0 -0
  312. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/inspector/packages.py +0 -0
  313. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ssm/__init__.py +0 -0
  314. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ssm/instance_information.py +0 -0
  315. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/aws/ssm/instance_patch.py +0 -0
  316. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/bigfix/__init__.py +0 -0
  317. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/bigfix/bigfix_computer.py +0 -0
  318. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/bigfix/bigfix_root.py +0 -0
  319. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/core/__init__.py +0 -0
  320. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/core/nodes.py +0 -0
  321. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/core/relationships.py +0 -0
  322. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/cve/__init__.py +0 -0
  323. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/cve/cve.py +0 -0
  324. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/cve/cve_feed.py +0 -0
  325. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/__init__.py +0 -0
  326. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/api_host.py +0 -0
  327. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/endpoint.py +0 -0
  328. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/group.py +0 -0
  329. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/phone.py +0 -0
  330. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/token.py +0 -0
  331. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/user.py +0 -0
  332. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/duo/web_authn_credential.py +0 -0
  333. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/github/__init__.py +0 -0
  334. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/github/teams.py +0 -0
  335. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/kandji/__init__.py +0 -0
  336. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/kandji/device.py +0 -0
  337. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/kandji/tenant.py +0 -0
  338. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/lastpass/__init__.py +0 -0
  339. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/lastpass/tenant.py +0 -0
  340. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/lastpass/user.py +0 -0
  341. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/semgrep/__init__.py +0 -0
  342. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/semgrep/deployment.py +0 -0
  343. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/semgrep/findings.py +0 -0
  344. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/semgrep/locations.py +0 -0
  345. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/snipeit/__init__.py +0 -0
  346. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/snipeit/asset.py +0 -0
  347. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/snipeit/tenant.py +0 -0
  348. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/models/snipeit/user.py +0 -0
  349. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/py.typed +0 -0
  350. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/stats.py +0 -0
  351. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/sync.py +0 -0
  352. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography/util.py +0 -0
  353. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/dependency_links.txt +0 -0
  354. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/entry_points.txt +0 -0
  355. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/requires.txt +0 -0
  356. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/cartography.egg-info/top_level.txt +0 -0
  357. {cartography-0.95.0rc1 → cartography-0.96.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cartography
3
- Version: 0.95.0rc1
3
+ Version: 0.96.0rc1
4
4
  Summary: Explore assets and their relationships across your technical infrastructure.
5
5
  Home-page: https://www.github.com/cartography-cncf/cartography
6
6
  Maintainer: Cartography Contributors
@@ -80,11 +80,10 @@ Directly querying Neo4j is already very useful as a sort of "swiss army knife" f
80
80
 
81
81
  ## Community
82
82
 
83
- - Join us on `#cartography` on the [Lyft OSS Slack](https://join.slack.com/t/lyftoss/shared_invite/enQtOTYzODg5OTQwNDE2LTFiYjgwZWM3NTNhMTFkZjc4Y2IxOTI4NTdiNTdhNjQ4M2Q5NTIzMjVjOWI4NmVlNjRiZmU2YzA5NTc3MmFjYTQ).
83
+ - Hang out with us on Slack: Join the CNCF Slack workspace [here](https://communityinviter.com/apps/cloud-native/cncf), and then join the `#cartography` channel.
84
84
  - Talk to us and see what we're working on at our [monthly community meeting](https://calendar.google.com/calendar/embed?src=lyft.com_p10o6ceuiieq9sqcn1ef61v1io%40group.calendar.google.com&ctz=America%2FLos_Angeles).
85
85
  - Meeting minutes are [here](https://docs.google.com/document/d/1VyRKmB0dpX185I15BmNJZpfAJ_Ooobwz0U1WIhjDxvw).
86
86
  - Recorded videos are posted [here](https://www.youtube.com/playlist?list=PLMga2YJvAGzidUWJB_fnG7EHI4wsDDsE1).
87
- - Our current project roadmap is [here](https://github.com/orgs/lyft/projects/26/views/1).
88
87
 
89
88
  ## License
90
89
 
@@ -118,6 +118,7 @@ def _build_where_clause_for_rel_match(node_var: str, matcher: TargetNodeMatcher)
118
118
  """
119
119
  match = Template("$node_var.$key = $prop_ref")
120
120
  case_insensitive_match = Template("toLower($node_var.$key) = toLower($prop_ref)")
121
+ fuzzy_and_ignorecase_match = Template("toLower($node_var.$key) CONTAINS toLower($prop_ref)")
121
122
 
122
123
  matcher_asdict = asdict(matcher)
123
124
 
@@ -125,7 +126,10 @@ def _build_where_clause_for_rel_match(node_var: str, matcher: TargetNodeMatcher)
125
126
  for key, prop_ref in matcher_asdict.items():
126
127
  if prop_ref.ignore_case:
127
128
  prop_line = case_insensitive_match.safe_substitute(node_var=node_var, key=key, prop_ref=prop_ref)
129
+ elif prop_ref.fuzzy_and_ignore_case:
130
+ prop_line = fuzzy_and_ignorecase_match.safe_substitute(node_var=node_var, key=key, prop_ref=prop_ref)
128
131
  else:
132
+ # Exact match (default; most efficient)
129
133
  prop_line = match.safe_substitute(node_var=node_var, key=key, prop_ref=prop_ref)
130
134
  result.append(prop_line)
131
135
  return ' AND\n'.join(result)
@@ -0,0 +1,208 @@
1
+ import logging
2
+ from collections import namedtuple
3
+ from typing import Any
4
+
5
+ import boto3
6
+ import neo4j
7
+
8
+ from .util import get_botocore_config
9
+ from cartography.client.core.tx import load
10
+ from cartography.graph.job import GraphJob
11
+ from cartography.models.aws.ec2.network_acl_rules import EC2NetworkAclEgressRuleSchema
12
+ from cartography.models.aws.ec2.network_acl_rules import EC2NetworkAclInboundRuleSchema
13
+ from cartography.models.aws.ec2.network_acls import EC2NetworkAclSchema
14
+ from cartography.util import aws_handle_regions
15
+ from cartography.util import timeit
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+ Ec2AclObjects = namedtuple(
20
+ "Ec2AclObjects", [
21
+ 'network_acls',
22
+ 'inbound_rules',
23
+ 'outbound_rules',
24
+ ],
25
+ )
26
+
27
+
28
+ @timeit
29
+ @aws_handle_regions
30
+ def get_network_acl_data(boto3_session: boto3.session.Session, region: str) -> list[dict[str, Any]]:
31
+ client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
32
+ paginator = client.get_paginator('describe_network_acls')
33
+ acls = []
34
+ for page in paginator.paginate():
35
+ acls.extend(page['NetworkAcls'])
36
+ return acls
37
+
38
+
39
+ def transform_network_acl_data(
40
+ data_list: list[dict[str, Any]],
41
+ region: str,
42
+ current_aws_account_id: str,
43
+ ) -> Ec2AclObjects:
44
+ network_acls = []
45
+ inbound_rules = []
46
+ outbound_rules = []
47
+
48
+ for network_acl in data_list:
49
+ network_acl_id = network_acl['NetworkAclId']
50
+ base_network_acl = {
51
+ 'Id': network_acl_id,
52
+ 'Arn': f'arn:aws:ec2:{region}:{current_aws_account_id}:network-acl/{network_acl_id}',
53
+ 'IsDefault': network_acl['IsDefault'],
54
+ 'VpcId': network_acl['VpcId'],
55
+ 'OwnerId': network_acl['OwnerId'],
56
+ }
57
+ if network_acl.get('Associations') and network_acl['Associations']:
58
+ # Include subnet associations in the data object if they exist
59
+ for association in network_acl['Associations']:
60
+ base_network_acl['NetworkAclAssociationId'] = association['NetworkAclAssociationId']
61
+ base_network_acl['SubnetId'] = association['SubnetId']
62
+ network_acls.append(base_network_acl)
63
+ else:
64
+ # Otherwise if there's no associations then don't include that in the data object
65
+ network_acls.append(base_network_acl)
66
+
67
+ if network_acl.get("Entries"):
68
+ for rule in network_acl["Entries"]:
69
+ direction = 'egress' if rule['Egress'] else 'inbound'
70
+ transformed_rule = {
71
+ 'Id': f"{network_acl['NetworkAclId']}/{direction}/{rule['RuleNumber']}",
72
+ 'CidrBlock': rule['CidrBlock'],
73
+ 'Egress': rule['Egress'],
74
+ 'Protocol': rule['Protocol'],
75
+ 'RuleAction': rule['RuleAction'],
76
+ 'RuleNumber': rule['RuleNumber'],
77
+ # Add pointer back to the nacl to create an edge
78
+ 'NetworkAclId': network_acl_id,
79
+ 'FromPort': rule.get('PortRange', {}).get('FromPort'),
80
+ 'ToPort': rule.get('PortRange', {}).get('ToPort'),
81
+ }
82
+ if transformed_rule['Egress']:
83
+ outbound_rules.append(transformed_rule)
84
+ else:
85
+ inbound_rules.append(transformed_rule)
86
+ return Ec2AclObjects(
87
+ network_acls=network_acls,
88
+ inbound_rules=inbound_rules,
89
+ outbound_rules=outbound_rules,
90
+ )
91
+
92
+
93
+ @timeit
94
+ def load_all_nacl_data(
95
+ neo4j_session: neo4j.Session,
96
+ ec2_acl_objects: Ec2AclObjects,
97
+ region: str,
98
+ aws_account_id: str,
99
+ update_tag: int,
100
+ ) -> None:
101
+ load_network_acls(
102
+ neo4j_session,
103
+ ec2_acl_objects.network_acls,
104
+ region,
105
+ aws_account_id,
106
+ update_tag,
107
+ )
108
+ load_network_acl_inbound_rules(
109
+ neo4j_session,
110
+ ec2_acl_objects.inbound_rules,
111
+ region,
112
+ aws_account_id,
113
+ update_tag,
114
+ )
115
+ load_network_acl_egress_rules(
116
+ neo4j_session,
117
+ ec2_acl_objects.outbound_rules,
118
+ region,
119
+ aws_account_id,
120
+ update_tag,
121
+ )
122
+
123
+
124
+ @timeit
125
+ def load_network_acls(
126
+ neo4j_session: neo4j.Session,
127
+ data: list[dict[str, Any]],
128
+ region: str,
129
+ aws_account_id: str,
130
+ update_tag: int,
131
+ ) -> None:
132
+ logger.info(f"Loading {len(data)} network acls in {region}.")
133
+ load(
134
+ neo4j_session,
135
+ EC2NetworkAclSchema(),
136
+ data,
137
+ Region=region,
138
+ AWS_ID=aws_account_id,
139
+ lastupdated=update_tag,
140
+ )
141
+
142
+
143
+ @timeit
144
+ def load_network_acl_inbound_rules(
145
+ neo4j_session: neo4j.Session,
146
+ data: list[dict[str, Any]],
147
+ region: str,
148
+ aws_account_id: str,
149
+ update_tag: int,
150
+ ) -> None:
151
+ logger.info(f"Loading {len(data)} network acl inbound rules in {region}.")
152
+ load(
153
+ neo4j_session,
154
+ EC2NetworkAclInboundRuleSchema(),
155
+ data,
156
+ Region=region,
157
+ AWS_ID=aws_account_id,
158
+ lastupdated=update_tag,
159
+ )
160
+
161
+
162
+ @timeit
163
+ def load_network_acl_egress_rules(
164
+ neo4j_session: neo4j.Session,
165
+ data: list[dict[str, Any]],
166
+ region: str,
167
+ aws_account_id: str,
168
+ update_tag: int,
169
+ ) -> None:
170
+ logger.info(f"Loading {len(data)} network acl egress rules in {region}.")
171
+ load(
172
+ neo4j_session,
173
+ EC2NetworkAclEgressRuleSchema(),
174
+ data,
175
+ Region=region,
176
+ AWS_ID=aws_account_id,
177
+ lastupdated=update_tag,
178
+ )
179
+
180
+
181
+ @timeit
182
+ def cleanup_network_acls(neo4j_session: neo4j.Session, common_job_parameters: dict[str, Any]) -> None:
183
+ GraphJob.from_node_schema(EC2NetworkAclSchema(), common_job_parameters).run(neo4j_session)
184
+ GraphJob.from_node_schema(EC2NetworkAclInboundRuleSchema(), common_job_parameters).run(neo4j_session)
185
+ GraphJob.from_node_schema(EC2NetworkAclEgressRuleSchema(), common_job_parameters).run(neo4j_session)
186
+
187
+
188
+ @timeit
189
+ def sync_network_acls(
190
+ neo4j_session: neo4j.Session,
191
+ boto3_session: boto3.session.Session,
192
+ regions: list[str],
193
+ current_aws_account_id: str,
194
+ update_tag: int,
195
+ common_job_parameters: dict[str, Any],
196
+ ) -> None:
197
+ for region in regions:
198
+ logger.info(f"Syncing EC2 network ACLs for region '{region}' in account '{current_aws_account_id}'.")
199
+ data = get_network_acl_data(boto3_session, region)
200
+ ec2_acl_data = transform_network_acl_data(data, region, current_aws_account_id)
201
+ load_all_nacl_data(
202
+ neo4j_session,
203
+ ec2_acl_data,
204
+ region,
205
+ current_aws_account_id,
206
+ update_tag,
207
+ )
208
+ cleanup_network_acls(neo4j_session, common_job_parameters)
@@ -32,6 +32,7 @@ from .ec2.key_pairs import sync_ec2_key_pairs
32
32
  from .ec2.launch_templates import sync_ec2_launch_templates
33
33
  from .ec2.load_balancer_v2s import sync_load_balancer_v2s
34
34
  from .ec2.load_balancers import sync_load_balancers
35
+ from .ec2.network_acls import sync_network_acls
35
36
  from .ec2.network_interfaces import sync_network_interfaces
36
37
  from .ec2.reserved_instances import sync_ec2_reserved_instances
37
38
  from .ec2.security_groups import sync_ec2_security_groupinfo
@@ -55,6 +56,7 @@ RESOURCE_FUNCTIONS: Dict = {
55
56
  'ec2:keypair': sync_ec2_key_pairs,
56
57
  'ec2:load_balancer': sync_load_balancers,
57
58
  'ec2:load_balancer_v2': sync_load_balancer_v2s,
59
+ 'ec2:network_acls': sync_network_acls,
58
60
  'ec2:network_interface': sync_network_interfaces,
59
61
  'ec2:security_group': sync_ec2_security_groupinfo,
60
62
  'ec2:subnet': sync_subnets,
@@ -0,0 +1,30 @@
1
+ import logging
2
+
3
+ import neo4j
4
+
5
+ from cartography.config import Config
6
+ from cartography.intel.semgrep.dependencies import sync_dependencies
7
+ from cartography.intel.semgrep.deployment import sync_deployment
8
+ from cartography.intel.semgrep.findings import sync_findings
9
+ from cartography.util import timeit
10
+
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ @timeit
16
+ def start_semgrep_ingestion(
17
+ neo4j_session: neo4j.Session, config: Config,
18
+ ) -> None:
19
+ common_job_parameters = {
20
+ "UPDATE_TAG": config.update_tag,
21
+ }
22
+ if not config.semgrep_app_token:
23
+ logger.info('Semgrep import is not configured - skipping this module. See docs to configure.')
24
+ return
25
+
26
+ # sync_deployment must be called first since it populates common_job_parameters
27
+ # with the deployment ID and slug, which are required by the other sync functions
28
+ sync_deployment(neo4j_session, config.semgrep_app_token, config.update_tag, common_job_parameters)
29
+ sync_dependencies(neo4j_session, config.semgrep_app_token, config.update_tag, common_job_parameters)
30
+ sync_findings(neo4j_session, config.semgrep_app_token, config.update_tag, common_job_parameters)
@@ -0,0 +1,201 @@
1
+ import logging
2
+ from typing import Any
3
+ from typing import Callable
4
+ from typing import Dict
5
+ from typing import List
6
+
7
+ import neo4j
8
+ import requests
9
+ from requests.exceptions import HTTPError
10
+ from requests.exceptions import ReadTimeout
11
+
12
+ from cartography.client.core.tx import load
13
+ from cartography.graph.job import GraphJob
14
+ from cartography.models.semgrep.dependencies import SemgrepGoLibrarySchema
15
+ from cartography.stats import get_stats_client
16
+ from cartography.util import merge_module_sync_metadata
17
+ from cartography.util import timeit
18
+
19
+ logger = logging.getLogger(__name__)
20
+ stat_handler = get_stats_client(__name__)
21
+ _PAGE_SIZE = 10000
22
+ _TIMEOUT = (60, 60)
23
+ _MAX_RETRIES = 3
24
+
25
+
26
+ @timeit
27
+ def get_dependencies(semgrep_app_token: str, deployment_id: str, ecosystems: List[str]) -> List[Dict[str, Any]]:
28
+ """
29
+ Gets all dependencies for the given ecosystems within the given Semgrep deployment ID.
30
+ param: semgrep_app_token: The Semgrep App token to use for authentication.
31
+ param: deployment_id: The Semgrep deployment ID to use for retrieving dependencies.
32
+ param: ecosystems: One or more ecosystems to import dependencies from, e.g. "gomod" or "pypi".
33
+ The list of supported ecosystems is defined here:
34
+ https://semgrep.dev/api/v1/docs/#tag/SupplyChainService/operation/semgrep_app.products.sca.handlers.dependency.list_dependencies_conexxion
35
+ """
36
+ all_deps = []
37
+ deps_url = f"https://semgrep.dev/api/v1/deployments/{deployment_id}/dependencies"
38
+ has_more = True
39
+ page = 0
40
+ retries = 0
41
+ headers = {
42
+ "Content-Type": "application/json",
43
+ "Authorization": f"Bearer {semgrep_app_token}",
44
+ }
45
+
46
+ request_data: dict[str, Any] = {
47
+ "pageSize": _PAGE_SIZE,
48
+ "dependencyFilter": {
49
+ "ecosystem": ecosystems,
50
+ },
51
+ }
52
+
53
+ logger.info(f"Retrieving Semgrep dependencies for deployment '{deployment_id}'.")
54
+ while has_more:
55
+ try:
56
+ response = requests.post(deps_url, json=request_data, headers=headers, timeout=_TIMEOUT)
57
+ response.raise_for_status()
58
+ data = response.json()
59
+ except (ReadTimeout, HTTPError):
60
+ logger.warning(f"Failed to retrieve Semgrep dependencies for page {page}. Retrying...")
61
+ retries += 1
62
+ if retries >= _MAX_RETRIES:
63
+ raise
64
+ continue
65
+ deps = data.get("dependencies", [])
66
+ has_more = data.get("hasMore", False)
67
+ logger.info(f"Processed page {page} of Semgrep dependencies.")
68
+ all_deps.extend(deps)
69
+ retries = 0
70
+ page += 1
71
+ request_data["cursor"] = data.get("cursor")
72
+
73
+ logger.info(f"Retrieved {len(all_deps)} Semgrep dependencies in {page} pages.")
74
+ return all_deps
75
+
76
+
77
+ def transform_dependencies(raw_deps: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
78
+ """
79
+ Transforms the raw dependencies response from Semgrep API into a list of dicts
80
+ that can be used to create the Dependency nodes.
81
+ """
82
+
83
+ """
84
+ sample raw_dep as of November 2024:
85
+ {
86
+ "repositoryId": "123456",
87
+ "definedAt": {
88
+ "path": "go.mod",
89
+ "startLine": "6",
90
+ "endLine": "6",
91
+ "url": "https://github.com/org/repo-name/blob/00000000000000000000000000000000/go.mod#L6",
92
+ "committedAt": "1970-01-01T00:00:00Z",
93
+ "startCol": "0",
94
+ "endCol": "0"
95
+ },
96
+ "transitivity": "DIRECT",
97
+ "package": {
98
+ "name": "github.com/foo/bar",
99
+ "versionSpecifier": "1.2.3"
100
+ },
101
+ "ecosystem": "gomod",
102
+ "licenses": [],
103
+ "pathToTransitivity": []
104
+ },
105
+ """
106
+ deps = []
107
+ for raw_dep in raw_deps:
108
+
109
+ # We could call a different endpoint to get all repo IDs and store a mapping of repo ID to URL,
110
+ # but it's much simpler to just extract the URL from the definedAt field.
111
+ repo_url = raw_dep["definedAt"]["url"].split("/blob/", 1)[0]
112
+
113
+ name = raw_dep["package"]["name"]
114
+ version = raw_dep["package"]["versionSpecifier"]
115
+ id = f"{name}|{version}"
116
+
117
+ # As of November 2024, Semgrep does not import dependencies with version specifiers such as >, <, etc.
118
+ # For now, hardcode the specifier to ==<version> to align with GitHub-sourced Python dependencies.
119
+ # If Semgrep eventually supports version specifiers, update this line accordingly.
120
+ specifier = f"=={version}"
121
+
122
+ deps.append({
123
+ # existing dependency properties:
124
+ "id": id,
125
+ "name": name,
126
+ "specifier": specifier,
127
+ "version": version,
128
+ "repo_url": repo_url,
129
+
130
+ # Semgrep-specific properties:
131
+ "ecosystem": raw_dep["ecosystem"],
132
+ "transitivity": raw_dep["transitivity"].lower(),
133
+ "url": raw_dep["definedAt"]["url"],
134
+ })
135
+
136
+ return deps
137
+
138
+
139
+ @timeit
140
+ def load_dependencies(
141
+ neo4j_session: neo4j.Session,
142
+ dependency_schema: Callable,
143
+ dependencies: List[Dict],
144
+ deployment_id: str,
145
+ update_tag: int,
146
+ ) -> None:
147
+ logger.info(f"Loading {len(dependencies)} {dependency_schema().label} objects into the graph.")
148
+ load(
149
+ neo4j_session,
150
+ dependency_schema(),
151
+ dependencies,
152
+ lastupdated=update_tag,
153
+ DEPLOYMENT_ID=deployment_id,
154
+ )
155
+
156
+
157
+ @timeit
158
+ def cleanup(
159
+ neo4j_session: neo4j.Session,
160
+ common_job_parameters: Dict[str, Any],
161
+ ) -> None:
162
+ logger.info("Running Semgrep Go Library cleanup job.")
163
+ go_libraries_cleanup_job = GraphJob.from_node_schema(
164
+ SemgrepGoLibrarySchema(), common_job_parameters,
165
+ )
166
+ go_libraries_cleanup_job.run(neo4j_session)
167
+
168
+
169
+ @timeit
170
+ def sync_dependencies(
171
+ neo4j_session: neo4j.Session,
172
+ semgrep_app_token: str,
173
+ update_tag: int,
174
+ common_job_parameters: Dict[str, Any],
175
+ ) -> None:
176
+
177
+ deployment_id = common_job_parameters.get("DEPLOYMENT_ID")
178
+ if not deployment_id:
179
+ logger.warning(
180
+ "Missing Semgrep deployment ID, ensure that sync_deployment() has been called."
181
+ "Skipping Semgrep dependencies sync job.",
182
+ )
183
+ return
184
+
185
+ logger.info("Running Semgrep dependencies sync job.")
186
+
187
+ # fetch and load dependencies for the Go ecosystem
188
+ raw_go_deps = get_dependencies(semgrep_app_token, deployment_id, ecosystems=["gomod"])
189
+ go_deps = transform_dependencies(raw_go_deps)
190
+ load_dependencies(neo4j_session, SemgrepGoLibrarySchema, go_deps, deployment_id, update_tag)
191
+
192
+ cleanup(neo4j_session, common_job_parameters)
193
+
194
+ merge_module_sync_metadata(
195
+ neo4j_session=neo4j_session,
196
+ group_type='Semgrep',
197
+ group_id=deployment_id,
198
+ synced_type='SemgrepDependency',
199
+ update_tag=update_tag,
200
+ stat_handler=stat_handler,
201
+ )
@@ -0,0 +1,67 @@
1
+ import logging
2
+ from typing import Any
3
+ from typing import Dict
4
+
5
+ import neo4j
6
+ import requests
7
+
8
+ from cartography.client.core.tx import load
9
+ from cartography.models.semgrep.deployment import SemgrepDeploymentSchema
10
+ from cartography.stats import get_stats_client
11
+ from cartography.util import timeit
12
+
13
+ logger = logging.getLogger(__name__)
14
+ stat_handler = get_stats_client(__name__)
15
+ _TIMEOUT = (60, 60)
16
+
17
+
18
+ @timeit
19
+ def get_deployment(semgrep_app_token: str) -> Dict[str, Any]:
20
+ """
21
+ Gets the deployment associated with the passed Semgrep App token.
22
+ param: semgrep_app_token: The Semgrep App token to use for authentication.
23
+ """
24
+ deployment = {}
25
+ deployment_url = "https://semgrep.dev/api/v1/deployments"
26
+ headers = {
27
+ "Content-Type": "application/json",
28
+ "Authorization": f"Bearer {semgrep_app_token}",
29
+ }
30
+ response = requests.get(deployment_url, headers=headers, timeout=_TIMEOUT)
31
+ response.raise_for_status()
32
+
33
+ data = response.json()
34
+ deployment["id"] = data["deployments"][0]["id"]
35
+ deployment["name"] = data["deployments"][0]["name"]
36
+ deployment["slug"] = data["deployments"][0]["slug"]
37
+
38
+ return deployment
39
+
40
+
41
+ @timeit
42
+ def load_semgrep_deployment(
43
+ neo4j_session: neo4j.Session, deployment: Dict[str, Any], update_tag: int,
44
+ ) -> None:
45
+ logger.info(f"Loading SemgrepDeployment {deployment} into the graph.")
46
+ load(
47
+ neo4j_session,
48
+ SemgrepDeploymentSchema(),
49
+ [deployment],
50
+ lastupdated=update_tag,
51
+ )
52
+
53
+
54
+ @timeit
55
+ def sync_deployment(
56
+ neo4j_session: neo4j.Session,
57
+ semgrep_app_token: str,
58
+ update_tag: int,
59
+ common_job_parameters: Dict[str, Any],
60
+ ) -> None:
61
+
62
+ semgrep_deployment = get_deployment(semgrep_app_token)
63
+ deployment_id = semgrep_deployment["id"]
64
+ deployment_slug = semgrep_deployment["slug"]
65
+ load_semgrep_deployment(neo4j_session, semgrep_deployment, update_tag)
66
+ common_job_parameters["DEPLOYMENT_ID"] = deployment_id
67
+ common_job_parameters["DEPLOYMENT_SLUG"] = deployment_slug