cartography 0.97.1__tar.gz → 0.98.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 (368) hide show
  1. {cartography-0.97.1 → cartography-0.98.0rc1}/PKG-INFO +1 -1
  2. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/indexes.cypher +0 -4
  3. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json +17 -2
  4. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/gcp_compute_asset_inet_exposure.json +1 -1
  5. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/cleanupbuilder.py +47 -4
  6. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/instances.py +5 -4
  7. cartography-0.98.0rc1/cartography/intel/aws/ec2/key_pairs.py +80 -0
  8. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/github/users.py +10 -3
  9. cartography-0.97.1/cartography/models/aws/ec2/keypairs.py → cartography-0.98.0rc1/cartography/models/aws/ec2/keypair.py +13 -23
  10. cartography-0.98.0rc1/cartography/models/aws/ec2/keypair_instance.py +69 -0
  11. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/PKG-INFO +1 -1
  12. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/SOURCES.txt +2 -2
  13. {cartography-0.97.1 → cartography-0.98.0rc1}/setup.py +1 -1
  14. cartography-0.97.1/cartography/data/jobs/cleanup/github_org_and_users_cleanup.json +0 -28
  15. cartography-0.97.1/cartography/intel/aws/ec2/key_pairs.py +0 -71
  16. {cartography-0.97.1 → cartography-0.98.0rc1}/LICENSE +0 -0
  17. {cartography-0.97.1 → cartography-0.98.0rc1}/README.md +0 -0
  18. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/__init__.py +0 -0
  19. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/__main__.py +0 -0
  20. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/cli.py +0 -0
  21. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/client/__init__.py +0 -0
  22. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/client/aws/__init__.py +0 -0
  23. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/client/aws/iam.py +0 -0
  24. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/client/core/__init__.py +0 -0
  25. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/client/core/tx.py +0 -0
  26. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/config.py +0 -0
  27. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/__init__.py +0 -0
  28. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/__init__.py +0 -0
  29. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/__init__.py +0 -0
  30. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_ec2_iaminstance.json +0 -0
  31. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_ec2_iaminstanceprofile.json +0 -0
  32. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_ec2_keypair_analysis.json +0 -0
  33. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_eks_asset_exposure.json +0 -0
  34. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_foreign_accounts.json +0 -0
  35. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_lambda_ecr.json +0 -0
  36. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/aws_s3acl_analysis.json +0 -0
  37. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/gcp_gke_asset_exposure.json +0 -0
  38. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/gcp_gke_basic_auth.json +0 -0
  39. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/analysis/gsuite_human_link.json +0 -0
  40. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/__init__.py +0 -0
  41. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_account_cleanup.json +0 -0
  42. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_apigateway_details.json +0 -0
  43. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_dns_cleanup.json +0 -0
  44. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json +0 -0
  45. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json +0 -0
  46. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_config_cleanup.json +0 -0
  47. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json +0 -0
  48. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json +0 -0
  49. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json +0 -0
  50. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json +0 -0
  51. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_elastic_ip_addresses_cleanup.json +0 -0
  52. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_elasticache_cleanup.json +0 -0
  53. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_es_cleanup.json +0 -0
  54. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_cleanup.json +0 -0
  55. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json +0 -0
  56. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json +0 -0
  57. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_identity_center_cleanup.json +0 -0
  58. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json +0 -0
  59. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_kms_cleanup.json +0 -0
  60. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +0 -0
  61. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_principals_cleanup.json +0 -0
  62. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json +0 -0
  63. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json +0 -0
  64. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_rds_snapshots_cleanup.json +0 -0
  65. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_redshift_clusters_cleanup.json +0 -0
  66. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_reserved_instances_cleanup.json +0 -0
  67. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_roles_cleanup.json +0 -0
  68. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_roles_policy_cleanup.json +0 -0
  69. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_s3_acl_cleanup.json +0 -0
  70. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_s3_buckets_cleanup.json +0 -0
  71. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_secrets_cleanup.json +0 -0
  72. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_securityhub_cleanup.json +0 -0
  73. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_snapshots_cleanup.json +0 -0
  74. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_sqs_queues_cleanup.json +0 -0
  75. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_tags_cleanup.json +0 -0
  76. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_tgw_cleanup.json +0 -0
  77. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_users_cleanup.json +0 -0
  78. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_vpc_cleanup.json +0 -0
  79. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_import_vpc_peering_cleanup.json +0 -0
  80. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_ingest_ec2_auto_scaling_groups_cleanup.json +0 -0
  81. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_cleanup.json +0 -0
  82. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_v2_cleanup.json +0 -0
  83. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_ingest_subnets_cleanup.json +0 -0
  84. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_kms_details.json +0 -0
  85. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_post_ingestion_principals_cleanup.json +0 -0
  86. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/aws_s3_details.json +0 -0
  87. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_cassandra_keyspace_cleanup.json +0 -0
  88. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_cors_details.json +0 -0
  89. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_mongodb_database_cleanup.json +0 -0
  90. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_sql_database_cleanup.json +0 -0
  91. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_cosmosdb_table_resources_cleanup.json +0 -0
  92. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_database_account_cleanup.json +0 -0
  93. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_import_disks_cleanup.json +0 -0
  94. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_import_snapshots_cleanup.json +0 -0
  95. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_import_virtual_machines_cleanup.json +0 -0
  96. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_sql_server_cleanup.json +0 -0
  97. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_storage_account_cleanup.json +0 -0
  98. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_subscriptions_cleanup.json +0 -0
  99. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/azure_tenant_cleanup.json +0 -0
  100. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/crowdstrike_import_cleanup.json +0 -0
  101. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/digitalocean_droplet_cleanup.json +0 -0
  102. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/digitalocean_project_cleanup.json +0 -0
  103. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_compute_firewall_cleanup.json +0 -0
  104. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_compute_forwarding_rules_cleanup.json +0 -0
  105. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_compute_instance_cleanup.json +0 -0
  106. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json +0 -0
  107. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_compute_vpc_subnet_cleanup.json +0 -0
  108. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_crm_folder_cleanup.json +0 -0
  109. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_crm_organization_cleanup.json +0 -0
  110. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json +0 -0
  111. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_dns_cleanup.json +0 -0
  112. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json +0 -0
  113. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json +0 -0
  114. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/github_repos_cleanup.json +0 -0
  115. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json +0 -0
  116. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json +0 -0
  117. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json +0 -0
  118. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/kubernetes_import_cleanup.json +0 -0
  119. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_import_compartments_cleanup.json +0 -0
  120. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_import_groups_cleanup.json +0 -0
  121. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_import_groups_membership_cleanup.json +0 -0
  122. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_import_policies_cleanup.json +0 -0
  123. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_import_users_cleanup.json +0 -0
  124. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/oci_tenancy_cleanup.json +0 -0
  125. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/okta_groups_cleanup.json +0 -0
  126. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/okta_import_cleanup.json +0 -0
  127. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/cleanup/pagerduty_import_cleanup.json +0 -0
  128. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/scoped_analysis/__init__.py +0 -0
  129. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/jobs/scoped_analysis/semgrep_sca_risk_analysis.json +0 -0
  130. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/data/permission_relationships.yaml +0 -0
  131. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/__init__.py +0 -0
  132. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/__main__.py +0 -0
  133. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/add_shortcut.py +0 -0
  134. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/cli.py +0 -0
  135. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/config.py +0 -0
  136. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/detect_deviations.py +0 -0
  137. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/get_states.py +0 -0
  138. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/model.py +0 -0
  139. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/reporter.py +0 -0
  140. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/serializers.py +0 -0
  141. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/shortcut.py +0 -0
  142. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/storage.py +0 -0
  143. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/driftdetect/util.py +0 -0
  144. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/__init__.py +0 -0
  145. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/context.py +0 -0
  146. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/job.py +0 -0
  147. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/querybuilder.py +0 -0
  148. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/graph/statement.py +0 -0
  149. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/__init__.py +0 -0
  150. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/analysis.py +0 -0
  151. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/__init__.py +0 -0
  152. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/apigateway.py +0 -0
  153. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/config.py +0 -0
  154. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/dynamodb.py +0 -0
  155. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/__init__.py +0 -0
  156. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/auto_scaling_groups.py +0 -0
  157. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/elastic_ip_addresses.py +0 -0
  158. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/images.py +0 -0
  159. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/internet_gateways.py +0 -0
  160. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/launch_templates.py +0 -0
  161. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/load_balancer_v2s.py +0 -0
  162. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/load_balancers.py +0 -0
  163. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/network_acls.py +0 -0
  164. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/network_interfaces.py +0 -0
  165. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/reserved_instances.py +0 -0
  166. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/security_groups.py +0 -0
  167. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/snapshots.py +0 -0
  168. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/subnets.py +0 -0
  169. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/tgw.py +0 -0
  170. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/util.py +0 -0
  171. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/volumes.py +0 -0
  172. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/vpc.py +0 -0
  173. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ec2/vpc_peerings.py +0 -0
  174. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ecr.py +0 -0
  175. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ecs.py +0 -0
  176. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/eks.py +0 -0
  177. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/elasticache.py +0 -0
  178. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/elasticsearch.py +0 -0
  179. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/emr.py +0 -0
  180. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/iam.py +0 -0
  181. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/identitycenter.py +0 -0
  182. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/inspector.py +0 -0
  183. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/kms.py +0 -0
  184. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/lambda_function.py +0 -0
  185. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/organizations.py +0 -0
  186. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/permission_relationships.py +0 -0
  187. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/rds.py +0 -0
  188. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/redshift.py +0 -0
  189. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/resourcegroupstaggingapi.py +0 -0
  190. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/resources.py +0 -0
  191. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/route53.py +0 -0
  192. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/s3.py +0 -0
  193. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/secretsmanager.py +0 -0
  194. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/securityhub.py +0 -0
  195. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/sqs.py +0 -0
  196. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/ssm.py +0 -0
  197. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/util/__init__.py +0 -0
  198. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/util/arns.py +0 -0
  199. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/aws/util/common.py +0 -0
  200. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/__init__.py +0 -0
  201. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/compute.py +0 -0
  202. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/cosmosdb.py +0 -0
  203. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/sql.py +0 -0
  204. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/storage.py +0 -0
  205. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/subscription.py +0 -0
  206. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/tenant.py +0 -0
  207. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/util/__init__.py +0 -0
  208. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/azure/util/credentials.py +0 -0
  209. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/bigfix/__init__.py +0 -0
  210. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/bigfix/computers.py +0 -0
  211. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/create_indexes.py +0 -0
  212. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/crowdstrike/__init__.py +0 -0
  213. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/crowdstrike/endpoints.py +0 -0
  214. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/crowdstrike/spotlight.py +0 -0
  215. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/crowdstrike/util.py +0 -0
  216. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/cve/__init__.py +0 -0
  217. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/cve/feed.py +0 -0
  218. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/digitalocean/__init__.py +0 -0
  219. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/digitalocean/compute.py +0 -0
  220. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/digitalocean/management.py +0 -0
  221. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/digitalocean/platform.py +0 -0
  222. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/dns.py +0 -0
  223. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/__init__.py +0 -0
  224. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/api_host.py +0 -0
  225. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/endpoints.py +0 -0
  226. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/groups.py +0 -0
  227. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/phones.py +0 -0
  228. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/tokens.py +0 -0
  229. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/users.py +0 -0
  230. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/duo/web_authn_credentials.py +0 -0
  231. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/__init__.py +0 -0
  232. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/compute.py +0 -0
  233. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/crm.py +0 -0
  234. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/dns.py +0 -0
  235. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/gke.py +0 -0
  236. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gcp/storage.py +0 -0
  237. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/github/__init__.py +0 -0
  238. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/github/repos.py +0 -0
  239. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/github/teams.py +0 -0
  240. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/github/util.py +0 -0
  241. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gsuite/__init__.py +0 -0
  242. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/gsuite/api.py +0 -0
  243. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/jamf/__init__.py +0 -0
  244. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/jamf/computers.py +0 -0
  245. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/jamf/util.py +0 -0
  246. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kandji/__init__.py +0 -0
  247. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kandji/devices.py +0 -0
  248. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/__init__.py +0 -0
  249. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/namespaces.py +0 -0
  250. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/pods.py +0 -0
  251. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/secrets.py +0 -0
  252. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/services.py +0 -0
  253. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/kubernetes/util.py +0 -0
  254. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/lastpass/__init__.py +0 -0
  255. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/lastpass/users.py +0 -0
  256. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/oci/__init__.py +0 -0
  257. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/oci/iam.py +0 -0
  258. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/oci/organizations.py +0 -0
  259. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/oci/utils.py +0 -0
  260. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/__init__.py +0 -0
  261. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/applications.py +0 -0
  262. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/awssaml.py +0 -0
  263. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/factors.py +0 -0
  264. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/groups.py +0 -0
  265. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/organization.py +0 -0
  266. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/origins.py +0 -0
  267. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/roles.py +0 -0
  268. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/sync_state.py +0 -0
  269. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/users.py +0 -0
  270. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/okta/utils.py +0 -0
  271. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/__init__.py +0 -0
  272. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/escalation_policies.py +0 -0
  273. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/schedules.py +0 -0
  274. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/services.py +0 -0
  275. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/teams.py +0 -0
  276. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/users.py +0 -0
  277. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/pagerduty/vendors.py +0 -0
  278. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/semgrep/__init__.py +0 -0
  279. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/semgrep/dependencies.py +0 -0
  280. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/semgrep/deployment.py +0 -0
  281. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/semgrep/findings.py +0 -0
  282. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/snipeit/__init__.py +0 -0
  283. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/snipeit/asset.py +0 -0
  284. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/snipeit/user.py +0 -0
  285. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/intel/snipeit/util.py +0 -0
  286. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/__init__.py +0 -0
  287. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/__init__.py +0 -0
  288. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/dynamodb/__init__.py +0 -0
  289. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/dynamodb/gsi.py +0 -0
  290. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/dynamodb/tables.py +0 -0
  291. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/__init__.py +0 -0
  292. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/auto_scaling_groups.py +0 -0
  293. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/images.py +0 -0
  294. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/instances.py +0 -0
  295. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/launch_configurations.py +0 -0
  296. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/launch_template_versions.py +0 -0
  297. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/launch_templates.py +0 -0
  298. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/loadbalancerv2.py +0 -0
  299. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/network_acl_rules.py +0 -0
  300. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/network_acls.py +0 -0
  301. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/networkinterface_instance.py +0 -0
  302. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/networkinterfaces.py +0 -0
  303. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/privateip_networkinterface.py +0 -0
  304. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/reservations.py +0 -0
  305. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/securitygroup_instance.py +0 -0
  306. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/securitygroup_networkinterface.py +0 -0
  307. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/subnet_instance.py +0 -0
  308. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/subnet_networkinterface.py +0 -0
  309. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ec2/volumes.py +0 -0
  310. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/eks/__init__.py +0 -0
  311. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/eks/clusters.py +0 -0
  312. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/emr.py +0 -0
  313. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/identitycenter/__init__.py +0 -0
  314. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/identitycenter/awsidentitycenter.py +0 -0
  315. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/identitycenter/awspermissionset.py +0 -0
  316. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/identitycenter/awsssouser.py +0 -0
  317. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/inspector/__init__.py +0 -0
  318. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/inspector/findings.py +0 -0
  319. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/inspector/packages.py +0 -0
  320. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ssm/__init__.py +0 -0
  321. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ssm/instance_information.py +0 -0
  322. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/aws/ssm/instance_patch.py +0 -0
  323. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/bigfix/__init__.py +0 -0
  324. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/bigfix/bigfix_computer.py +0 -0
  325. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/bigfix/bigfix_root.py +0 -0
  326. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/core/__init__.py +0 -0
  327. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/core/common.py +0 -0
  328. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/core/nodes.py +0 -0
  329. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/core/relationships.py +0 -0
  330. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/cve/__init__.py +0 -0
  331. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/cve/cve.py +0 -0
  332. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/cve/cve_feed.py +0 -0
  333. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/__init__.py +0 -0
  334. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/api_host.py +0 -0
  335. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/endpoint.py +0 -0
  336. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/group.py +0 -0
  337. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/phone.py +0 -0
  338. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/token.py +0 -0
  339. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/user.py +0 -0
  340. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/duo/web_authn_credential.py +0 -0
  341. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/github/__init__.py +0 -0
  342. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/github/orgs.py +0 -0
  343. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/github/teams.py +0 -0
  344. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/github/users.py +0 -0
  345. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/kandji/__init__.py +0 -0
  346. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/kandji/device.py +0 -0
  347. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/kandji/tenant.py +0 -0
  348. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/lastpass/__init__.py +0 -0
  349. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/lastpass/tenant.py +0 -0
  350. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/lastpass/user.py +0 -0
  351. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/semgrep/__init__.py +0 -0
  352. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/semgrep/dependencies.py +0 -0
  353. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/semgrep/deployment.py +0 -0
  354. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/semgrep/findings.py +0 -0
  355. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/semgrep/locations.py +0 -0
  356. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/snipeit/__init__.py +0 -0
  357. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/snipeit/asset.py +0 -0
  358. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/snipeit/tenant.py +0 -0
  359. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/models/snipeit/user.py +0 -0
  360. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/py.typed +0 -0
  361. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/stats.py +0 -0
  362. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/sync.py +0 -0
  363. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography/util.py +0 -0
  364. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/dependency_links.txt +0 -0
  365. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/entry_points.txt +0 -0
  366. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/requires.txt +0 -0
  367. {cartography-0.97.1 → cartography-0.98.0rc1}/cartography.egg-info/top_level.txt +0 -0
  368. {cartography-0.97.1 → cartography-0.98.0rc1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cartography
3
- Version: 0.97.1
3
+ Version: 0.98.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
@@ -161,12 +161,8 @@ CREATE INDEX IF NOT EXISTS FOR (n:GCPSubnet) ON (n.id);
161
161
  CREATE INDEX IF NOT EXISTS FOR (n:GCPSubnet) ON (n.lastupdated);
162
162
  CREATE INDEX IF NOT EXISTS FOR (n:GCPVpc) ON (n.id);
163
163
  CREATE INDEX IF NOT EXISTS FOR (n:GCPVpc) ON (n.lastupdated);
164
- CREATE INDEX IF NOT EXISTS FOR (n:GitHubOrganization) ON (n.id);
165
- CREATE INDEX IF NOT EXISTS FOR (n:GitHubOrganization) ON (n.lastupdated);
166
164
  CREATE INDEX IF NOT EXISTS FOR (n:GitHubRepository) ON (n.id);
167
165
  CREATE INDEX IF NOT EXISTS FOR (n:GitHubRepository) ON (n.lastupdated);
168
- CREATE INDEX IF NOT EXISTS FOR (n:GitHubUser) ON (n.id);
169
- CREATE INDEX IF NOT EXISTS FOR (n:GitHubUser) ON (n.lastupdated);
170
166
  CREATE INDEX IF NOT EXISTS FOR (n:GKECluster) ON (n.id);
171
167
  CREATE INDEX IF NOT EXISTS FOR (n:GKECluster) ON (n.lastupdated);
172
168
  CREATE INDEX IF NOT EXISTS FOR (n:GSuiteGroup) ON (n.email);
@@ -1,12 +1,27 @@
1
1
  {
2
2
  "statements": [
3
3
  {
4
- "query": "MATCH (n) where n.exposed_internet IS NOT NULL AND labels(n) IN ['AutoScalingGroup', 'EC2Instance', 'LoadBalancer', 'LoadBalancerV2'] WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type return COUNT(*) as TotalCompleted",
4
+ "query": "MATCH (n:AutoScalingGroup) where n.exposed_internet IS NOT NULL WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type",
5
5
  "iterative": true,
6
6
  "iterationsize": 1000
7
7
  },
8
8
  {
9
- "query": "MATCH (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)-[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)<-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance)\nWITH instance\nWHERE (instance.publicipaddress IS NOT NULL) AND (instance.exposed_internet_type IS NULL) OR (NOT 'direct' IN instance.exposed_internet_type)\nSET instance.exposed_internet = true, instance.exposed_internet_type = coalesce(instance.exposed_internet_type , []) + 'direct';",
9
+ "query": "MATCH (n:EC2Instance) where n.exposed_internet IS NOT NULL WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type",
10
+ "iterative": true,
11
+ "iterationsize": 1000
12
+ },
13
+ {
14
+ "query": "MATCH (n:LoadBalancer) where n.exposed_internet IS NOT NULL WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type",
15
+ "iterative": true,
16
+ "iterationsize": 1000
17
+ },
18
+ {
19
+ "query": "MATCH (n:LoadBalancerV2) where n.exposed_internet IS NOT NULL WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type",
20
+ "iterative": true,
21
+ "iterationsize": 1000
22
+ },
23
+ {
24
+ "query": "MATCH (:IpRange{id: '0.0.0.0/0'})-[:MEMBER_OF_IP_RULE]->(:IpPermissionInbound)-[:MEMBER_OF_EC2_SECURITY_GROUP]->(group:EC2SecurityGroup)<-[:MEMBER_OF_EC2_SECURITY_GROUP|NETWORK_INTERFACE*..2]-(instance:EC2Instance) WITH instance WHERE (instance.publicipaddress IS NOT NULL) AND (instance.exposed_internet_type IS NULL OR NOT 'direct' IN instance.exposed_internet_type) SET instance.exposed_internet = true, instance.exposed_internet_type = CASE WHEN instance.exposed_internet_type IS NULL THEN ['direct'] WHEN NOT 'direct' IN instance.exposed_internet_type THEN instance.exposed_internet_type + ['direct'] ELSE instance.exposed_internet_type END;",
10
25
  "iterative": false
11
26
  },
12
27
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "statements": [
3
3
  {
4
- "query": "MATCH (n) where n.exposed_internet IS NOT NULL AND labels(n) IN ['GCPInstance'] WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type return COUNT(*) as TotalCompleted",
4
+ "query": "MATCH (n:GCPInstance) where n.exposed_internet IS NOT NULL WITH n LIMIT $LIMIT_SIZE REMOVE n.exposed_internet, n.exposed_internet_type",
5
5
  "iterative": true,
6
6
  "iterationsize": 1000,
7
7
  "__comment__": "Delete exposed_internet off nodes so we can start fresh"
@@ -16,7 +16,17 @@ def build_cleanup_queries(node_schema: CartographyNodeSchema) -> List[str]:
16
16
  """
17
17
  Generates queries to clean up stale nodes and relationships from the given CartographyNodeSchema.
18
18
  Note that auto-cleanups for a node with no relationships is not currently supported.
19
+
19
20
  Algorithm:
21
+ 1. If node_schema has no relationships at all, return empty.
22
+
23
+ Otherwise,
24
+
25
+ 1. If node_schema doesn't have a sub_resource relationship, generate queries only to clean up its other
26
+ relationships. No nodes will be cleaned up.
27
+
28
+ Otherwise,
29
+
20
30
  1. First delete all stale nodes attached to the node_schema's sub resource
21
31
  2. Delete all stale node to sub resource relationships
22
32
  - We don't expect this to be very common (never for AWS resources, at least), but in case it is possible for an
@@ -25,11 +35,16 @@ def build_cleanup_queries(node_schema: CartographyNodeSchema) -> List[str]:
25
35
  :param node_schema: The given CartographyNodeSchema
26
36
  :return: A list of Neo4j queries to clean up nodes and relationships.
27
37
  """
38
+ if not node_schema.sub_resource_relationship and not node_schema.other_relationships:
39
+ return []
40
+
28
41
  if not node_schema.sub_resource_relationship:
29
- raise ValueError(
30
- "Auto-creating a cleanup job for a node_schema without a sub resource relationship is not supported. "
31
- f'Please check the class definition of "{node_schema.__class__.__name__}".',
32
- )
42
+ queries = []
43
+ other_rels = node_schema.other_relationships.rels if node_schema.other_relationships else []
44
+ for rel in other_rels:
45
+ query = _build_cleanup_rel_query_no_sub_resource(node_schema, rel)
46
+ queries.append(query)
47
+ return queries
33
48
 
34
49
  result = _build_cleanup_node_and_rel_queries(node_schema, node_schema.sub_resource_relationship)
35
50
  if node_schema.other_relationships:
@@ -41,6 +56,34 @@ def build_cleanup_queries(node_schema: CartographyNodeSchema) -> List[str]:
41
56
  return result
42
57
 
43
58
 
59
+ def _build_cleanup_rel_query_no_sub_resource(
60
+ node_schema: CartographyNodeSchema,
61
+ selected_relationship: CartographyRelSchema,
62
+ ) -> str:
63
+ """
64
+ Helper function to delete stale relationships for node_schemas that have no sub resource relationship defined.
65
+ """
66
+ if node_schema.sub_resource_relationship:
67
+ raise ValueError(
68
+ f'Expected {node_schema.label} to not exist. '
69
+ 'This function is intended for node_schemas without sub_resource_relationships.',
70
+ )
71
+ # Ensure the node is attached to the sub resource and delete the node
72
+ query_template = Template(
73
+ """
74
+ MATCH (n:$node_label)
75
+ $selected_rel_clause
76
+ WHERE r.lastupdated <> $UPDATE_TAG
77
+ WITH r LIMIT $LIMIT_SIZE
78
+ DELETE r;
79
+ """,
80
+ )
81
+ return query_template.safe_substitute(
82
+ node_label=node_schema.label,
83
+ selected_rel_clause=_build_selected_rel_clause(selected_relationship),
84
+ )
85
+
86
+
44
87
  def _build_cleanup_node_and_rel_queries(
45
88
  node_schema: CartographyNodeSchema,
46
89
  selected_relationship: CartographyRelSchema,
@@ -13,7 +13,7 @@ from cartography.graph.job import GraphJob
13
13
  from cartography.intel.aws.ec2.util import get_botocore_config
14
14
  from cartography.models.aws.ec2.auto_scaling_groups import EC2InstanceAutoScalingGroupSchema
15
15
  from cartography.models.aws.ec2.instances import EC2InstanceSchema
16
- from cartography.models.aws.ec2.keypairs import EC2KeyPairSchema
16
+ from cartography.models.aws.ec2.keypair_instance import EC2KeyPairInstanceSchema
17
17
  from cartography.models.aws.ec2.networkinterface_instance import EC2NetworkInterfaceInstanceSchema
18
18
  from cartography.models.aws.ec2.reservations import EC2ReservationSchema
19
19
  from cartography.models.aws.ec2.securitygroup_instance import EC2SecurityGroupInstanceSchema
@@ -193,16 +193,17 @@ def load_ec2_subnets(
193
193
 
194
194
 
195
195
  @timeit
196
- def load_ec2_key_pairs(
196
+ def load_ec2_keypair_instances(
197
197
  neo4j_session: neo4j.Session,
198
198
  key_pair_list: List[Dict[str, Any]],
199
199
  region: str,
200
200
  current_aws_account_id: str,
201
201
  update_tag: int,
202
202
  ) -> None:
203
+ # Load EC2 keypairs as known by describe-instances.
203
204
  load(
204
205
  neo4j_session,
205
- EC2KeyPairSchema(),
206
+ EC2KeyPairInstanceSchema(),
206
207
  key_pair_list,
207
208
  Region=region,
208
209
  AWS_ID=current_aws_account_id,
@@ -299,7 +300,7 @@ def load_ec2_instance_data(
299
300
  load_ec2_instance_nodes(neo4j_session, instance_list, region, current_aws_account_id, update_tag)
300
301
  load_ec2_subnets(neo4j_session, subnet_list, region, current_aws_account_id, update_tag)
301
302
  load_ec2_security_groups(neo4j_session, sg_list, region, current_aws_account_id, update_tag)
302
- load_ec2_key_pairs(neo4j_session, key_pair_list, region, current_aws_account_id, update_tag)
303
+ load_ec2_keypair_instances(neo4j_session, key_pair_list, region, current_aws_account_id, update_tag)
303
304
  load_ec2_network_interfaces(neo4j_session, nic_list, region, current_aws_account_id, update_tag)
304
305
  load_ec2_instance_ebs_volumes(neo4j_session, ebs_volumes_list, region, current_aws_account_id, update_tag)
305
306
 
@@ -0,0 +1,80 @@
1
+ import logging
2
+ from typing import Any
3
+ from typing import Dict
4
+
5
+ import boto3
6
+ import neo4j
7
+
8
+ from cartography.client.core.tx import load
9
+ from cartography.graph.job import GraphJob
10
+ from cartography.intel.aws.ec2.util import get_botocore_config
11
+ from cartography.models.aws.ec2.keypair import EC2KeyPairSchema
12
+ from cartography.util import aws_handle_regions
13
+ from cartography.util import timeit
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ @timeit
19
+ @aws_handle_regions
20
+ def get_ec2_key_pairs(boto3_session: boto3.session.Session, region: str) -> list[dict[str, Any]]:
21
+ client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
22
+ return client.describe_key_pairs()['KeyPairs']
23
+
24
+
25
+ def transform_ec2_key_pairs(
26
+ key_pairs: list[dict[str, Any]],
27
+ region: str,
28
+ current_aws_account_id: str,
29
+ ) -> list[dict[str, Any]]:
30
+ transformed_key_pairs = []
31
+ for key_pair in key_pairs:
32
+ key_name = key_pair["KeyName"]
33
+ transformed_key_pairs.append({
34
+ 'KeyPairArn': f'arn:aws:ec2:{region}:{current_aws_account_id}:key-pair/{key_name}',
35
+ 'KeyName': key_name,
36
+ 'KeyFingerprint': key_pair.get("KeyFingerprint"),
37
+ })
38
+ return transformed_key_pairs
39
+
40
+
41
+ @timeit
42
+ def load_ec2_key_pairs(
43
+ neo4j_session: neo4j.Session,
44
+ data: list[dict[str, Any]],
45
+ region: str,
46
+ current_aws_account_id: str,
47
+ update_tag: int,
48
+ ) -> None:
49
+ # Load EC2 keypairs as known by describe-key-pairs
50
+ logger.info(f"Loading {len(data)} EC2 keypairs for region '{region}' into graph.")
51
+ load(
52
+ neo4j_session,
53
+ EC2KeyPairSchema(),
54
+ data,
55
+ Region=region,
56
+ AWS_ID=current_aws_account_id,
57
+ lastupdated=update_tag,
58
+ )
59
+
60
+
61
+ @timeit
62
+ def cleanup_ec2_key_pairs(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
63
+ GraphJob.from_node_schema(EC2KeyPairSchema(), common_job_parameters).run(neo4j_session)
64
+
65
+
66
+ @timeit
67
+ def sync_ec2_key_pairs(
68
+ neo4j_session: neo4j.Session,
69
+ boto3_session: boto3.session.Session,
70
+ regions: list[str],
71
+ current_aws_account_id: str,
72
+ update_tag: int,
73
+ common_job_parameters: dict[str, Any],
74
+ ) -> None:
75
+ for region in regions:
76
+ logger.info("Syncing EC2 key pairs for region '%s' in account '%s'.", region, current_aws_account_id)
77
+ data = get_ec2_key_pairs(boto3_session, region)
78
+ transformed_data = transform_ec2_key_pairs(data, region, current_aws_account_id)
79
+ load_ec2_key_pairs(neo4j_session, transformed_data, region, current_aws_account_id, update_tag)
80
+ cleanup_ec2_key_pairs(neo4j_session, common_job_parameters)
@@ -8,13 +8,13 @@ from typing import Tuple
8
8
  import neo4j
9
9
 
10
10
  from cartography.client.core.tx import load
11
+ from cartography.graph.job import GraphJob
11
12
  from cartography.intel.github.util import fetch_all
12
13
  from cartography.models.github.orgs import GitHubOrganizationSchema
13
14
  from cartography.models.github.users import GitHubOrganizationUserSchema
14
15
  from cartography.models.github.users import GitHubUnaffiliatedUserSchema
15
16
  from cartography.stats import get_stats_client
16
17
  from cartography.util import merge_module_sync_metadata
17
- from cartography.util import run_cleanup_job
18
18
  from cartography.util import timeit
19
19
 
20
20
  logger = logging.getLogger(__name__)
@@ -210,6 +210,13 @@ def load_organization(
210
210
  )
211
211
 
212
212
 
213
+ @timeit
214
+ def cleanup(neo4j_session: neo4j.Session, common_job_parameters: dict[str, Any]) -> None:
215
+ logger.info("Cleaning up GitHub users")
216
+ GraphJob.from_node_schema(GitHubOrganizationUserSchema(), common_job_parameters).run(neo4j_session)
217
+ GraphJob.from_node_schema(GitHubUnaffiliatedUserSchema(), common_job_parameters).run(neo4j_session)
218
+
219
+
213
220
  @timeit
214
221
  def sync(
215
222
  neo4j_session: neo4j.Session,
@@ -236,8 +243,8 @@ def sync(
236
243
  neo4j_session, GitHubUnaffiliatedUserSchema(), processed_unaffiliated_user_data, org_data,
237
244
  common_job_parameters['UPDATE_TAG'],
238
245
  )
239
- # no automated cleanup job for users because user node has no sub_resource_relationship
240
- run_cleanup_job('github_org_and_users_cleanup.json', neo4j_session, common_job_parameters)
246
+ cleanup(neo4j_session, common_job_parameters)
247
+
241
248
  merge_module_sync_metadata(
242
249
  neo4j_session,
243
250
  group_type='GitHubOrganization',
@@ -3,19 +3,23 @@ from dataclasses import dataclass
3
3
  from cartography.models.core.common import PropertyRef
4
4
  from cartography.models.core.nodes import CartographyNodeProperties
5
5
  from cartography.models.core.nodes import CartographyNodeSchema
6
+ from cartography.models.core.nodes import ExtraNodeLabels
6
7
  from cartography.models.core.relationships import CartographyRelProperties
7
8
  from cartography.models.core.relationships import CartographyRelSchema
8
9
  from cartography.models.core.relationships import LinkDirection
9
10
  from cartography.models.core.relationships import make_target_node_matcher
10
- from cartography.models.core.relationships import OtherRelationships
11
11
  from cartography.models.core.relationships import TargetNodeMatcher
12
12
 
13
13
 
14
14
  @dataclass(frozen=True)
15
15
  class EC2KeyPairNodeProperties(CartographyNodeProperties):
16
+ """
17
+ Properties for EC2 keypairs from describe-key-pairs
18
+ """
16
19
  id: PropertyRef = PropertyRef('KeyPairArn')
17
20
  arn: PropertyRef = PropertyRef('KeyPairArn', extra_index=True)
18
21
  keyname: PropertyRef = PropertyRef('KeyName')
22
+ keyfingerprint: PropertyRef = PropertyRef('KeyFingerprint')
19
23
  region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
20
24
  lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
21
25
 
@@ -27,38 +31,24 @@ class EC2KeyPairToAwsAccountRelProperties(CartographyRelProperties):
27
31
 
28
32
  @dataclass(frozen=True)
29
33
  class EC2KeyPairToAWSAccount(CartographyRelSchema):
34
+ """
35
+ Relationship schema for EC2 keypairs to AWS Accounts
36
+ """
30
37
  target_node_label: str = 'AWSAccount'
31
38
  target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
32
39
  {'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
33
40
  )
34
41
  direction: LinkDirection = LinkDirection.INWARD
35
- rel_label: str = "RESOURCE"
42
+ rel_label: str = 'RESOURCE'
36
43
  properties: EC2KeyPairToAwsAccountRelProperties = EC2KeyPairToAwsAccountRelProperties()
37
44
 
38
45
 
39
- @dataclass(frozen=True)
40
- class EC2KeyPairToEC2InstanceRelProperties(CartographyRelProperties):
41
- lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
42
-
43
-
44
- @dataclass(frozen=True)
45
- class EC2KeyPairToEC2Instance(CartographyRelSchema):
46
- target_node_label: str = 'EC2Instance'
47
- target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
48
- {'id': PropertyRef('InstanceId')},
49
- )
50
- direction: LinkDirection = LinkDirection.OUTWARD
51
- rel_label: str = "SSH_LOGIN_TO"
52
- properties: EC2KeyPairToEC2InstanceRelProperties = EC2KeyPairToEC2InstanceRelProperties()
53
-
54
-
55
46
  @dataclass(frozen=True)
56
47
  class EC2KeyPairSchema(CartographyNodeSchema):
48
+ """
49
+ Schema for EC2 keypairs from describe-key-pairs
50
+ """
57
51
  label: str = 'EC2KeyPair'
52
+ extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(['KeyPair'])
58
53
  properties: EC2KeyPairNodeProperties = EC2KeyPairNodeProperties()
59
54
  sub_resource_relationship: EC2KeyPairToAWSAccount = EC2KeyPairToAWSAccount()
60
- other_relationships: OtherRelationships = OtherRelationships(
61
- [
62
- EC2KeyPairToEC2Instance(),
63
- ],
64
- )
@@ -0,0 +1,69 @@
1
+ from dataclasses import dataclass
2
+
3
+ from cartography.models.core.common import PropertyRef
4
+ from cartography.models.core.nodes import CartographyNodeProperties
5
+ from cartography.models.core.nodes import CartographyNodeSchema
6
+ from cartography.models.core.nodes import ExtraNodeLabels
7
+ from cartography.models.core.relationships import CartographyRelProperties
8
+ from cartography.models.core.relationships import CartographyRelSchema
9
+ from cartography.models.core.relationships import LinkDirection
10
+ from cartography.models.core.relationships import make_target_node_matcher
11
+ from cartography.models.core.relationships import OtherRelationships
12
+ from cartography.models.core.relationships import TargetNodeMatcher
13
+
14
+
15
+ @dataclass(frozen=True)
16
+ class EC2KeyPairInstanceNodeProperties(CartographyNodeProperties):
17
+ id: PropertyRef = PropertyRef('KeyPairArn')
18
+ arn: PropertyRef = PropertyRef('KeyPairArn', extra_index=True)
19
+ keyname: PropertyRef = PropertyRef('KeyName')
20
+ region: PropertyRef = PropertyRef('Region', set_in_kwargs=True)
21
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
22
+
23
+
24
+ @dataclass(frozen=True)
25
+ class EC2KeyPairInstanceToAwsAccountRelProperties(CartographyRelProperties):
26
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
27
+
28
+
29
+ @dataclass(frozen=True)
30
+ class EC2KeyPairInstanceToAWSAccount(CartographyRelSchema):
31
+ target_node_label: str = 'AWSAccount'
32
+ target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
33
+ {'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
34
+ )
35
+ direction: LinkDirection = LinkDirection.INWARD
36
+ rel_label: str = "RESOURCE"
37
+ properties: EC2KeyPairInstanceToAwsAccountRelProperties = EC2KeyPairInstanceToAwsAccountRelProperties()
38
+
39
+
40
+ @dataclass(frozen=True)
41
+ class EC2KeyPairInstanceToEC2InstanceRelProperties(CartographyRelProperties):
42
+ lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
43
+
44
+
45
+ @dataclass(frozen=True)
46
+ class EC2KeyPairInstanceToEC2Instance(CartographyRelSchema):
47
+ target_node_label: str = 'EC2Instance'
48
+ target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
49
+ {'id': PropertyRef('InstanceId')},
50
+ )
51
+ direction: LinkDirection = LinkDirection.OUTWARD
52
+ rel_label: str = "SSH_LOGIN_TO"
53
+ properties: EC2KeyPairInstanceToEC2InstanceRelProperties = EC2KeyPairInstanceToEC2InstanceRelProperties()
54
+
55
+
56
+ @dataclass(frozen=True)
57
+ class EC2KeyPairInstanceSchema(CartographyNodeSchema):
58
+ """
59
+ EC2 keypairs as known by describe-instances.
60
+ """
61
+ label: str = 'EC2KeyPair'
62
+ extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(['KeyPair'])
63
+ properties: EC2KeyPairInstanceNodeProperties = EC2KeyPairInstanceNodeProperties()
64
+ sub_resource_relationship: EC2KeyPairInstanceToAWSAccount = EC2KeyPairInstanceToAWSAccount()
65
+ other_relationships: OtherRelationships = OtherRelationships(
66
+ [
67
+ EC2KeyPairInstanceToEC2Instance(),
68
+ ],
69
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cartography
3
- Version: 0.97.1
3
+ Version: 0.98.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
@@ -112,7 +112,6 @@ cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json
112
112
  cartography/data/jobs/cleanup/gcp_dns_cleanup.json
113
113
  cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json
114
114
  cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json
115
- cartography/data/jobs/cleanup/github_org_and_users_cleanup.json
116
115
  cartography/data/jobs/cleanup/github_repos_cleanup.json
117
116
  cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json
118
117
  cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json
@@ -298,7 +297,8 @@ cartography/models/aws/ec2/__init__.py
298
297
  cartography/models/aws/ec2/auto_scaling_groups.py
299
298
  cartography/models/aws/ec2/images.py
300
299
  cartography/models/aws/ec2/instances.py
301
- cartography/models/aws/ec2/keypairs.py
300
+ cartography/models/aws/ec2/keypair.py
301
+ cartography/models/aws/ec2/keypair_instance.py
302
302
  cartography/models/aws/ec2/launch_configurations.py
303
303
  cartography/models/aws/ec2/launch_template_versions.py
304
304
  cartography/models/aws/ec2/launch_templates.py
@@ -1,7 +1,7 @@
1
1
  from setuptools import find_packages
2
2
  from setuptools import setup
3
3
 
4
- __version__ = '0.97.1'
4
+ __version__ = '0.98.0rc1'
5
5
 
6
6
 
7
7
  setup(
@@ -1,28 +0,0 @@
1
- {
2
- "statements": [{
3
- "query": "MATCH (n:GitHubUser) WHERE n.lastupdated <> $UPDATE_TAG WITH n LIMIT $LIMIT_SIZE DETACH DELETE (n)",
4
- "iterative": true,
5
- "iterationsize": 100
6
- },
7
- {
8
- "query": "MATCH (n:GitHubOrganization) WHERE n.lastupdated <> $UPDATE_TAG WITH n LIMIT $LIMIT_SIZE DETACH DELETE (n)",
9
- "iterative": true,
10
- "iterationsize": 100
11
- },
12
- {
13
- "query": "MATCH (:GitHubUser)-[r:OWNER]->(:GitHubRepository) WHERE r.lastupdated <> $UPDATE_TAG WITH r LIMIT $LIMIT_SIZE DELETE (r)",
14
- "iterative": true,
15
- "iterationsize": 100
16
- },
17
- {
18
- "query": "MATCH (:GitHubUser)-[r:MEMBER_OF]->(:GitHubOrganization) WHERE r.lastupdated <> $UPDATE_TAG WITH r LIMIT $LIMIT_SIZE DELETE (r)",
19
- "iterative": true,
20
- "iterationsize": 100
21
- },
22
- {
23
- "query": "MATCH (:GitHubUser)-[r:UNAFFILIATED]->(:GitHubOrganization) WHERE r.lastupdated <> $UPDATE_TAG WITH r LIMIT $LIMIT_SIZE DELETE (r)",
24
- "iterative": true,
25
- "iterationsize": 100
26
- }],
27
- "name": "cleanup GitHub users data"
28
- }
@@ -1,71 +0,0 @@
1
- import logging
2
- from typing import Dict
3
- from typing import List
4
-
5
- import boto3
6
- import neo4j
7
-
8
- from .util import get_botocore_config
9
- from cartography.graph.job import GraphJob
10
- from cartography.models.aws.ec2.keypairs import EC2KeyPairSchema
11
- from cartography.util import aws_handle_regions
12
- from cartography.util import timeit
13
-
14
- logger = logging.getLogger(__name__)
15
-
16
-
17
- @timeit
18
- @aws_handle_regions
19
- def get_ec2_key_pairs(boto3_session: boto3.session.Session, region: str) -> List[Dict]:
20
- client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
21
- return client.describe_key_pairs()['KeyPairs']
22
-
23
-
24
- @timeit
25
- def load_ec2_key_pairs(
26
- neo4j_session: neo4j.Session, data: List[Dict], region: str, current_aws_account_id: str,
27
- update_tag: int,
28
- ) -> None:
29
- ingest_key_pair = """
30
- MERGE (keypair:KeyPair:EC2KeyPair{arn: $ARN, id: $ARN})
31
- ON CREATE SET keypair.firstseen = timestamp()
32
- SET keypair.keyname = $KeyName, keypair.keyfingerprint = $KeyFingerprint, keypair.region = $Region,
33
- keypair.lastupdated = $update_tag
34
- WITH keypair
35
- MATCH (aa:AWSAccount{id: $AWS_ACCOUNT_ID})
36
- MERGE (aa)-[r:RESOURCE]->(keypair)
37
- ON CREATE SET r.firstseen = timestamp()
38
- SET r.lastupdated = $update_tag
39
- """
40
-
41
- for key_pair in data:
42
- key_name = key_pair["KeyName"]
43
- key_fingerprint = key_pair.get("KeyFingerprint")
44
- key_pair_arn = f'arn:aws:ec2:{region}:{current_aws_account_id}:key-pair/{key_name}'
45
-
46
- neo4j_session.run(
47
- ingest_key_pair,
48
- ARN=key_pair_arn,
49
- KeyName=key_name,
50
- KeyFingerprint=key_fingerprint,
51
- AWS_ACCOUNT_ID=current_aws_account_id,
52
- Region=region,
53
- update_tag=update_tag,
54
- )
55
-
56
-
57
- @timeit
58
- def cleanup_ec2_key_pairs(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
59
- GraphJob.from_node_schema(EC2KeyPairSchema(), common_job_parameters).run(neo4j_session)
60
-
61
-
62
- @timeit
63
- def sync_ec2_key_pairs(
64
- neo4j_session: neo4j.Session, boto3_session: boto3.session.Session, regions: List[str], current_aws_account_id: str,
65
- update_tag: int, common_job_parameters: Dict,
66
- ) -> None:
67
- for region in regions:
68
- logger.info("Syncing EC2 key pairs for region '%s' in account '%s'.", region, current_aws_account_id)
69
- data = get_ec2_key_pairs(boto3_session, region)
70
- load_ec2_key_pairs(neo4j_session, data, region, current_aws_account_id, update_tag)
71
- cleanup_ec2_key_pairs(neo4j_session, common_job_parameters)
File without changes
File without changes