cartography 0.84.0__tar.gz → 0.85.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (342) hide show
  1. cartography-0.85.1/PKG-INFO +55 -0
  2. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/indexes.cypher +0 -8
  3. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_s3acl_analysis.json +7 -2
  4. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/instances.py +6 -6
  5. cartography-0.85.1/cartography/intel/aws/ec2/network_interfaces.py +255 -0
  6. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/security_groups.py +2 -2
  7. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/subnets.py +2 -2
  8. cartography-0.85.1/cartography/intel/aws/eks.py +106 -0
  9. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/inspector.py +44 -142
  10. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/s3.py +6 -1
  11. cartography-0.84.0/cartography/models/aws/ec2/networkinterfaces.py → cartography-0.85.1/cartography/models/aws/ec2/networkinterface_instance.py +15 -8
  12. cartography-0.85.1/cartography/models/aws/ec2/networkinterfaces.py +89 -0
  13. cartography-0.85.1/cartography/models/aws/ec2/privateip_networkinterface.py +72 -0
  14. cartography-0.84.0/cartography/models/aws/ec2/securitygroups.py → cartography-0.85.1/cartography/models/aws/ec2/securitygroup_instance.py +9 -6
  15. cartography-0.85.1/cartography/models/aws/ec2/securitygroup_networkinterface.py +52 -0
  16. cartography-0.84.0/cartography/models/aws/ec2/subnets.py → cartography-0.85.1/cartography/models/aws/ec2/subnet_instance.py +7 -4
  17. cartography-0.85.1/cartography/models/aws/ec2/subnet_networkinterface.py +87 -0
  18. cartography-0.85.1/cartography/models/aws/eks/clusters.py +50 -0
  19. cartography-0.85.1/cartography/models/aws/inspector/findings.py +124 -0
  20. cartography-0.85.1/cartography/models/aws/inspector/packages.py +73 -0
  21. cartography-0.85.1/cartography/models/lastpass/__init__.py +0 -0
  22. cartography-0.85.1/cartography/models/semgrep/__init__.py +0 -0
  23. cartography-0.85.1/cartography/py.typed +0 -0
  24. {cartography-0.84.0 → cartography-0.85.1}/cartography/util.py +8 -0
  25. cartography-0.85.1/cartography.egg-info/PKG-INFO +55 -0
  26. {cartography-0.84.0 → cartography-0.85.1}/cartography.egg-info/SOURCES.txt +12 -5
  27. {cartography-0.84.0 → cartography-0.85.1}/setup.py +1 -1
  28. cartography-0.84.0/PKG-INFO +0 -23
  29. cartography-0.84.0/cartography/data/jobs/cleanup/aws_import_eks_cleanup.json +0 -15
  30. cartography-0.84.0/cartography/data/jobs/cleanup/aws_import_inspector_cleanup.json +0 -35
  31. cartography-0.84.0/cartography/data/jobs/cleanup/aws_ingest_network_interfaces_cleanup.json +0 -30
  32. cartography-0.84.0/cartography/intel/aws/ec2/network_interfaces.py +0 -282
  33. cartography-0.84.0/cartography/intel/aws/eks.py +0 -114
  34. cartography-0.84.0/cartography.egg-info/PKG-INFO +0 -23
  35. {cartography-0.84.0 → cartography-0.85.1}/LICENSE +0 -0
  36. {cartography-0.84.0 → cartography-0.85.1}/NOTICE +0 -0
  37. {cartography-0.84.0 → cartography-0.85.1}/README.md +0 -0
  38. {cartography-0.84.0 → cartography-0.85.1}/cartography/__init__.py +0 -0
  39. {cartography-0.84.0 → cartography-0.85.1}/cartography/__main__.py +0 -0
  40. {cartography-0.84.0 → cartography-0.85.1}/cartography/cli.py +0 -0
  41. {cartography-0.84.0 → cartography-0.85.1}/cartography/client/__init__.py +0 -0
  42. {cartography-0.84.0 → cartography-0.85.1}/cartography/client/aws/__init__.py +0 -0
  43. {cartography-0.84.0 → cartography-0.85.1}/cartography/client/aws/iam.py +0 -0
  44. {cartography-0.84.0 → cartography-0.85.1}/cartography/client/core/__init__.py +0 -0
  45. {cartography-0.84.0 → cartography-0.85.1}/cartography/client/core/tx.py +0 -0
  46. {cartography-0.84.0 → cartography-0.85.1}/cartography/config.py +0 -0
  47. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/__init__.py +0 -0
  48. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/__init__.py +0 -0
  49. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/__init__.py +0 -0
  50. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_ec2_asset_exposure.json +0 -0
  51. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_ec2_iaminstance.json +0 -0
  52. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_ec2_iaminstanceprofile.json +0 -0
  53. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_ec2_keypair_analysis.json +0 -0
  54. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_eks_asset_exposure.json +0 -0
  55. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_foreign_accounts.json +0 -0
  56. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/aws_lambda_ecr.json +0 -0
  57. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/gcp_compute_asset_inet_exposure.json +0 -0
  58. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/gcp_gke_asset_exposure.json +0 -0
  59. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/gcp_gke_basic_auth.json +0 -0
  60. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/analysis/gsuite_human_link.json +0 -0
  61. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/__init__.py +0 -0
  62. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_account_cleanup.json +0 -0
  63. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_apigateway_details.json +0 -0
  64. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_dns_cleanup.json +0 -0
  65. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_account_access_key_cleanup.json +0 -0
  66. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_apigateway_cleanup.json +0 -0
  67. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_config_cleanup.json +0 -0
  68. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_ec2_launch_configurations_cleanup.json +0 -0
  69. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_ec2_launch_templates_cleanup.json +0 -0
  70. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_ec2_security_groupinfo_cleanup.json +0 -0
  71. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_ecr_cleanup.json +0 -0
  72. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_ecs_cleanup.json +0 -0
  73. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_elastic_ip_addresses_cleanup.json +0 -0
  74. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_elasticache_cleanup.json +0 -0
  75. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_es_cleanup.json +0 -0
  76. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_groups_cleanup.json +0 -0
  77. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json +0 -0
  78. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json +0 -0
  79. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json +0 -0
  80. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_kms_cleanup.json +0 -0
  81. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +0 -0
  82. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_principals_cleanup.json +0 -0
  83. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json +0 -0
  84. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json +0 -0
  85. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_rds_snapshots_cleanup.json +0 -0
  86. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_redshift_clusters_cleanup.json +0 -0
  87. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_reserved_instances_cleanup.json +0 -0
  88. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_roles_cleanup.json +0 -0
  89. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_roles_policy_cleanup.json +0 -0
  90. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_s3_acl_cleanup.json +0 -0
  91. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_s3_buckets_cleanup.json +0 -0
  92. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_secrets_cleanup.json +0 -0
  93. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_securityhub_cleanup.json +0 -0
  94. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_snapshots_cleanup.json +0 -0
  95. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_sqs_queues_cleanup.json +0 -0
  96. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_tags_cleanup.json +0 -0
  97. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_tgw_cleanup.json +0 -0
  98. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_users_cleanup.json +0 -0
  99. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_vpc_cleanup.json +0 -0
  100. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_import_vpc_peering_cleanup.json +0 -0
  101. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_ingest_ec2_auto_scaling_groups_cleanup.json +0 -0
  102. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_cleanup.json +0 -0
  103. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_ingest_load_balancers_v2_cleanup.json +0 -0
  104. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_ingest_subnets_cleanup.json +0 -0
  105. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_kms_details.json +0 -0
  106. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_post_ingestion_principals_cleanup.json +0 -0
  107. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/aws_s3_details.json +0 -0
  108. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_cosmosdb_cassandra_keyspace_cleanup.json +0 -0
  109. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_cosmosdb_cors_details.json +0 -0
  110. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_cosmosdb_mongodb_database_cleanup.json +0 -0
  111. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_cosmosdb_sql_database_cleanup.json +0 -0
  112. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_cosmosdb_table_resources_cleanup.json +0 -0
  113. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_database_account_cleanup.json +0 -0
  114. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_import_disks_cleanup.json +0 -0
  115. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_import_snapshots_cleanup.json +0 -0
  116. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_import_virtual_machines_cleanup.json +0 -0
  117. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_sql_server_cleanup.json +0 -0
  118. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_storage_account_cleanup.json +0 -0
  119. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_subscriptions_cleanup.json +0 -0
  120. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/azure_tenant_cleanup.json +0 -0
  121. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/crowdstrike_import_cleanup.json +0 -0
  122. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/crxcavator_import_cleanup.json +0 -0
  123. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/digitalocean_droplet_cleanup.json +0 -0
  124. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/digitalocean_project_cleanup.json +0 -0
  125. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_compute_firewall_cleanup.json +0 -0
  126. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_compute_forwarding_rules_cleanup.json +0 -0
  127. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_compute_instance_cleanup.json +0 -0
  128. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_compute_vpc_cleanup.json +0 -0
  129. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_compute_vpc_subnet_cleanup.json +0 -0
  130. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_crm_folder_cleanup.json +0 -0
  131. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_crm_organization_cleanup.json +0 -0
  132. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json +0 -0
  133. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_dns_cleanup.json +0 -0
  134. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json +0 -0
  135. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json +0 -0
  136. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/github_repos_cleanup.json +0 -0
  137. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/github_users_cleanup.json +0 -0
  138. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json +0 -0
  139. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json +0 -0
  140. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json +0 -0
  141. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/kubernetes_import_cleanup.json +0 -0
  142. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_import_compartments_cleanup.json +0 -0
  143. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_import_groups_cleanup.json +0 -0
  144. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_import_groups_membership_cleanup.json +0 -0
  145. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_import_policies_cleanup.json +0 -0
  146. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_import_users_cleanup.json +0 -0
  147. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/oci_tenancy_cleanup.json +0 -0
  148. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/okta_groups_cleanup.json +0 -0
  149. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/okta_import_cleanup.json +0 -0
  150. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/jobs/cleanup/pagerduty_import_cleanup.json +0 -0
  151. {cartography-0.84.0 → cartography-0.85.1}/cartography/data/permission_relationships.yaml +0 -0
  152. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/__init__.py +0 -0
  153. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/__main__.py +0 -0
  154. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/add_shortcut.py +0 -0
  155. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/cli.py +0 -0
  156. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/config.py +0 -0
  157. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/detect_deviations.py +0 -0
  158. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/get_states.py +0 -0
  159. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/model.py +0 -0
  160. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/reporter.py +0 -0
  161. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/serializers.py +0 -0
  162. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/shortcut.py +0 -0
  163. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/storage.py +0 -0
  164. {cartography-0.84.0 → cartography-0.85.1}/cartography/driftdetect/util.py +0 -0
  165. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/__init__.py +0 -0
  166. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/cleanupbuilder.py +0 -0
  167. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/context.py +0 -0
  168. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/job.py +0 -0
  169. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/querybuilder.py +0 -0
  170. {cartography-0.84.0 → cartography-0.85.1}/cartography/graph/statement.py +0 -0
  171. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/__init__.py +0 -0
  172. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/analysis.py +0 -0
  173. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/__init__.py +0 -0
  174. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/apigateway.py +0 -0
  175. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/config.py +0 -0
  176. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/dynamodb.py +0 -0
  177. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/__init__.py +0 -0
  178. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/auto_scaling_groups.py +0 -0
  179. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/elastic_ip_addresses.py +0 -0
  180. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/images.py +0 -0
  181. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/internet_gateways.py +0 -0
  182. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/key_pairs.py +0 -0
  183. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/launch_templates.py +0 -0
  184. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/load_balancer_v2s.py +0 -0
  185. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/load_balancers.py +0 -0
  186. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/reserved_instances.py +0 -0
  187. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/snapshots.py +0 -0
  188. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/tgw.py +0 -0
  189. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/util.py +0 -0
  190. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/volumes.py +0 -0
  191. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/vpc.py +0 -0
  192. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ec2/vpc_peerings.py +0 -0
  193. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ecr.py +0 -0
  194. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ecs.py +0 -0
  195. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/elasticache.py +0 -0
  196. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/elasticsearch.py +0 -0
  197. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/emr.py +0 -0
  198. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/iam.py +0 -0
  199. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/kms.py +0 -0
  200. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/lambda_function.py +0 -0
  201. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/organizations.py +0 -0
  202. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/permission_relationships.py +0 -0
  203. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/rds.py +0 -0
  204. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/redshift.py +0 -0
  205. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/resourcegroupstaggingapi.py +0 -0
  206. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/resources.py +0 -0
  207. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/route53.py +0 -0
  208. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/secretsmanager.py +0 -0
  209. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/securityhub.py +0 -0
  210. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/sqs.py +0 -0
  211. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/ssm.py +0 -0
  212. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/util/__init__.py +0 -0
  213. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/util/arns.py +0 -0
  214. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/aws/util/common.py +0 -0
  215. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/__init__.py +0 -0
  216. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/compute.py +0 -0
  217. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/cosmosdb.py +0 -0
  218. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/sql.py +0 -0
  219. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/storage.py +0 -0
  220. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/subscription.py +0 -0
  221. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/tenant.py +0 -0
  222. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/util/__init__.py +0 -0
  223. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/azure/util/credentials.py +0 -0
  224. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/bigfix/__init__.py +0 -0
  225. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/bigfix/computers.py +0 -0
  226. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/create_indexes.py +0 -0
  227. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crowdstrike/__init__.py +0 -0
  228. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crowdstrike/endpoints.py +0 -0
  229. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crowdstrike/spotlight.py +0 -0
  230. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crowdstrike/util.py +0 -0
  231. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crxcavator/__init__.py +0 -0
  232. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/crxcavator/crxcavator.py +0 -0
  233. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/cve/__init__.py +0 -0
  234. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/cve/feed.py +0 -0
  235. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/digitalocean/__init__.py +0 -0
  236. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/digitalocean/compute.py +0 -0
  237. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/digitalocean/management.py +0 -0
  238. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/digitalocean/platform.py +0 -0
  239. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/dns.py +0 -0
  240. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/__init__.py +0 -0
  241. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/api_host.py +0 -0
  242. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/endpoints.py +0 -0
  243. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/groups.py +0 -0
  244. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/phones.py +0 -0
  245. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/tokens.py +0 -0
  246. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/users.py +0 -0
  247. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/duo/web_authn_credentials.py +0 -0
  248. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/__init__.py +0 -0
  249. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/compute.py +0 -0
  250. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/crm.py +0 -0
  251. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/dns.py +0 -0
  252. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/gke.py +0 -0
  253. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gcp/storage.py +0 -0
  254. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/github/__init__.py +0 -0
  255. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/github/repos.py +0 -0
  256. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/github/teams.py +0 -0
  257. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/github/users.py +0 -0
  258. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/github/util.py +0 -0
  259. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gsuite/__init__.py +0 -0
  260. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/gsuite/api.py +0 -0
  261. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/jamf/__init__.py +0 -0
  262. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/jamf/computers.py +0 -0
  263. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/jamf/util.py +0 -0
  264. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/__init__.py +0 -0
  265. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/namespaces.py +0 -0
  266. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/pods.py +0 -0
  267. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/secrets.py +0 -0
  268. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/services.py +0 -0
  269. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/kubernetes/util.py +0 -0
  270. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/lastpass/__init__.py +0 -0
  271. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/lastpass/users.py +0 -0
  272. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/oci/__init__.py +0 -0
  273. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/oci/iam.py +0 -0
  274. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/oci/organizations.py +0 -0
  275. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/oci/utils.py +0 -0
  276. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/__init__.py +0 -0
  277. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/applications.py +0 -0
  278. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/awssaml.py +0 -0
  279. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/factors.py +0 -0
  280. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/groups.py +0 -0
  281. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/organization.py +0 -0
  282. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/origins.py +0 -0
  283. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/roles.py +0 -0
  284. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/sync_state.py +0 -0
  285. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/users.py +0 -0
  286. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/okta/utils.py +0 -0
  287. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/__init__.py +0 -0
  288. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/escalation_policies.py +0 -0
  289. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/schedules.py +0 -0
  290. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/services.py +0 -0
  291. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/teams.py +0 -0
  292. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/users.py +0 -0
  293. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/pagerduty/vendors.py +0 -0
  294. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/semgrep/__init__.py +0 -0
  295. {cartography-0.84.0 → cartography-0.85.1}/cartography/intel/semgrep/findings.py +0 -0
  296. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/__init__.py +0 -0
  297. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/__init__.py +0 -0
  298. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/dynamodb/__init__.py +0 -0
  299. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/dynamodb/gsi.py +0 -0
  300. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/dynamodb/tables.py +0 -0
  301. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/__init__.py +0 -0
  302. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/images.py +0 -0
  303. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/instances.py +0 -0
  304. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/keypairs.py +0 -0
  305. /cartography-0.84.0/cartography/models/aws/ssm/__init__.py → /cartography-0.85.1/cartography/models/aws/ec2/loadbalancerv2.py +0 -0
  306. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/reservations.py +0 -0
  307. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ec2/volumes.py +0 -0
  308. {cartography-0.84.0/cartography/models/bigfix → cartography-0.85.1/cartography/models/aws/eks}/__init__.py +0 -0
  309. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/emr.py +0 -0
  310. {cartography-0.84.0/cartography/models/core → cartography-0.85.1/cartography/models/aws/inspector}/__init__.py +0 -0
  311. {cartography-0.84.0/cartography/models/duo → cartography-0.85.1/cartography/models/aws/ssm}/__init__.py +0 -0
  312. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ssm/instance_information.py +0 -0
  313. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/aws/ssm/instance_patch.py +0 -0
  314. {cartography-0.84.0/cartography/models/github → cartography-0.85.1/cartography/models/bigfix}/__init__.py +0 -0
  315. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/bigfix/bigfix_computer.py +0 -0
  316. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/bigfix/bigfix_root.py +0 -0
  317. {cartography-0.84.0/cartography/models/lastpass → cartography-0.85.1/cartography/models/core}/__init__.py +0 -0
  318. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/core/common.py +0 -0
  319. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/core/nodes.py +0 -0
  320. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/core/relationships.py +0 -0
  321. {cartography-0.84.0/cartography/models/semgrep → cartography-0.85.1/cartography/models/duo}/__init__.py +0 -0
  322. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/api_host.py +0 -0
  323. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/endpoint.py +0 -0
  324. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/group.py +0 -0
  325. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/phone.py +0 -0
  326. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/token.py +0 -0
  327. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/user.py +0 -0
  328. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/duo/web_authn_credential.py +0 -0
  329. /cartography-0.84.0/cartography/py.typed → /cartography-0.85.1/cartography/models/github/__init__.py +0 -0
  330. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/github/teams.py +0 -0
  331. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/lastpass/tenant.py +0 -0
  332. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/lastpass/user.py +0 -0
  333. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/semgrep/deployment.py +0 -0
  334. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/semgrep/findings.py +0 -0
  335. {cartography-0.84.0 → cartography-0.85.1}/cartography/models/semgrep/locations.py +0 -0
  336. {cartography-0.84.0 → cartography-0.85.1}/cartography/stats.py +0 -0
  337. {cartography-0.84.0 → cartography-0.85.1}/cartography/sync.py +0 -0
  338. {cartography-0.84.0 → cartography-0.85.1}/cartography.egg-info/dependency_links.txt +0 -0
  339. {cartography-0.84.0 → cartography-0.85.1}/cartography.egg-info/entry_points.txt +0 -0
  340. {cartography-0.84.0 → cartography-0.85.1}/cartography.egg-info/requires.txt +0 -0
  341. {cartography-0.84.0 → cartography-0.85.1}/cartography.egg-info/top_level.txt +0 -0
  342. {cartography-0.84.0 → cartography-0.85.1}/setup.cfg +0 -0
@@ -0,0 +1,55 @@
1
+ Metadata-Version: 2.1
2
+ Name: cartography
3
+ Version: 0.85.1
4
+ Summary: Explore assets and their relationships across your technical infrastructure.
5
+ Home-page: https://www.github.com/lyft/cartography
6
+ Maintainer: Lyft
7
+ Maintainer-email: security@lyft.com
8
+ License: apache2
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: Apache Software License
12
+ Classifier: Natural Language :: English
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Topic :: Security
17
+ Classifier: Topic :: Software Development :: Libraries
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ License-File: NOTICE
22
+ Requires-Dist: backoff>=2.1.2
23
+ Requires-Dist: boto3>=1.15.1
24
+ Requires-Dist: botocore>=1.18.1
25
+ Requires-Dist: dnspython>=1.15.0
26
+ Requires-Dist: neo4j<5.0.0,>=4.4.4
27
+ Requires-Dist: policyuniverse>=1.1.0.0
28
+ Requires-Dist: google-api-python-client>=1.7.8
29
+ Requires-Dist: oauth2client>=4.1.3
30
+ Requires-Dist: marshmallow>=3.0.0rc7
31
+ Requires-Dist: oci>=2.71.0
32
+ Requires-Dist: okta<1.0.0
33
+ Requires-Dist: pyyaml>=5.3.1
34
+ Requires-Dist: requests>=2.22.0
35
+ Requires-Dist: statsd
36
+ Requires-Dist: packaging
37
+ Requires-Dist: python-digitalocean>=1.16.0
38
+ Requires-Dist: adal>=1.2.4
39
+ Requires-Dist: azure-cli-core>=2.26.0
40
+ Requires-Dist: azure-mgmt-compute>=5.0.0
41
+ Requires-Dist: azure-mgmt-resource>=10.2.0
42
+ Requires-Dist: azure-mgmt-cosmosdb>=6.0.0
43
+ Requires-Dist: msrestazure>=0.6.4
44
+ Requires-Dist: azure-mgmt-storage>=16.0.0
45
+ Requires-Dist: azure-mgmt-sql<=1.0.0
46
+ Requires-Dist: azure-identity>=1.5.0
47
+ Requires-Dist: kubernetes>=22.6.0
48
+ Requires-Dist: pdpyras>=4.3.0
49
+ Requires-Dist: crowdstrike-falconpy>=0.5.1
50
+ Requires-Dist: python-dateutil
51
+ Requires-Dist: xmltodict
52
+ Requires-Dist: duo-client
53
+ Requires-Dist: importlib-resources; python_version < "3.7"
54
+
55
+ file: README.md
@@ -23,10 +23,6 @@ CREATE INDEX IF NOT EXISTS FOR (n:AWSDNSZone) ON (n.zoneid);
23
23
  CREATE INDEX IF NOT EXISTS FOR (n:AWSDNSZone) ON (n.lastupdated);
24
24
  CREATE INDEX IF NOT EXISTS FOR (n:AWSGroup) ON (n.arn);
25
25
  CREATE INDEX IF NOT EXISTS FOR (n:AWSGroup) ON (n.lastupdated);
26
- CREATE INDEX IF NOT EXISTS FOR (n:AWSInspectorFinding) ON (n.id);
27
- CREATE INDEX IF NOT EXISTS FOR (n:AWSInspectorFinding) ON (n.lastupdated);
28
- CREATE INDEX IF NOT EXISTS FOR (n:AWSInspectorPackage) ON (n.id);
29
- CREATE INDEX IF NOT EXISTS FOR (n:AWSInspectorPackage) ON (n.lastupdated);
30
26
  CREATE INDEX IF NOT EXISTS FOR (n:AWSInternetGateway) ON (n.id);
31
27
  CREATE INDEX IF NOT EXISTS FOR (n:AWSInternetGateway) ON (n.lastupdated);
32
28
  CREATE INDEX IF NOT EXISTS FOR (n:AWSIpv4CidrBlock) ON (n.id);
@@ -93,8 +89,6 @@ CREATE INDEX IF NOT EXISTS FOR (n:DOProject) ON (n.lastupdated);
93
89
  CREATE INDEX IF NOT EXISTS FOR (n:EBSSnapshot) ON (n.id);
94
90
  CREATE INDEX IF NOT EXISTS FOR (n:EBSSnapshot) ON (n.lastupdated);
95
91
  CREATE INDEX IF NOT EXISTS FOR (n:EC2KeyPair) ON (n.keyfingerprint);
96
- CREATE INDEX IF NOT EXISTS FOR (n:EC2PrivateIp) ON (n.id);
97
- CREATE INDEX IF NOT EXISTS FOR (n:EC2PrivateIp) ON (n.lastupdated);
98
92
  CREATE INDEX IF NOT EXISTS FOR (n:EC2ReservedInstance) ON (n.id);
99
93
  CREATE INDEX IF NOT EXISTS FOR (n:EC2ReservedInstance) ON (n.lastupdated);
100
94
  CREATE INDEX IF NOT EXISTS FOR (n:ECRImage) ON (n.id);
@@ -125,8 +119,6 @@ CREATE INDEX IF NOT EXISTS FOR (n:ECSContainerDefinition) ON (n.id);
125
119
  CREATE INDEX IF NOT EXISTS FOR (n:ECSContainerDefinition) ON (n.lastupdated);
126
120
  CREATE INDEX IF NOT EXISTS FOR (n:ECSContainer) ON (n.id);
127
121
  CREATE INDEX IF NOT EXISTS FOR (n:ECSContainer) ON (n.lastupdated);
128
- CREATE INDEX IF NOT EXISTS FOR (n:EKSCluster) ON (n.id);
129
- CREATE INDEX IF NOT EXISTS FOR (n:EKSCluster) ON (n.lastupdated);
130
122
  CREATE INDEX IF NOT EXISTS FOR (n:ElasticacheCluster) ON (n.id);
131
123
  CREATE INDEX IF NOT EXISTS FOR (n:ElasticacheCluster) ON (n.arn);
132
124
  CREATE INDEX IF NOT EXISTS FOR (n:ElasticacheCluster) ON (n.lastupdated);
@@ -1,22 +1,27 @@
1
1
  {
2
2
  "statements": [
3
3
  {
4
+ "__comment__": "READ -> ListBucket, ListBucketVersions, ListBucketMultipartUploads",
4
5
  "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'READ'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:ListBucket', 's3:ListBucketVersions', 's3:ListBucketMultipartUploads']",
5
6
  "iterative": false
6
7
  },
7
8
  {
8
- "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'WRITE'\nAND (acl.ownerid = acl.granteeid)\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:DeleteObjectVersion']",
9
+ "__comment__": "WRITE -> PutObject",
10
+ "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'WRITE'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:PutObject']",
9
11
  "iterative": false
10
12
  },
11
13
  {
12
- "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'READ_ACP'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:DeleteObjectVersion']",
14
+ "__comment__": "READ_ACP -> GetBucketAcl",
15
+ "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'READ_ACP'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:GetBucketAcl']",
13
16
  "iterative": false
14
17
  },
15
18
  {
19
+ "__comment__": "WRITE_ACP -> PutBucketAcl",
16
20
  "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'WRITE_ACP'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:PutBucketAcl']",
17
21
  "iterative": false
18
22
  },
19
23
  {
24
+ "__comment__": "FULL_CONTROL -> Pretty much everything",
20
25
  "query": "MATCH (acl:S3Acl)-[:APPLIES_TO]->(bucket:S3Bucket)<-[:RESOURCE]-(aws:AWSAccount{id: $AWS_ID})\nWHERE acl.uri IN ['http://acs.amazonaws.com/groups/global/AllUsers', 'http://acs.amazonaws.com/groups/global/AuthenticatedUsers'] AND acl.permission = 'FULL_CONTROL'\nSET bucket.anonymous_access = true, bucket.anonymous_actions = coalesce(bucket.anonymous_actions, []) + ['s3:ListBucket', 's3:ListBucketVersions', 's3:ListBucketMultipartUploads', 's3:PutObject', 's3:DeleteObject', 's3:DeleteObjectVersion', 's3:PutBucketAcl']",
21
26
  "iterative": false
22
27
  }],
@@ -13,10 +13,10 @@ 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.instances import EC2InstanceSchema
15
15
  from cartography.models.aws.ec2.keypairs import EC2KeyPairSchema
16
- from cartography.models.aws.ec2.networkinterfaces import EC2NetworkInterfaceSchema
16
+ from cartography.models.aws.ec2.networkinterface_instance import EC2NetworkInterfaceInstanceSchema
17
17
  from cartography.models.aws.ec2.reservations import EC2ReservationSchema
18
- from cartography.models.aws.ec2.securitygroups import EC2SecurityGroupSchema
19
- from cartography.models.aws.ec2.subnets import EC2SubnetSchema
18
+ from cartography.models.aws.ec2.securitygroup_instance import EC2SecurityGroupInstanceSchema
19
+ from cartography.models.aws.ec2.subnet_instance import EC2SubnetInstanceSchema
20
20
  from cartography.models.aws.ec2.volumes import EBSVolumeInstanceSchema
21
21
  from cartography.util import aws_handle_regions
22
22
  from cartography.util import timeit
@@ -183,7 +183,7 @@ def load_ec2_subnets(
183
183
  ) -> None:
184
184
  load(
185
185
  neo4j_session,
186
- EC2SubnetSchema(),
186
+ EC2SubnetInstanceSchema(),
187
187
  subnet_list,
188
188
  Region=region,
189
189
  AWS_ID=current_aws_account_id,
@@ -219,7 +219,7 @@ def load_ec2_security_groups(
219
219
  ) -> None:
220
220
  load(
221
221
  neo4j_session,
222
- EC2SecurityGroupSchema(),
222
+ EC2SecurityGroupInstanceSchema(),
223
223
  sg_list,
224
224
  Region=region,
225
225
  AWS_ID=current_aws_account_id,
@@ -237,7 +237,7 @@ def load_ec2_network_interfaces(
237
237
  ) -> None:
238
238
  load(
239
239
  neo4j_session,
240
- EC2NetworkInterfaceSchema(),
240
+ EC2NetworkInterfaceInstanceSchema(),
241
241
  network_interface_list,
242
242
  Region=region,
243
243
  AWS_ID=current_aws_account_id,
@@ -0,0 +1,255 @@
1
+ import logging
2
+ import re
3
+ from collections import namedtuple
4
+ from typing import Any
5
+ from typing import Dict
6
+ from typing import List
7
+
8
+ import boto3
9
+ import neo4j
10
+
11
+ from .util import get_botocore_config
12
+ from cartography.client.core.tx import load
13
+ from cartography.graph.job import GraphJob
14
+ from cartography.models.aws.ec2.networkinterfaces import EC2NetworkInterfaceSchema
15
+ from cartography.models.aws.ec2.privateip_networkinterface import EC2PrivateIpNetworkInterfaceSchema
16
+ from cartography.models.aws.ec2.securitygroup_networkinterface import EC2SecurityGroupNetworkInterfaceSchema
17
+ from cartography.models.aws.ec2.subnet_networkinterface import EC2SubnetNetworkInterfaceSchema
18
+ from cartography.util import aws_handle_regions
19
+ from cartography.util import timeit
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+ Ec2NetworkData = namedtuple(
24
+ "Ec2NetworkData", [
25
+ "network_interface_list",
26
+ "private_ip_list",
27
+ "sg_list",
28
+ "subnet_list",
29
+ ],
30
+ )
31
+
32
+
33
+ @timeit
34
+ @aws_handle_regions
35
+ def get_network_interface_data(boto3_session: boto3.session.Session, region: str) -> List[Dict[str, Any]]:
36
+ client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
37
+ paginator = client.get_paginator('describe_network_interfaces')
38
+ subnets: List[Dict] = []
39
+ for page in paginator.paginate():
40
+ subnets.extend(page['NetworkInterfaces'])
41
+ return subnets
42
+
43
+
44
+ def transform_network_interface_data(data_list: List[Dict[str, Any]], region: str) -> Ec2NetworkData:
45
+ network_interface_list = []
46
+ private_ip_list = []
47
+ sg_list = []
48
+ subnet_list = []
49
+
50
+ for network_interface in data_list:
51
+ # Parse network interface description for ELB association
52
+ # https://aws.amazon.com/premiumsupport/knowledge-center/elb-find-load-balancer-IP/
53
+ elb_v1_id = None
54
+ elb_v2_id = None
55
+ elb_match = re.match(r'^ELB (?:net|app)/([^\/]+)\/(.*)', network_interface.get('Description', ''))
56
+ if elb_match:
57
+ elb_v1_id = f'{elb_match[1]}-{elb_match[2]}.elb.{region}.amazonaws.com'
58
+ else:
59
+ elb_match = re.match(r'^ELB (.*)', network_interface.get('Description', ''))
60
+ if elb_match:
61
+ elb_v2_id = elb_match[1]
62
+ # TODO issue #1024 change this to arn when ready
63
+ network_interface_id = network_interface['NetworkInterfaceId']
64
+ network_interface_list.append(
65
+ {
66
+ 'Id': network_interface_id,
67
+ 'NetworkInterfaceId': network_interface['NetworkInterfaceId'],
68
+ 'Description': network_interface['Description'],
69
+ 'InstanceId': network_interface.get('Attachment', {}).get('InstanceId'),
70
+ 'InterfaceType': network_interface['InterfaceType'],
71
+ 'MacAddress': network_interface['MacAddress'],
72
+ 'PrivateDnsName': network_interface['PrivateDnsName'],
73
+ 'PrivateIpAddress': network_interface['PrivateIpAddress'],
74
+ 'PublicIp': network_interface.get('Association', {}).get('PublicIp'),
75
+ 'RequesterId': network_interface.get('RequesterId'),
76
+ 'RequesterManaged': network_interface['RequesterManaged'],
77
+ 'SourceDestCheck': network_interface['SourceDestCheck'],
78
+ 'Status': network_interface['Status'],
79
+ 'SubnetId': network_interface['SubnetId'],
80
+ 'ElbV1Id': elb_v1_id,
81
+ 'ElbV2Id': elb_v2_id,
82
+ },
83
+ )
84
+ if network_interface.get('PrivateIpAddresses'):
85
+ for private_ip_address in network_interface['PrivateIpAddresses']:
86
+ private_ip_list.append(
87
+ {
88
+ 'Id': f"{network_interface['NetworkInterfaceId']}:{private_ip_address['PrivateIpAddress']}",
89
+ 'NetworkInterfaceId': network_interface['NetworkInterfaceId'],
90
+ 'IpOwnerId': private_ip_address.get('Association', {}).get('IpOwnerId'),
91
+ 'Primary': private_ip_address['Primary'],
92
+ 'PrivateIpAddress': private_ip_address['PrivateIpAddress'],
93
+ 'PublicIp': private_ip_address.get('Association', {}).get('PublicIp'),
94
+ },
95
+ )
96
+
97
+ if network_interface.get("Groups"):
98
+ for group in network_interface["Groups"]:
99
+ sg_list.append(
100
+ {
101
+ 'GroupId': group['GroupId'],
102
+ 'NetworkInterfaceId': network_interface_id,
103
+ },
104
+ )
105
+
106
+ subnet_id = network_interface.get('SubnetId')
107
+ if subnet_id:
108
+ subnet_list.append(
109
+ {
110
+ 'NetworkInterfaceId': network_interface_id,
111
+ 'SubnetId': subnet_id,
112
+ 'ElbV1Id': elb_v1_id,
113
+ 'ElbV2Id': elb_v2_id,
114
+ },
115
+ )
116
+
117
+ return Ec2NetworkData(
118
+ network_interface_list=network_interface_list,
119
+ private_ip_list=private_ip_list,
120
+ sg_list=sg_list,
121
+ subnet_list=subnet_list,
122
+ )
123
+
124
+
125
+ @timeit
126
+ def load_network_interfaces(
127
+ neo4j_session: neo4j.Session,
128
+ data: List[Dict[str, Any]],
129
+ region: str,
130
+ aws_account_id: str,
131
+ update_tag: int,
132
+ ) -> None:
133
+ logger.info(f"Loading {len(data)} network interfaces in {region}.")
134
+ load(
135
+ neo4j_session,
136
+ EC2NetworkInterfaceSchema(),
137
+ data,
138
+ Region=region,
139
+ AWS_ID=aws_account_id,
140
+ lastupdated=update_tag,
141
+ )
142
+
143
+
144
+ @timeit
145
+ def load_private_ip_network_interface(
146
+ neo4j_session: neo4j.Session,
147
+ data: List[Dict[str, Any]],
148
+ region: str,
149
+ aws_account_id: str,
150
+ update_tag: int,
151
+ ) -> None:
152
+ """
153
+ Private IPs as known by describe-network-interfaces.
154
+ """
155
+ logger.info(f"Loading {len(data)} private IPs in {region}.")
156
+ load(
157
+ neo4j_session,
158
+ EC2PrivateIpNetworkInterfaceSchema(),
159
+ data,
160
+ Region=region,
161
+ AWS_ID=aws_account_id,
162
+ lastupdated=update_tag,
163
+ )
164
+
165
+
166
+ @timeit
167
+ def load_security_group_network_interface(
168
+ neo4j_session: neo4j.Session,
169
+ data: List[Dict[str, Any]],
170
+ region: str,
171
+ aws_account_id: str,
172
+ update_tag: int,
173
+ ) -> None:
174
+ """
175
+ Security groups as known by describe-network-interfaces.
176
+ """
177
+ logger.info(f"Loading {len(data)} security groups in {region}.")
178
+ load(
179
+ neo4j_session,
180
+ EC2SecurityGroupNetworkInterfaceSchema(),
181
+ data,
182
+ Region=region,
183
+ AWS_ID=aws_account_id,
184
+ lastupdated=update_tag,
185
+ )
186
+
187
+
188
+ @timeit
189
+ def load_subnet_network_interface(
190
+ neo4j_session: neo4j.Session,
191
+ data: List[Dict[str, Any]],
192
+ region: str,
193
+ aws_account_id: str,
194
+ update_tag: int,
195
+ ) -> None:
196
+ """
197
+ Subnets as known by describe-network-interfaces.
198
+ """
199
+ logger.info(f"Loading {len(data)} subnets in {region}.")
200
+ load(
201
+ neo4j_session,
202
+ EC2SubnetNetworkInterfaceSchema(),
203
+ data,
204
+ Region=region,
205
+ AWS_ID=aws_account_id,
206
+ lastupdated=update_tag,
207
+ )
208
+
209
+
210
+ def load_network_data(
211
+ neo4j_session: neo4j.Session,
212
+ region: str,
213
+ current_aws_account_id: str,
214
+ update_tag: int,
215
+ network_interface_list: List[Dict[str, Any]],
216
+ private_ip_list: List[Dict[str, Any]],
217
+ subnet_list: List[Dict[str, Any]],
218
+ sg_list: List[Dict[str, Any]],
219
+ ) -> None:
220
+ load_network_interfaces(neo4j_session, network_interface_list, region, current_aws_account_id, update_tag)
221
+ load_private_ip_network_interface(neo4j_session, private_ip_list, region, current_aws_account_id, update_tag)
222
+ load_subnet_network_interface(neo4j_session, subnet_list, region, current_aws_account_id, update_tag)
223
+ load_security_group_network_interface(neo4j_session, sg_list, region, current_aws_account_id, update_tag)
224
+
225
+
226
+ @timeit
227
+ def cleanup_network_interfaces(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
228
+ GraphJob.from_node_schema(EC2NetworkInterfaceSchema(), common_job_parameters).run(neo4j_session)
229
+ GraphJob.from_node_schema(EC2PrivateIpNetworkInterfaceSchema(), common_job_parameters).run(neo4j_session)
230
+
231
+
232
+ @timeit
233
+ def sync_network_interfaces(
234
+ neo4j_session: neo4j.Session,
235
+ boto3_session: boto3.session.Session,
236
+ regions: List[str],
237
+ current_aws_account_id: str,
238
+ update_tag: int,
239
+ common_job_parameters: Dict,
240
+ ) -> None:
241
+ for region in regions:
242
+ logger.info(f"Syncing EC2 network interfaces for region '{region}' in account '{current_aws_account_id}'.")
243
+ data = get_network_interface_data(boto3_session, region)
244
+ ec2_network_data = transform_network_interface_data(data, region)
245
+ load_network_data(
246
+ neo4j_session,
247
+ region,
248
+ current_aws_account_id,
249
+ update_tag,
250
+ ec2_network_data.network_interface_list,
251
+ ec2_network_data.private_ip_list,
252
+ ec2_network_data.subnet_list,
253
+ ec2_network_data.sg_list,
254
+ )
255
+ cleanup_network_interfaces(neo4j_session, common_job_parameters)
@@ -8,7 +8,7 @@ import neo4j
8
8
 
9
9
  from .util import get_botocore_config
10
10
  from cartography.graph.job import GraphJob
11
- from cartography.models.aws.ec2.securitygroups import EC2SecurityGroupSchema
11
+ from cartography.models.aws.ec2.securitygroup_instance import EC2SecurityGroupInstanceSchema
12
12
  from cartography.util import aws_handle_regions
13
13
  from cartography.util import run_cleanup_job
14
14
  from cartography.util import timeit
@@ -148,7 +148,7 @@ def cleanup_ec2_security_groupinfo(neo4j_session: neo4j.Session, common_job_para
148
148
  neo4j_session,
149
149
  common_job_parameters,
150
150
  )
151
- GraphJob.from_node_schema(EC2SecurityGroupSchema(), common_job_parameters).run(neo4j_session)
151
+ GraphJob.from_node_schema(EC2SecurityGroupInstanceSchema(), common_job_parameters).run(neo4j_session)
152
152
 
153
153
 
154
154
  @timeit
@@ -7,7 +7,7 @@ import neo4j
7
7
 
8
8
  from .util import get_botocore_config
9
9
  from cartography.graph.job import GraphJob
10
- from cartography.models.aws.ec2.subnets import EC2SubnetSchema
10
+ from cartography.models.aws.ec2.subnet_instance import EC2SubnetInstanceSchema
11
11
  from cartography.util import aws_handle_regions
12
12
  from cartography.util import run_cleanup_job
13
13
  from cartography.util import timeit
@@ -78,7 +78,7 @@ def load_subnets(
78
78
  @timeit
79
79
  def cleanup_subnets(neo4j_session: neo4j.Session, common_job_parameters: Dict) -> None:
80
80
  run_cleanup_job('aws_ingest_subnets_cleanup.json', neo4j_session, common_job_parameters)
81
- GraphJob.from_node_schema(EC2SubnetSchema(), common_job_parameters).run(neo4j_session)
81
+ GraphJob.from_node_schema(EC2SubnetInstanceSchema(), common_job_parameters).run(neo4j_session)
82
82
 
83
83
 
84
84
  @timeit
@@ -0,0 +1,106 @@
1
+ import logging
2
+ from typing import Any
3
+ from typing import Dict
4
+ from typing import List
5
+
6
+ import boto3
7
+ import neo4j
8
+
9
+ from cartography.client.core.tx import load
10
+ from cartography.graph.job import GraphJob
11
+ from cartography.models.aws.eks.clusters import EKSClusterSchema
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_eks_clusters(boto3_session: boto3.session.Session, region: str) -> List[str]:
21
+ client = boto3_session.client('eks', region_name=region)
22
+ clusters: List[str] = []
23
+ paginator = client.get_paginator('list_clusters')
24
+ for page in paginator.paginate():
25
+ clusters.extend(page['clusters'])
26
+ return clusters
27
+
28
+
29
+ @timeit
30
+ def get_eks_describe_cluster(boto3_session: boto3.session.Session, region: str, cluster_name: str) -> Dict:
31
+ client = boto3_session.client('eks', region_name=region)
32
+ response = client.describe_cluster(name=cluster_name)
33
+ return response['cluster']
34
+
35
+
36
+ @timeit
37
+ def load_eks_clusters(
38
+ neo4j_session: neo4j.Session,
39
+ cluster_data: List[Dict[str, Any]],
40
+ region: str,
41
+ current_aws_account_id: str,
42
+ aws_update_tag: int,
43
+ ) -> None:
44
+ load(
45
+ neo4j_session,
46
+ EKSClusterSchema(),
47
+ cluster_data,
48
+ Region=region,
49
+ AWS_ID=current_aws_account_id,
50
+ lastupdated=aws_update_tag,
51
+ )
52
+
53
+
54
+ def _process_logging(cluster: Dict) -> bool:
55
+ """
56
+ Parse cluster.logging.clusterLogging to verify if
57
+ at least one entry has audit logging set to Enabled.
58
+ """
59
+ logging: bool = False
60
+ cluster_logging: Any = cluster.get('logging', {}).get('clusterLogging')
61
+ if cluster_logging:
62
+ logging = any(filter(lambda x: 'audit' in x['types'] and x['enabled'], cluster_logging)) # type: ignore
63
+ return logging
64
+
65
+
66
+ @timeit
67
+ def cleanup(neo4j_session: neo4j.Session, common_job_parameters: Dict[str, Any]) -> None:
68
+ logger.info("Running EKS cluster cleanup")
69
+ GraphJob.from_node_schema(EKSClusterSchema(), common_job_parameters).run(neo4j_session)
70
+
71
+
72
+ def transform(cluster_data: Dict[str, Any]) -> List[Dict[str, Any]]:
73
+ transformed_list = []
74
+ for cluster_name, cluster_dict in cluster_data.items():
75
+ transformed_dict = cluster_dict.copy()
76
+ transformed_dict['ClusterLogging'] = _process_logging(transformed_dict)
77
+ transformed_dict['ClusterEndpointPublic'] = transformed_dict.get('resourcesVpcConfig', {}).get(
78
+ 'endpointPublicAccess',
79
+ )
80
+ if 'createdAt' in transformed_dict:
81
+ transformed_dict['created_at'] = str(transformed_dict['createdAt'])
82
+ transformed_list.append(transformed_dict)
83
+ return transformed_list
84
+
85
+
86
+ @timeit
87
+ def sync(
88
+ neo4j_session: neo4j.Session,
89
+ boto3_session: boto3.session.Session,
90
+ regions: List[str],
91
+ current_aws_account_id: str,
92
+ update_tag: int,
93
+ common_job_parameters: Dict[str, Any],
94
+ ) -> None:
95
+ for region in regions:
96
+ logger.info("Syncing EKS for region '%s' in account '%s'.", region, current_aws_account_id)
97
+
98
+ clusters: List[str] = get_eks_clusters(boto3_session, region)
99
+ cluster_data = {}
100
+ for cluster_name in clusters:
101
+ cluster_data[cluster_name] = get_eks_describe_cluster(boto3_session, region, cluster_name)
102
+ transformed_list = transform(cluster_data)
103
+
104
+ load_eks_clusters(neo4j_session, transformed_list, region, current_aws_account_id, update_tag)
105
+
106
+ cleanup(neo4j_session, common_job_parameters)