cartography 0.101.0rc2__py3-none-any.whl → 0.101.1rc1__py3-none-any.whl
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.
- cartography/_version.py +2 -2
- cartography/intel/aws/ec2/launch_templates.py +10 -2
- cartography/intel/crowdstrike/endpoints.py +1 -1
- cartography/intel/gcp/__init__.py +7 -2
- cartography/intel/gsuite/__init__.py +8 -0
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/METADATA +4 -3
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/RECORD +11 -11
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/WHEEL +0 -0
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/entry_points.txt +0 -0
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/licenses/LICENSE +0 -0
- {cartography-0.101.0rc2.dist-info → cartography-0.101.1rc1.dist-info}/top_level.txt +0 -0
cartography/_version.py
CHANGED
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '0.101.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 101,
|
|
20
|
+
__version__ = version = '0.101.1rc1'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 101, 1)
|
|
@@ -2,6 +2,7 @@ import logging
|
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
4
|
import boto3
|
|
5
|
+
import botocore
|
|
5
6
|
import neo4j
|
|
6
7
|
|
|
7
8
|
from .util import get_botocore_config
|
|
@@ -56,8 +57,15 @@ def get_launch_template_versions_by_template(
|
|
|
56
57
|
client = boto3_session.client('ec2', region_name=region, config=get_botocore_config())
|
|
57
58
|
v_paginator = client.get_paginator('describe_launch_template_versions')
|
|
58
59
|
template_versions = []
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
try:
|
|
61
|
+
for versions in v_paginator.paginate(LaunchTemplateId=launch_template_id):
|
|
62
|
+
template_versions.extend(versions['LaunchTemplateVersions'])
|
|
63
|
+
except botocore.exceptions.ClientError as e:
|
|
64
|
+
error_code = e.response['Error']['Code']
|
|
65
|
+
if error_code == 'InvalidLaunchTemplateId.NotFound':
|
|
66
|
+
logger.warning("Launch template %s no longer exists in region %s", launch_template_id, region)
|
|
67
|
+
else:
|
|
68
|
+
raise
|
|
61
69
|
return template_versions
|
|
62
70
|
|
|
63
71
|
|
|
@@ -34,8 +34,8 @@ def load_host_data(
|
|
|
34
34
|
UNWIND $Hosts AS host
|
|
35
35
|
MERGE (h:CrowdstrikeHost{id: host.device_id})
|
|
36
36
|
ON CREATE SET h.cid = host.cid,
|
|
37
|
-
h.cid = host.cid,
|
|
38
37
|
h.instance_id = host.instance_id,
|
|
38
|
+
h.serial_number = host.serial_number,
|
|
39
39
|
h.firstseen = timestamp()
|
|
40
40
|
SET h.status = host.status,
|
|
41
41
|
h.hostname = host.hostname,
|
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
from collections import namedtuple
|
|
4
4
|
from typing import Dict
|
|
5
5
|
from typing import List
|
|
6
|
+
from typing import Optional
|
|
6
7
|
from typing import Set
|
|
7
8
|
|
|
8
9
|
import googleapiclient.discovery
|
|
@@ -328,7 +329,7 @@ def _sync_multiple_projects(
|
|
|
328
329
|
|
|
329
330
|
|
|
330
331
|
@timeit
|
|
331
|
-
def get_gcp_credentials() -> GoogleCredentials:
|
|
332
|
+
def get_gcp_credentials() -> Optional[GoogleCredentials]:
|
|
332
333
|
"""
|
|
333
334
|
Gets access tokens for GCP API access.
|
|
334
335
|
:param: None
|
|
@@ -338,6 +339,7 @@ def get_gcp_credentials() -> GoogleCredentials:
|
|
|
338
339
|
# Explicitly use Application Default Credentials.
|
|
339
340
|
# See https://google-auth.readthedocs.io/en/master/user-guide.html#application-default-credentials
|
|
340
341
|
credentials, project_id = default()
|
|
342
|
+
return credentials
|
|
341
343
|
except DefaultCredentialsError as e:
|
|
342
344
|
logger.debug("Error occurred calling GoogleCredentials.get_application_default().", exc_info=True)
|
|
343
345
|
logger.error(
|
|
@@ -349,7 +351,7 @@ def get_gcp_credentials() -> GoogleCredentials:
|
|
|
349
351
|
),
|
|
350
352
|
e,
|
|
351
353
|
)
|
|
352
|
-
|
|
354
|
+
return None
|
|
353
355
|
|
|
354
356
|
|
|
355
357
|
@timeit
|
|
@@ -367,6 +369,9 @@ def start_gcp_ingestion(neo4j_session: neo4j.Session, config: Config) -> None:
|
|
|
367
369
|
}
|
|
368
370
|
|
|
369
371
|
credentials = get_gcp_credentials()
|
|
372
|
+
if credentials is None:
|
|
373
|
+
logger.warning("Unable to initialize GCP credentials. Skipping module.")
|
|
374
|
+
return
|
|
370
375
|
|
|
371
376
|
resources = _initialize_resources(credentials)
|
|
372
377
|
|
|
@@ -67,6 +67,14 @@ def start_gsuite_ingestion(neo4j_session: neo4j.Session, config: Config) -> None
|
|
|
67
67
|
|
|
68
68
|
creds: OAuth2Credentials | ServiceAccountCredentials
|
|
69
69
|
if config.gsuite_auth_method == 'delegated': # Legacy delegated method
|
|
70
|
+
if config.gsuite_config is None or not os.path.isfile(config.gsuite_config):
|
|
71
|
+
logger.warning(
|
|
72
|
+
(
|
|
73
|
+
"The GSuite config file is not set or is not a valid file."
|
|
74
|
+
"Skipping GSuite ingestion."
|
|
75
|
+
),
|
|
76
|
+
)
|
|
77
|
+
return
|
|
70
78
|
logger.info('Attempting to authenticate to GSuite using legacy delegated method')
|
|
71
79
|
try:
|
|
72
80
|
creds = service_account.Credentials.from_service_account_file(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cartography
|
|
3
|
-
Version: 0.101.
|
|
3
|
+
Version: 0.101.1rc1
|
|
4
4
|
Summary: Explore assets and their relationships across your technical infrastructure.
|
|
5
5
|
Maintainer: Cartography Contributors
|
|
6
6
|
License: apache2
|
|
@@ -59,10 +59,10 @@ Requires-Dist: moto; extra == "dev"
|
|
|
59
59
|
Requires-Dist: pre-commit; extra == "dev"
|
|
60
60
|
Requires-Dist: pytest>=6.2.4; extra == "dev"
|
|
61
61
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
62
|
-
Requires-Dist: pytest-cov==6.
|
|
62
|
+
Requires-Dist: pytest-cov==6.1.1; extra == "dev"
|
|
63
63
|
Requires-Dist: pytest-rerunfailures; extra == "dev"
|
|
64
64
|
Requires-Dist: types-PyYAML; extra == "dev"
|
|
65
|
-
Requires-Dist: types-requests<2.32.0.
|
|
65
|
+
Requires-Dist: types-requests<2.32.0.20250329; extra == "dev"
|
|
66
66
|
Dynamic: license-file
|
|
67
67
|
|
|
68
68
|

|
|
@@ -182,6 +182,7 @@ Get started with our [developer documentation](https://cartography-cncf.github.i
|
|
|
182
182
|
1. [MessageBird](https://messagebird.com)
|
|
183
183
|
1. [Cloudanix](https://www.cloudanix.com/)
|
|
184
184
|
1. [Corelight](https://www.corelight.com/)
|
|
185
|
+
1. [SubImage](https://subimage.io)
|
|
185
186
|
1. {Your company here} :-)
|
|
186
187
|
|
|
187
188
|
If your organization uses Cartography, please file a PR and update this list. Say hi on Slack too!
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
cartography/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
cartography/__main__.py,sha256=JftXT_nUPkqcEh8uxCCT4n-OyHYqbldEgrDS-4ygy0U,101
|
|
3
|
-
cartography/_version.py,sha256=
|
|
3
|
+
cartography/_version.py,sha256=8kfUZC7PNnC8p044X5JGd8fihSWqOPBbU8RxewCFS2g,518
|
|
4
4
|
cartography/cli.py,sha256=-77DOKUQn3N-TDIi55V4RHLb3k36ZGZ64o1XgiT0qmE,33370
|
|
5
5
|
cartography/config.py,sha256=ZcadsKmooAkti9Kv0eDl8Ec1PcZDu3lWobtNaCnwY3k,11872
|
|
6
6
|
cartography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -174,7 +174,7 @@ cartography/intel/aws/ec2/images.py,sha256=SLoxcy_PQgNomVMDMdutm0zXJCOLosiHJlN63
|
|
|
174
174
|
cartography/intel/aws/ec2/instances.py,sha256=uI8eVJmeEybS8y_T8CVKAkwxJyVDCH7sbuEJYeWGSWY,12468
|
|
175
175
|
cartography/intel/aws/ec2/internet_gateways.py,sha256=dI-4-85_3DGGZZBcY_DN6XqESx9P26S6jKok314lcnQ,2883
|
|
176
176
|
cartography/intel/aws/ec2/key_pairs.py,sha256=g4imIo_5jk8upq9J4--erg-OZXG2i3cJMe6SnNCYj9s,2635
|
|
177
|
-
cartography/intel/aws/ec2/launch_templates.py,sha256=
|
|
177
|
+
cartography/intel/aws/ec2/launch_templates.py,sha256=nHpX-JobVzIHngJ-BBeKwp8wryBjPcJnUX_VJhIU5hE,6233
|
|
178
178
|
cartography/intel/aws/ec2/load_balancer_v2s.py,sha256=95FfQQn740gexINIHDJizOM4OKzRtQT_y2XQMipQ5Dg,8661
|
|
179
179
|
cartography/intel/aws/ec2/load_balancers.py,sha256=1GwErzGqi3BKCARqfGJcD_r_D84rFKVy5kNMas9jAok,6756
|
|
180
180
|
cartography/intel/aws/ec2/network_acls.py,sha256=_UiOx79OxcqH0ecRjcVMglAzz5XJ4aVYLlv6dl_ism4,6809
|
|
@@ -203,7 +203,7 @@ cartography/intel/azure/util/credentials.py,sha256=99PjTs0vZ2iu0tHD7TohN1VJYjuXY
|
|
|
203
203
|
cartography/intel/bigfix/__init__.py,sha256=3LoDCm01VNNaDRGsRiykJm1GJgUQ8zI1HO6NodLFVIA,1058
|
|
204
204
|
cartography/intel/bigfix/computers.py,sha256=HAwA-muDBLu2xkFFL2Ae-xjCH1gxKKwxGMZM4BE_Qdo,5909
|
|
205
205
|
cartography/intel/crowdstrike/__init__.py,sha256=dAtgI-0vZAQZ3cTFQhMEzzt7aqiNSNuiIYiw0qbut-I,1896
|
|
206
|
-
cartography/intel/crowdstrike/endpoints.py,sha256=
|
|
206
|
+
cartography/intel/crowdstrike/endpoints.py,sha256=1Sn8jC5YARKbec-idUZniqCTLldde5ymwpBzSeGZVoM,3835
|
|
207
207
|
cartography/intel/crowdstrike/spotlight.py,sha256=yNhj44-RYF6ubck-hHMKhKiNU0fCfhQf4Oagopc31EM,4754
|
|
208
208
|
cartography/intel/crowdstrike/util.py,sha256=gfJ6Ptr6YdbBS9Qj9a_-Jc-IJroADDRcXqjh5TW0qXE,277
|
|
209
209
|
cartography/intel/cve/__init__.py,sha256=u9mv5O_qkSLmdhLhLm1qbwmhoeLQ3A3fQTjNyLQpEyI,3656
|
|
@@ -220,7 +220,7 @@ cartography/intel/duo/phones.py,sha256=ueJheqSLD2xYcMus5eOiixPYS3_xVjgQzeomjV2a6
|
|
|
220
220
|
cartography/intel/duo/tokens.py,sha256=bEEnjfc4waQnkRHVSnZLAeGE8wHOOZL7FA9m80GGQdQ,2396
|
|
221
221
|
cartography/intel/duo/users.py,sha256=lc7ly_XKeUjJ50szw31WT_GiCrZfGKJv1zVUpmTchh4,4097
|
|
222
222
|
cartography/intel/duo/web_authn_credentials.py,sha256=IbDf3CWqfEyI7f9zJugUvoDd6vZOECfb_7ANZaRYzuk,2636
|
|
223
|
-
cartography/intel/gcp/__init__.py,sha256=
|
|
223
|
+
cartography/intel/gcp/__init__.py,sha256=sZHPfDCPZFCE5d6aj20Ow4AC0vrFxV7RCn_cMinCDmI,17650
|
|
224
224
|
cartography/intel/gcp/compute.py,sha256=CH2cBdOwbLZCAbkfRJkkI-sFybXVKRWEUGDJANQmvyA,48333
|
|
225
225
|
cartography/intel/gcp/crm.py,sha256=Uw5PILhVFhpM8gq7uu2v7F_YikDW3gsTZ3d7-e8Z1_k,12324
|
|
226
226
|
cartography/intel/gcp/dns.py,sha256=y2pvbmV04cnrMyuu_nbW3oc7uwHX6yEzn1n7veCsjmk,7748
|
|
@@ -232,7 +232,7 @@ cartography/intel/github/repos.py,sha256=MmpxZASDJFQxDeSMxX3pZcpxCHFPos4_uYC_cX9
|
|
|
232
232
|
cartography/intel/github/teams.py,sha256=AltQSmBHHmyzBtnRkez9Bo5yChEKBSt3wwzhGcfqmX4,14180
|
|
233
233
|
cartography/intel/github/users.py,sha256=MCLE0V0UCzQm3k3KmrNe6PYkI6usRQZYy2rCN3mT8o0,8948
|
|
234
234
|
cartography/intel/github/util.py,sha256=K0cXOPuhnGvN-aqcSUBO3vTuKQLjufVal9kn2HwOpbo,8110
|
|
235
|
-
cartography/intel/gsuite/__init__.py,sha256=
|
|
235
|
+
cartography/intel/gsuite/__init__.py,sha256=S8LxQxQ6CP7g2U5x-XnJFz17OmAgvGdzyhA-CZqg-_g,5724
|
|
236
236
|
cartography/intel/gsuite/api.py,sha256=bx0mPn6x6fgssxgm343NHdwjbtFkO6SZTucOsoW0Hgk,11143
|
|
237
237
|
cartography/intel/jamf/__init__.py,sha256=Nof-LrUeevoieo6oP2GyfTwx8k5TUIgreW6hSj53YjQ,419
|
|
238
238
|
cartography/intel/jamf/computers.py,sha256=EfjlupQ-9HYTjOrmuwrGuJDy9ApAnJvk8WrYcp6_Jkk,1673
|
|
@@ -360,9 +360,9 @@ cartography/models/snipeit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
360
360
|
cartography/models/snipeit/asset.py,sha256=FyRAaeXuZjMy0eUQcSDFcgEAF5lbLMlvqp1Tv9d3Lv4,3238
|
|
361
361
|
cartography/models/snipeit/tenant.py,sha256=p4rFnpNNuF1W5ilGBbexDaETWTwavfb38RcQGoImkQI,679
|
|
362
362
|
cartography/models/snipeit/user.py,sha256=MsB4MiCVNTH6JpESime7cOkB89autZOXQpL6Z0l7L6o,2113
|
|
363
|
-
cartography-0.101.
|
|
364
|
-
cartography-0.101.
|
|
365
|
-
cartography-0.101.
|
|
366
|
-
cartography-0.101.
|
|
367
|
-
cartography-0.101.
|
|
368
|
-
cartography-0.101.
|
|
363
|
+
cartography-0.101.1rc1.dist-info/licenses/LICENSE,sha256=kvLEBRYaQ1RvUni6y7Ti9uHeooqnjPoo6n_-0JO1ETc,11351
|
|
364
|
+
cartography-0.101.1rc1.dist-info/METADATA,sha256=UxWV1DHIXB3ZSFQDE9bmM_21i4gh-3wkYnXgNJlBiG0,11909
|
|
365
|
+
cartography-0.101.1rc1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
366
|
+
cartography-0.101.1rc1.dist-info/entry_points.txt,sha256=GVIAWD0o0_K077qMA_k1oZU4v-M0a8GLKGJR8tZ-qH8,112
|
|
367
|
+
cartography-0.101.1rc1.dist-info/top_level.txt,sha256=BHqsNJQiI6Q72DeypC1IINQJE59SLhU4nllbQjgJi9g,12
|
|
368
|
+
cartography-0.101.1rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|