cartography 0.104.0rc2__py3-none-any.whl → 0.105.0__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/cli.py +26 -1
- cartography/client/aws/__init__.py +19 -0
- cartography/client/aws/ecr.py +51 -0
- cartography/config.py +8 -0
- cartography/data/indexes.cypher +0 -3
- cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json +1 -1
- cartography/graph/cleanupbuilder.py +151 -41
- cartography/intel/aws/acm.py +124 -0
- cartography/intel/aws/cloudtrail.py +3 -38
- cartography/intel/aws/ecr.py +8 -2
- cartography/intel/aws/iam.py +1 -1
- cartography/intel/aws/lambda_function.py +1 -1
- cartography/intel/aws/resources.py +2 -2
- cartography/intel/aws/s3.py +195 -4
- cartography/intel/aws/secretsmanager.py +19 -5
- cartography/intel/aws/sqs.py +36 -90
- cartography/intel/entra/__init__.py +11 -0
- cartography/intel/entra/groups.py +151 -0
- cartography/intel/entra/ou.py +21 -5
- cartography/intel/trivy/__init__.py +161 -0
- cartography/intel/trivy/scanner.py +363 -0
- cartography/models/aws/acm/certificate.py +75 -0
- cartography/models/aws/cloudtrail/trail.py +24 -0
- cartography/models/aws/s3/notification.py +24 -0
- cartography/models/aws/secretsmanager/secret_version.py +0 -2
- cartography/models/aws/sqs/__init__.py +0 -0
- cartography/models/aws/sqs/queue.py +89 -0
- cartography/models/core/nodes.py +15 -2
- cartography/models/entra/group.py +91 -0
- cartography/models/trivy/__init__.py +0 -0
- cartography/models/trivy/findings.py +66 -0
- cartography/models/trivy/fix.py +66 -0
- cartography/models/trivy/package.py +71 -0
- cartography/sync.py +2 -0
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/METADATA +3 -2
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/RECORD +42 -30
- cartography/intel/aws/efs.py +0 -93
- cartography/models/aws/efs/mount_target.py +0 -52
- /cartography/models/aws/{efs → acm}/__init__.py +0 -0
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/WHEEL +0 -0
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/entry_points.txt +0 -0
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/licenses/LICENSE +0 -0
- {cartography-0.104.0rc2.dist-info → cartography-0.105.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
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.relationships import CartographyRelProperties
|
|
7
|
+
from cartography.models.core.relationships import CartographyRelSchema
|
|
8
|
+
from cartography.models.core.relationships import LinkDirection
|
|
9
|
+
from cartography.models.core.relationships import make_target_node_matcher
|
|
10
|
+
from cartography.models.core.relationships import OtherRelationships
|
|
11
|
+
from cartography.models.core.relationships import TargetNodeMatcher
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True)
|
|
15
|
+
class EntraGroupNodeProperties(CartographyNodeProperties):
|
|
16
|
+
id: PropertyRef = PropertyRef("id")
|
|
17
|
+
display_name: PropertyRef = PropertyRef("display_name")
|
|
18
|
+
description: PropertyRef = PropertyRef("description")
|
|
19
|
+
mail: PropertyRef = PropertyRef("mail")
|
|
20
|
+
mail_nickname: PropertyRef = PropertyRef("mail_nickname")
|
|
21
|
+
mail_enabled: PropertyRef = PropertyRef("mail_enabled")
|
|
22
|
+
security_enabled: PropertyRef = PropertyRef("security_enabled")
|
|
23
|
+
group_types: PropertyRef = PropertyRef("group_types")
|
|
24
|
+
visibility: PropertyRef = PropertyRef("visibility")
|
|
25
|
+
is_assignable_to_role: PropertyRef = PropertyRef("is_assignable_to_role")
|
|
26
|
+
created_date_time: PropertyRef = PropertyRef("created_date_time")
|
|
27
|
+
deleted_date_time: PropertyRef = PropertyRef("deleted_date_time")
|
|
28
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class EntraGroupToTenantRelProperties(CartographyRelProperties):
|
|
33
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataclass(frozen=True)
|
|
37
|
+
class EntraGroupToTenantRel(CartographyRelSchema):
|
|
38
|
+
target_node_label: str = "EntraTenant"
|
|
39
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
40
|
+
{"id": PropertyRef("TENANT_ID", set_in_kwargs=True)}
|
|
41
|
+
)
|
|
42
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
43
|
+
rel_label: str = "RESOURCE"
|
|
44
|
+
properties: EntraGroupToTenantRelProperties = EntraGroupToTenantRelProperties()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass(frozen=True)
|
|
48
|
+
class EntraGroupToUserRelProperties(CartographyRelProperties):
|
|
49
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@dataclass(frozen=True)
|
|
53
|
+
# (:EntraUser)-[:MEMBER_OF]->(:EntraGroup)
|
|
54
|
+
class EntraGroupToUserRel(CartographyRelSchema):
|
|
55
|
+
target_node_label: str = "EntraUser"
|
|
56
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
57
|
+
{"id": PropertyRef("member_ids", one_to_many=True)}
|
|
58
|
+
)
|
|
59
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
60
|
+
rel_label: str = "MEMBER_OF"
|
|
61
|
+
properties: EntraGroupToUserRelProperties = EntraGroupToUserRelProperties()
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@dataclass(frozen=True)
|
|
65
|
+
class EntraGroupToGroupRelProperties(CartographyRelProperties):
|
|
66
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@dataclass(frozen=True)
|
|
70
|
+
# (:EntraGroup)-[:MEMBER_OF]->(:EntraGroup)
|
|
71
|
+
class EntraGroupToGroupRel(CartographyRelSchema):
|
|
72
|
+
target_node_label: str = "EntraGroup"
|
|
73
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
74
|
+
{"id": PropertyRef("member_group_ids", one_to_many=True)}
|
|
75
|
+
)
|
|
76
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
77
|
+
rel_label: str = "MEMBER_OF"
|
|
78
|
+
properties: EntraGroupToGroupRelProperties = EntraGroupToGroupRelProperties()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@dataclass(frozen=True)
|
|
82
|
+
class EntraGroupSchema(CartographyNodeSchema):
|
|
83
|
+
label: str = "EntraGroup"
|
|
84
|
+
properties: EntraGroupNodeProperties = EntraGroupNodeProperties()
|
|
85
|
+
sub_resource_relationship: EntraGroupToTenantRel = EntraGroupToTenantRel()
|
|
86
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
87
|
+
[
|
|
88
|
+
EntraGroupToGroupRel(),
|
|
89
|
+
EntraGroupToUserRel(),
|
|
90
|
+
]
|
|
91
|
+
)
|
|
File without changes
|
|
@@ -0,0 +1,66 @@
|
|
|
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 TrivyImageFindingNodeProperties(CartographyNodeProperties):
|
|
17
|
+
id: PropertyRef = PropertyRef("id")
|
|
18
|
+
name: PropertyRef = PropertyRef("VulnerabilityID")
|
|
19
|
+
cve_id: PropertyRef = PropertyRef("cve_id")
|
|
20
|
+
description: PropertyRef = PropertyRef("Description")
|
|
21
|
+
last_modified_date: PropertyRef = PropertyRef("LastModifiedDate")
|
|
22
|
+
primary_url: PropertyRef = PropertyRef("PrimaryURL")
|
|
23
|
+
published_date: PropertyRef = PropertyRef("PublishedDate")
|
|
24
|
+
severity: PropertyRef = PropertyRef("Severity")
|
|
25
|
+
severity_source: PropertyRef = PropertyRef("SeveritySource")
|
|
26
|
+
title: PropertyRef = PropertyRef("Title")
|
|
27
|
+
cvss_nvd_v2_score: PropertyRef = PropertyRef("nvd_v2_score")
|
|
28
|
+
cvss_nvd_v2_vector: PropertyRef = PropertyRef("nvd_v2_vector")
|
|
29
|
+
cvss_nvd_v3_score: PropertyRef = PropertyRef("nvd_v3_score")
|
|
30
|
+
cvss_nvd_v3_vector: PropertyRef = PropertyRef("nvd_v3_vector")
|
|
31
|
+
cvss_redhat_v3_score: PropertyRef = PropertyRef("redhat_v3_score")
|
|
32
|
+
cvss_redhat_v3_vector: PropertyRef = PropertyRef("redhat_v3_vector")
|
|
33
|
+
cvss_ubuntu_v3_score: PropertyRef = PropertyRef("ubuntu_v3_score")
|
|
34
|
+
cvss_ubuntu_v3_vector: PropertyRef = PropertyRef("ubuntu_v3_vector")
|
|
35
|
+
class_name: PropertyRef = PropertyRef("Class")
|
|
36
|
+
type: PropertyRef = PropertyRef("Type")
|
|
37
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@dataclass(frozen=True)
|
|
41
|
+
class TrivyFindingToImageRelProperties(CartographyRelProperties):
|
|
42
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass(frozen=True)
|
|
46
|
+
class TrivyFindingToImage(CartographyRelSchema):
|
|
47
|
+
target_node_label: str = "ECRImage"
|
|
48
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
49
|
+
{"id": PropertyRef("ImageDigest")},
|
|
50
|
+
)
|
|
51
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
52
|
+
rel_label: str = "AFFECTS"
|
|
53
|
+
properties: TrivyFindingToImageRelProperties = TrivyFindingToImageRelProperties()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass(frozen=True)
|
|
57
|
+
class TrivyImageFindingSchema(CartographyNodeSchema):
|
|
58
|
+
label: str = "TrivyImageFinding"
|
|
59
|
+
scoped_cleanup: bool = False
|
|
60
|
+
extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(["Risk", "CVE"])
|
|
61
|
+
properties: TrivyImageFindingNodeProperties = TrivyImageFindingNodeProperties()
|
|
62
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
63
|
+
[
|
|
64
|
+
TrivyFindingToImage(),
|
|
65
|
+
],
|
|
66
|
+
)
|
|
@@ -0,0 +1,66 @@
|
|
|
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 TrivyFixNodeProperties(CartographyNodeProperties):
|
|
17
|
+
id: PropertyRef = PropertyRef("id")
|
|
18
|
+
version: PropertyRef = PropertyRef("FixedVersion")
|
|
19
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass(frozen=True)
|
|
23
|
+
class TrivyFixToPackageRelProperties(CartographyRelProperties):
|
|
24
|
+
version: PropertyRef = PropertyRef("FixedVersion")
|
|
25
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass(frozen=True)
|
|
29
|
+
class TrivyFixToPackage(CartographyRelSchema):
|
|
30
|
+
target_node_label: str = "Package"
|
|
31
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
32
|
+
{"id": PropertyRef("PackageId")},
|
|
33
|
+
)
|
|
34
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
35
|
+
rel_label: str = "SHOULD_UPDATE_TO"
|
|
36
|
+
properties: TrivyFixToPackageRelProperties = TrivyFixToPackageRelProperties()
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(frozen=True)
|
|
40
|
+
class TrivyFixToFindingRelProperties(CartographyRelProperties):
|
|
41
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@dataclass(frozen=True)
|
|
45
|
+
class TrivyFixToFinding(CartographyRelSchema):
|
|
46
|
+
target_node_label: str = "TrivyImageFinding"
|
|
47
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
48
|
+
{"id": PropertyRef("FindingId")},
|
|
49
|
+
)
|
|
50
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
51
|
+
rel_label: str = "APPLIES_TO"
|
|
52
|
+
properties: TrivyFixToFindingRelProperties = TrivyFixToFindingRelProperties()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@dataclass(frozen=True)
|
|
56
|
+
class TrivyFixSchema(CartographyNodeSchema):
|
|
57
|
+
label: str = "TrivyFix"
|
|
58
|
+
scoped_cleanup: bool = False
|
|
59
|
+
extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(["Fix"])
|
|
60
|
+
properties: TrivyFixNodeProperties = TrivyFixNodeProperties()
|
|
61
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
62
|
+
[
|
|
63
|
+
TrivyFixToPackage(),
|
|
64
|
+
TrivyFixToFinding(),
|
|
65
|
+
],
|
|
66
|
+
)
|
|
@@ -0,0 +1,71 @@
|
|
|
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 TrivyPackageNodeProperties(CartographyNodeProperties):
|
|
17
|
+
id: PropertyRef = PropertyRef("id")
|
|
18
|
+
installed_version: PropertyRef = PropertyRef("InstalledVersion")
|
|
19
|
+
name: PropertyRef = PropertyRef("PkgName")
|
|
20
|
+
version: PropertyRef = PropertyRef("InstalledVersion")
|
|
21
|
+
class_name: PropertyRef = PropertyRef("Class")
|
|
22
|
+
type: PropertyRef = PropertyRef("Type")
|
|
23
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass(frozen=True)
|
|
27
|
+
class TrivyPackageToImageRelProperties(CartographyRelProperties):
|
|
28
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class TrivyPackageToImage(CartographyRelSchema):
|
|
33
|
+
target_node_label: str = "ECRImage"
|
|
34
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
35
|
+
{"id": PropertyRef("ImageDigest")},
|
|
36
|
+
)
|
|
37
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
38
|
+
rel_label: str = "DEPLOYED"
|
|
39
|
+
properties: TrivyPackageToImageRelProperties = TrivyPackageToImageRelProperties()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass(frozen=True)
|
|
43
|
+
class TrivyPackageToFindingRelProperties(CartographyRelProperties):
|
|
44
|
+
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass(frozen=True)
|
|
48
|
+
class TrivyPackageToFinding(CartographyRelSchema):
|
|
49
|
+
target_node_label: str = "TrivyImageFinding"
|
|
50
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
51
|
+
{"id": PropertyRef("FindingId")},
|
|
52
|
+
)
|
|
53
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
54
|
+
rel_label: str = "AFFECTS"
|
|
55
|
+
properties: TrivyPackageToFindingRelProperties = (
|
|
56
|
+
TrivyPackageToFindingRelProperties()
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@dataclass(frozen=True)
|
|
61
|
+
class TrivyPackageSchema(CartographyNodeSchema):
|
|
62
|
+
label: str = "Package"
|
|
63
|
+
scoped_cleanup: bool = False
|
|
64
|
+
extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(["TrivyPackage"])
|
|
65
|
+
properties: TrivyPackageNodeProperties = TrivyPackageNodeProperties()
|
|
66
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
67
|
+
[
|
|
68
|
+
TrivyPackageToImage(),
|
|
69
|
+
TrivyPackageToFinding(),
|
|
70
|
+
],
|
|
71
|
+
)
|
cartography/sync.py
CHANGED
|
@@ -37,6 +37,7 @@ import cartography.intel.openai
|
|
|
37
37
|
import cartography.intel.semgrep
|
|
38
38
|
import cartography.intel.snipeit
|
|
39
39
|
import cartography.intel.tailscale
|
|
40
|
+
import cartography.intel.trivy
|
|
40
41
|
from cartography.config import Config
|
|
41
42
|
from cartography.stats import set_stats_client
|
|
42
43
|
from cartography.util import STATUS_FAILURE
|
|
@@ -70,6 +71,7 @@ TOP_LEVEL_MODULES = OrderedDict(
|
|
|
70
71
|
"semgrep": cartography.intel.semgrep.start_semgrep_ingestion,
|
|
71
72
|
"snipeit": cartography.intel.snipeit.start_snipeit_ingestion,
|
|
72
73
|
"tailscale": cartography.intel.tailscale.start_tailscale_ingestion,
|
|
74
|
+
"trivy": cartography.intel.trivy.start_trivy_ingestion,
|
|
73
75
|
"analysis": cartography.intel.analysis.run,
|
|
74
76
|
}
|
|
75
77
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cartography
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.105.0
|
|
4
4
|
Summary: Explore assets and their relationships across your technical infrastructure.
|
|
5
5
|
Maintainer: Cartography Contributors
|
|
6
6
|
License: apache2
|
|
@@ -80,7 +80,7 @@ You can learn more about the story behind Cartography in our [presentation at BS
|
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
## Supported platforms
|
|
83
|
-
- [Amazon Web Services](https://cartography-cncf.github.io/cartography/modules/aws/index.html) - API Gateway, CloudWatch, Config, EC2, ECS, ECR, Elasticsearch, Elastic Kubernetes Service (EKS), DynamoDB, IAM, Inspector, KMS, Lambda, RDS, Redshift, Route53, S3, Secrets Manager(Secret Versions), Security Hub, SQS, SSM, STS, Tags
|
|
83
|
+
- [Amazon Web Services](https://cartography-cncf.github.io/cartography/modules/aws/index.html) - ACM, API Gateway, CloudWatch, Config, EC2, ECS, ECR, Elasticsearch, Elastic Kubernetes Service (EKS), DynamoDB, IAM, Inspector, KMS, Lambda, RDS, Redshift, Route53, S3, Secrets Manager(Secret Versions), Security Hub, SQS, SSM, STS, Tags
|
|
84
84
|
- [Google Cloud Platform](https://cartography-cncf.github.io/cartography/modules/gcp/index.html) - Cloud Resource Manager, Compute, DNS, Storage, Google Kubernetes Engine
|
|
85
85
|
- [Google GSuite](https://cartography-cncf.github.io/cartography/modules/gsuite/index.html) - users, groups
|
|
86
86
|
- [Oracle Cloud Infrastructure](https://cartography-cncf.github.io/cartography/modules/oci/index.html) - IAM
|
|
@@ -102,6 +102,7 @@ You can learn more about the story behind Cartography in our [presentation at BS
|
|
|
102
102
|
- [Cloudflare](https://cartography-cncf.github.io/cartography/modules/cloudflare/index.html) - Account, Role, Member, Zone, DNSRecord
|
|
103
103
|
- [OpenAI](https://cartography-cncf.github.io/cartography/modules/openai/index.html) - Organization, AdminApiKey, User, Project, ServiceAccount, ApiKey
|
|
104
104
|
- [Anthropic](https://cartography-cncf.github.io/cartography/modules/anthropic/index.html) - Organization, ApiKey, User, Workspace
|
|
105
|
+
- [Trivy Scanner](https://cartography-cncf.github.io/cartography/modules/trivy/index.html) - AWS ECR Images
|
|
105
106
|
|
|
106
107
|
|
|
107
108
|
## Philosophy
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
cartography/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
cartography/__main__.py,sha256=y5iqUrj4BmqZfjeDT-9balzpXeMARgHeIedRMRI1gr8,100
|
|
3
|
-
cartography/_version.py,sha256=
|
|
4
|
-
cartography/cli.py,sha256=
|
|
5
|
-
cartography/config.py,sha256=
|
|
3
|
+
cartography/_version.py,sha256=gxdpR-gLQKp1kUASq4M2OLJ3WIBhZ7POeIyhaomuOPY,515
|
|
4
|
+
cartography/cli.py,sha256=LIH9uY6LyctL8VDsrllxFvU17f1vAAhXQVsQ83wGvRI,41072
|
|
5
|
+
cartography/config.py,sha256=Magq4iNynKdIl3hYjrxlikXfVLxryf73t41L2bAyUPI,14298
|
|
6
6
|
cartography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
cartography/stats.py,sha256=N95prYlSzY8U52VFgKIDgOWOawu5Mig4N7GcVp3binQ,4420
|
|
8
|
-
cartography/sync.py,sha256=
|
|
8
|
+
cartography/sync.py,sha256=y9ByjTesFr7VY4EsAO4C9nZ9uXdWK3H_zmg4Au9e9EQ,13401
|
|
9
9
|
cartography/util.py,sha256=F1-sQrU3x8HdDV2JDTllJvYNy7CKBNg7W93GMqXSjFU,15281
|
|
10
10
|
cartography/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
cartography/client/aws/__init__.py,sha256=
|
|
11
|
+
cartography/client/aws/__init__.py,sha256=Zj7nX21QQELwPLZlpldm_22IiXZ1VFsEFQbWX_e4okU,558
|
|
12
|
+
cartography/client/aws/ecr.py,sha256=04IXnuEAauyO5Mx9Wmt79WdUnYDhYsk2QSOnwE5_BeM,1664
|
|
12
13
|
cartography/client/aws/iam.py,sha256=dYsGikc36DEsSeR2XVOVFFUDwuU9yWj_EVkpgVYCFgM,1293
|
|
13
14
|
cartography/client/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
15
|
cartography/client/core/tx.py,sha256=1kvITtFseyG4C8h5xUxYEvhatejMs71oE0gCjjbDHkQ,10950
|
|
15
16
|
cartography/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
cartography/data/indexes.cypher,sha256=
|
|
17
|
+
cartography/data/indexes.cypher,sha256=7W1ZtqiSxDXqm9yNM_mSJXUAfXUhhQgH3k4zaudPIZc,26378
|
|
17
18
|
cartography/data/permission_relationships.yaml,sha256=RuKGGc_3ZUQ7ag0MssB8k_zaonCkVM5E8I_svBWTmGc,969
|
|
18
19
|
cartography/data/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
20
|
cartography/data/jobs/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -45,7 +46,7 @@ cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json,sha256=U_yKH
|
|
|
45
46
|
cartography/data/jobs/cleanup/aws_import_identity_center_cleanup.json,sha256=PSyerOlZkiLaWYFa3Hg1mqqX83FGwj36-p0BF1lR-Q8,650
|
|
46
47
|
cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json,sha256=SHHrR9pX0V1r-RxwJggHGeFA7JVQAAK02D-n-vqOvdU,287
|
|
47
48
|
cartography/data/jobs/cleanup/aws_import_kms_cleanup.json,sha256=NU9doXVk4UmAY59aYnld95Wc1b8DrfCbvJltUsATxko,1441
|
|
48
|
-
cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json,sha256=
|
|
49
|
+
cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json,sha256=h219-cmOY19RjcGZiecM21HS52hw4S5EXFVAxIpyyTw,2267
|
|
49
50
|
cartography/data/jobs/cleanup/aws_import_principals_cleanup.json,sha256=yrI1FISGTlgaUZXFSj7XUCNzRoLqkcavLur4Lw4zSmU,1363
|
|
50
51
|
cartography/data/jobs/cleanup/aws_import_rds_clusters_cleanup.json,sha256=aHpM8qvN7TNTUJMQjOlv5-lxz0BzJl-tKIj_m5i_uqc,1166
|
|
51
52
|
cartography/data/jobs/cleanup/aws_import_rds_instances_cleanup.json,sha256=vmulpaxqqzBYSTtS6lYzbm55ksYjCab3UeRI0l13ktY,2733
|
|
@@ -130,7 +131,7 @@ cartography/driftdetect/shortcut.py,sha256=0AvX9vZGNRWeLiRqxU7eOOo77gcfufHx4IHZv
|
|
|
130
131
|
cartography/driftdetect/storage.py,sha256=xvDY4qn6jDhDpBvc8hFXXpbcYIbMNqkm3wX5LBf28u0,1549
|
|
131
132
|
cartography/driftdetect/util.py,sha256=Lqxv8QoFn3_3Fz18qCOjkjJ6yBwgrHjrxXmArBAEdkc,929
|
|
132
133
|
cartography/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
-
cartography/graph/cleanupbuilder.py,sha256=
|
|
134
|
+
cartography/graph/cleanupbuilder.py,sha256=T71aR_IVp4oLu5SQb1miwn9Is8tqg25JJm4SkEdZ-80,14542
|
|
134
135
|
cartography/graph/context.py,sha256=RGxGb8EnxowcqjR0nFF86baNhgRHeUF9wjIoFUoG8LU,1230
|
|
135
136
|
cartography/graph/job.py,sha256=5e1L6D3RCM2WgEgbm7CUeqEhMkgw-TEh2cl1-xmzlwQ,7739
|
|
136
137
|
cartography/graph/querybuilder.py,sha256=Pd_WVJtZB_vh9VR7cm9PAS5Fl4qW783Hvq5njW5XMxA,21814
|
|
@@ -145,37 +146,37 @@ cartography/intel/anthropic/users.py,sha256=8tE18LVlweG2BhdMPdicEw-_WCmFs5AR6cyF
|
|
|
145
146
|
cartography/intel/anthropic/util.py,sha256=m2OopxCC6chCwOxUXmc9nWW--nOlYyBL_Nc3Kd4CEwY,1847
|
|
146
147
|
cartography/intel/anthropic/workspaces.py,sha256=_t2kdGIFceDziC_BqIJa9-nLWIoWJbPoFNX1JYqbQ-w,2544
|
|
147
148
|
cartography/intel/aws/__init__.py,sha256=ZF59ftkFFnGKXxKvm0ONg3YNQGc38xhDxAH78DufoXE,12130
|
|
149
|
+
cartography/intel/aws/acm.py,sha256=a_i2pYPpocjlL8itwlcrmg8KrSLfjcmrkhcrPP-Omj8,3827
|
|
148
150
|
cartography/intel/aws/apigateway.py,sha256=hOYVSY70DbrEfhi9gkX7PAMtg9WiPE0Pbp2wqGes7Vs,12198
|
|
149
|
-
cartography/intel/aws/cloudtrail.py,sha256=
|
|
151
|
+
cartography/intel/aws/cloudtrail.py,sha256=kip3O39ulRmuo9RpfkofzUcGnkNnF8ksD7hP0Qe75-A,2441
|
|
150
152
|
cartography/intel/aws/cloudwatch.py,sha256=k9A8h__dE8N2LeF0o8lpJcNqNAaTCG1Ip3PgAF9mnlQ,2488
|
|
151
153
|
cartography/intel/aws/config.py,sha256=IIICicLQ0OTT3H3o8LDakIkA1BPUMwSyzpKonet-PaY,7658
|
|
152
154
|
cartography/intel/aws/dynamodb.py,sha256=VvvjeUgi1ZrqY9flXIQnfhhaSVSEqXXHW6T9917VLBk,5728
|
|
153
|
-
cartography/intel/aws/ecr.py,sha256=
|
|
155
|
+
cartography/intel/aws/ecr.py,sha256=7a9EHZru6AUIGE_6MJ4h4_ZmrvBxsXaerCHtGr59lJ0,8393
|
|
154
156
|
cartography/intel/aws/ecs.py,sha256=LRaVdu-6aFOoO8ctHJaJl5O1ieKAVUjGp-KGUAApn20,23965
|
|
155
|
-
cartography/intel/aws/efs.py,sha256=u5vOib8E5ZvWeMEzTIHLkczxLv-G4CERX5EAqlmOyqI,2486
|
|
156
157
|
cartography/intel/aws/eks.py,sha256=bPItyEj5q0nSDltJrr0S5MIrTPV0fK3xkqF6EV8fcqA,3759
|
|
157
158
|
cartography/intel/aws/elasticache.py,sha256=dpRJCYxgUW2ImgGMt4L54xFil8apUoJxZq6hpewXxAE,4590
|
|
158
159
|
cartography/intel/aws/elasticsearch.py,sha256=8X_Rp1zejkvXho0Zz_Cr4g-w9IpompdYRc-YS595Aso,8645
|
|
159
160
|
cartography/intel/aws/emr.py,sha256=EJoKjHQP7-F_A1trUNU05Sb42yNR1i0C9VIpGcCfAXw,3662
|
|
160
|
-
cartography/intel/aws/iam.py,sha256=
|
|
161
|
+
cartography/intel/aws/iam.py,sha256=bkyIzWw2OC4MHxuoCvTiZ5eEGEQhz2asiUgY_tkX2GY,34322
|
|
161
162
|
cartography/intel/aws/iam_instance_profiles.py,sha256=QUyu30xid60BFaemp-q0y9FgNsHaIQyQnQ8gHUzWC4k,2211
|
|
162
163
|
cartography/intel/aws/identitycenter.py,sha256=J5Qnt3FddWBrJUVvQDdhOZdOErri0tJ55VJu8C9fEiY,9212
|
|
163
164
|
cartography/intel/aws/inspector.py,sha256=oF-QLWN2Bt73YsuR5RW5wnPNnATkd4zUuLZumtZeO8c,9957
|
|
164
165
|
cartography/intel/aws/kms.py,sha256=RtCxNG-Den-f4Il-NO3YL_-BFUmg1qFt4lNucue9SQM,12130
|
|
165
|
-
cartography/intel/aws/lambda_function.py,sha256=
|
|
166
|
+
cartography/intel/aws/lambda_function.py,sha256=cutCsMnvyJB8vKUP0fHORrhijw944cXSoLKOHYdi6SM,10389
|
|
166
167
|
cartography/intel/aws/organizations.py,sha256=m5qk60N6pe7iKLN-Rtfg9aYv7OozoloSkcsuePd-RGs,4680
|
|
167
168
|
cartography/intel/aws/permission_relationships.py,sha256=LTmnHS6zk9hcdL548V5ka3Ey-6NsFjy1JYZTfRyB9Ys,15647
|
|
168
169
|
cartography/intel/aws/rds.py,sha256=mjGrn7ftpk_Xdm-jBdP-PXyGhtv3zAEpYDPs-SaKwiE,26542
|
|
169
170
|
cartography/intel/aws/redshift.py,sha256=FGcCzcnm1OOrbJvLqtR1DwWVn1pt4Y6_eKkTUERT7Ws,7108
|
|
170
171
|
cartography/intel/aws/resourcegroupstaggingapi.py,sha256=CebHaVLh8cr4CDYz54p5MGANPuE5Ni-_nFC78Znh4uU,10807
|
|
171
|
-
cartography/intel/aws/resources.py,sha256=
|
|
172
|
+
cartography/intel/aws/resources.py,sha256=UJ0J_akiGW2LTU6Nj4L6NMS0zgn34Z7EwGcHRcYRmZY,3971
|
|
172
173
|
cartography/intel/aws/route53.py,sha256=-AZDD4zVR5pQ_c1bx87UZuzbC0mDiI-YS_8llFMZkwI,14424
|
|
173
|
-
cartography/intel/aws/s3.py,sha256=
|
|
174
|
+
cartography/intel/aws/s3.py,sha256=Da_5NYvQ7MN1AIN7CK9XXlVZo0fPdNHkqBZY1JWnHH4,33598
|
|
174
175
|
cartography/intel/aws/s3accountpublicaccessblock.py,sha256=XkqHnbj9ODRcc7Rbl4swi03qvw_T-7Bnx3BHpTmlxio,4688
|
|
175
|
-
cartography/intel/aws/secretsmanager.py,sha256=
|
|
176
|
+
cartography/intel/aws/secretsmanager.py,sha256=TelS5Th0Yooj-cv243VHWu-xEadhfyP9x7B1sjPWDIM,7606
|
|
176
177
|
cartography/intel/aws/securityhub.py,sha256=oR808vrEAHsHH79u8hf-hkVTBcdNd6ZObCeNGD_xnSo,2324
|
|
177
178
|
cartography/intel/aws/sns.py,sha256=R92aSStNxr8Qu3iVFShSXeTBXOOkebiQMXNoQM9HjCc,4793
|
|
178
|
-
cartography/intel/aws/sqs.py,sha256=
|
|
179
|
+
cartography/intel/aws/sqs.py,sha256=RUR8chO1oU5esZbHzKyhOO4L7LXmH78G6kGGtUCqB5Q,4096
|
|
179
180
|
cartography/intel/aws/ssm.py,sha256=fHcx929my-Lb6fgJavyWLTBtPV6onaY7_GPnhKsv8hk,8173
|
|
180
181
|
cartography/intel/aws/ec2/__init__.py,sha256=Lh_keh8WH-GNxxT4-Gw5MNiZFhDHe2kr3AChPgELa9w,346
|
|
181
182
|
cartography/intel/aws/ec2/auto_scaling_groups.py,sha256=s2XP1HPEWYg752trj_bwH9kB5zsRORErD9VFqfU6c1s,9141
|
|
@@ -237,8 +238,9 @@ cartography/intel/duo/phones.py,sha256=3_MPXmR4ub4Jra0ISr6cKzC5z_Pvx7YhHojWeJJku
|
|
|
237
238
|
cartography/intel/duo/tokens.py,sha256=lVe0ByS3ncLA3FZXoqN8eLj_HMsl5s4uDT-uWlLJhSs,2407
|
|
238
239
|
cartography/intel/duo/users.py,sha256=e2eK716wVlO71O9Q9KrWZot2cHjHZ7KgC9ZW27pCDaI,4143
|
|
239
240
|
cartography/intel/duo/web_authn_credentials.py,sha256=mLWXdBe4V6fHCFotmtJmwhTSoOY6Hx87D3zI3hlL2nc,2656
|
|
240
|
-
cartography/intel/entra/__init__.py,sha256=
|
|
241
|
-
cartography/intel/entra/
|
|
241
|
+
cartography/intel/entra/__init__.py,sha256=oqdLlzQv9tYXn-BuKBlPmZ87ljl5MOih_REHM_L6mas,1972
|
|
242
|
+
cartography/intel/entra/groups.py,sha256=PiXW28jWv1zoAYsTy_6ntAUDdQWdO2-AZvH5BfGytvg,5026
|
|
243
|
+
cartography/intel/entra/ou.py,sha256=iv5UgRcPIaUZ8DdveKTmMkz0thEPYichpL9XntbHiPo,3803
|
|
242
244
|
cartography/intel/entra/users.py,sha256=Zk9k8A3XeE-ZgUhY9fwN7GYhzbguGE-nHNOm6kvOCpo,7557
|
|
243
245
|
cartography/intel/gcp/__init__.py,sha256=PtzheGqf2otRVmDe3Ai1n6JFq3_OtS2hmJrRfj8_BnQ,18896
|
|
244
246
|
cartography/intel/gcp/compute.py,sha256=BShmgIhv_9E4rYfDe2ER3XIWZmU1NJIyZWIAvZY0uh0,49805
|
|
@@ -311,6 +313,8 @@ cartography/intel/tailscale/postureintegrations.py,sha256=C75HPfJkWHqlcXjk81YYcS
|
|
|
311
313
|
cartography/intel/tailscale/tailnets.py,sha256=Ooc4XSOArWWFJoKykJDrk_tm2OKK1BHwfK_KEhckPp4,1679
|
|
312
314
|
cartography/intel/tailscale/users.py,sha256=kjHAdIVGUwx28RRQ0KwLsdsZT9L-HlfwTph9dis7grc,1820
|
|
313
315
|
cartography/intel/tailscale/utils.py,sha256=Xhwcb_31LWQy4MhoFWre_fX8gvddFVt13jjk5p0TPH4,4828
|
|
316
|
+
cartography/intel/trivy/__init__.py,sha256=hYroW2ewXRiTPYC7QqxFBaakUgk6j7U66bCSh8cgrGY,5277
|
|
317
|
+
cartography/intel/trivy/scanner.py,sha256=u9b5ORpVXaqR6owO6QXjNh9Nz1Vx1nn-rsYfcyrSlx8,12021
|
|
314
318
|
cartography/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
315
319
|
cartography/models/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
316
320
|
cartography/models/anthropic/apikey.py,sha256=eDaaXBHkZtRrKCDgeBD5BYR4jVUH-5QTi7Ji9uEpd-0,3578
|
|
@@ -323,8 +327,10 @@ cartography/models/aws/apigatewaycertificate.py,sha256=vFKip_EeOws3Ke-77xI6eyUMD
|
|
|
323
327
|
cartography/models/aws/apigatewayresource.py,sha256=iyri4znJo1pgAAe4xBs-eoE5dHK8fEsg6-5OusdvwE0,2856
|
|
324
328
|
cartography/models/aws/apigatewaystage.py,sha256=d3m82TH4ggC--0HdE3SG7n-Uwm5Gu9eZMRT23h7a2as,3179
|
|
325
329
|
cartography/models/aws/emr.py,sha256=iZPzyqFrDsyRSRZqjCHlyDkO91H__6iszJq5hkNpOLU,3071
|
|
330
|
+
cartography/models/aws/acm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
331
|
+
cartography/models/aws/acm/certificate.py,sha256=GvB7xKBCoPmLsV9LnqAUg8x8sGTsDDsr7WIaqh4Sc-M,3141
|
|
326
332
|
cartography/models/aws/cloudtrail/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
327
|
-
cartography/models/aws/cloudtrail/trail.py,sha256=
|
|
333
|
+
cartography/models/aws/cloudtrail/trail.py,sha256=qQnpqFypKef8E7-JOR83euAtI6_j2KdjzGGFiQa6xkA,3676
|
|
328
334
|
cartography/models/aws/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
329
335
|
cartography/models/aws/cloudwatch/loggroup.py,sha256=_MRpRvU_Vg2rVlUdzfae6vOpbpmYaYE1EVN5zWucFbE,2456
|
|
330
336
|
cartography/models/aws/dynamodb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -356,8 +362,6 @@ cartography/models/aws/ec2/securitygroup_networkinterface.py,sha256=2MBxYXxuq_L0
|
|
|
356
362
|
cartography/models/aws/ec2/subnet_instance.py,sha256=gAw2TJIlBnBNWn83l60N_Pi5Ni4oNe2lbZpg-u39BU8,2818
|
|
357
363
|
cartography/models/aws/ec2/subnet_networkinterface.py,sha256=YCfribtM4gEIb2Jan3xoBZke_IeNnejB95unfnIrX3Y,3739
|
|
358
364
|
cartography/models/aws/ec2/volumes.py,sha256=ITSJ_1HgrU5wTF1zZV8sYRZsI0QzktoHkvTgpnfM1hI,4547
|
|
359
|
-
cartography/models/aws/efs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
360
|
-
cartography/models/aws/efs/mount_target.py,sha256=GRV5wcVcg6D-UTntFaD54G3_YLP8sLTq4SVB-Zz1Iqk,2376
|
|
361
365
|
cartography/models/aws/eks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
362
366
|
cartography/models/aws/eks/clusters.py,sha256=OthI554MrYNSl-p6ArMJsSH43xKPRDSnEmvJEmXwLeU,2327
|
|
363
367
|
cartography/models/aws/iam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -371,10 +375,13 @@ cartography/models/aws/inspector/findings.py,sha256=z6fVygv8rmlYB1huX64jDgrCEjoT
|
|
|
371
375
|
cartography/models/aws/inspector/packages.py,sha256=4TWu9EiS8aOR-n5z0FqG7564t-GKS4zrD4THX_2NKRo,3348
|
|
372
376
|
cartography/models/aws/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
373
377
|
cartography/models/aws/s3/account_public_access_block.py,sha256=L6AS0OncfSOWHP4pOXshnJFDPwnWqywzUIeUppJcw-Q,2256
|
|
378
|
+
cartography/models/aws/s3/notification.py,sha256=SF1VvCP_2WVh8K29d4ms8MUcg9AyO_MN8vCgzLFlGAs,1017
|
|
374
379
|
cartography/models/aws/secretsmanager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
375
|
-
cartography/models/aws/secretsmanager/secret_version.py,sha256=
|
|
380
|
+
cartography/models/aws/secretsmanager/secret_version.py,sha256=Ah4b9BjgL24MhmxRV-HarvmNs_uCRNVMkxgvzIEp9uk,4167
|
|
376
381
|
cartography/models/aws/sns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
377
382
|
cartography/models/aws/sns/topic.py,sha256=_Lcu7_c_UCUcPKEo5-kCdX3fAOkar_YKZbLmonX3BR8,2349
|
|
383
|
+
cartography/models/aws/sqs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
384
|
+
cartography/models/aws/sqs/queue.py,sha256=ELSbeeYXotmzku6KAeDt2i1qMTUsV4tOIVA5JaPgXEE,3992
|
|
378
385
|
cartography/models/aws/ssm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
379
386
|
cartography/models/aws/ssm/instance_information.py,sha256=URlqoum2ZSKrd2BYgqFRwqJxW8mdgzjNhlvzM02v2_4,4149
|
|
380
387
|
cartography/models/aws/ssm/instance_patch.py,sha256=03eHkwLaCXDv5LR9yJXH8DYfUYH6O6uZcGtaI9PV5B0,3158
|
|
@@ -390,7 +397,7 @@ cartography/models/cloudflare/role.py,sha256=HRjDoLMSs0YJlJosZsXEZV58OE_3vGAWSDN
|
|
|
390
397
|
cartography/models/cloudflare/zone.py,sha256=uMHTSHq32eWe47k3b08sbnQBLrbNWPKpL9Osc4jcFD0,2805
|
|
391
398
|
cartography/models/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
392
399
|
cartography/models/core/common.py,sha256=O8hF-kNdQ5-1NGKJuX5fcOcHf4kDYYc1b9tndPCcwUU,6202
|
|
393
|
-
cartography/models/core/nodes.py,sha256=
|
|
400
|
+
cartography/models/core/nodes.py,sha256=GFK-optqan5L57D36ZQ7AdylGRELUl9pMyBfZ7l-cz4,4367
|
|
394
401
|
cartography/models/core/relationships.py,sha256=_ph52obhjeqc67IZ_rwuAtIbBqMHtKb04ceCP6g4Q04,5151
|
|
395
402
|
cartography/models/crowdstrike/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
396
403
|
cartography/models/crowdstrike/hosts.py,sha256=J4UpdsVUNiQXqxnvmWdVkwsFueVagPV-7sTV3D7Lkts,2686
|
|
@@ -410,6 +417,7 @@ cartography/models/duo/token.py,sha256=WTV7Lv-_X1HH_tmyiK0dC0zfwkaHyXcHWH6XDPThv
|
|
|
410
417
|
cartography/models/duo/user.py,sha256=Yqc4BUZ8DlFrYtJwHYn-QtID_T5Plc7TkQvJ3Wq8PsI,6570
|
|
411
418
|
cartography/models/duo/web_authn_credential.py,sha256=nCdonZFyShuE5-CnI2Vxiu5BZ07TWJ5dZ7wx2Oe-0QE,2993
|
|
412
419
|
cartography/models/entra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
420
|
+
cartography/models/entra/group.py,sha256=d8QLBzqje4MkdN2uC4LXSxjUQ8_2T_cv4YbrPGfZ994,3809
|
|
413
421
|
cartography/models/entra/ou.py,sha256=YmtW1Cp_XX29uzbunhEGl073AzV6PZsQtLs_MR-ACNU,2056
|
|
414
422
|
cartography/models/entra/tenant.py,sha256=abpNTvOtXHgdrU-y7q6jt--odcq1eRsT2j5nMdVy_Gw,1793
|
|
415
423
|
cartography/models/entra/user.py,sha256=YExHNKhHHhnwal0O12OCpvtdjcED5RONdBjMpPeMDBw,4877
|
|
@@ -447,9 +455,13 @@ cartography/models/tailscale/postureintegration.py,sha256=nwyzYoCZn9PPaChVxCL7ib
|
|
|
447
455
|
cartography/models/tailscale/tag.py,sha256=7a8SidgsBI8f_ZzoHo3NPAA83JSXgS785VxlDeU2cBs,3955
|
|
448
456
|
cartography/models/tailscale/tailnet.py,sha256=QE7Wl_JEthqZbfUK9fgURERnd91i-a3VIchxi6H7Css,1341
|
|
449
457
|
cartography/models/tailscale/user.py,sha256=i3skB3IYQgRSuHkP3SUWEyv3QnyPwnXjdBUkhwQBWko,2299
|
|
450
|
-
cartography
|
|
451
|
-
cartography
|
|
452
|
-
cartography
|
|
453
|
-
cartography
|
|
454
|
-
cartography-0.
|
|
455
|
-
cartography-0.
|
|
458
|
+
cartography/models/trivy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
459
|
+
cartography/models/trivy/findings.py,sha256=SgI_h1aRyR20uAHvuXIZ1T6r4IZJt6SVhxRaF2bTsm0,3085
|
|
460
|
+
cartography/models/trivy/fix.py,sha256=ho9ENVl9HSXqyggyCwR6ilkOBKDxpQ7rGibo_j21NA4,2587
|
|
461
|
+
cartography/models/trivy/package.py,sha256=IwO1RZZ-MFRtNbt8Cq6YFl6fdNJMFmULnJkkK8Q4rL4,2809
|
|
462
|
+
cartography-0.105.0.dist-info/licenses/LICENSE,sha256=kvLEBRYaQ1RvUni6y7Ti9uHeooqnjPoo6n_-0JO1ETc,11351
|
|
463
|
+
cartography-0.105.0.dist-info/METADATA,sha256=6qMEpGPsSOaFa8c_lkpHqsgNEtnlGst6SLyMrxsrJ9M,12406
|
|
464
|
+
cartography-0.105.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
465
|
+
cartography-0.105.0.dist-info/entry_points.txt,sha256=GVIAWD0o0_K077qMA_k1oZU4v-M0a8GLKGJR8tZ-qH8,112
|
|
466
|
+
cartography-0.105.0.dist-info/top_level.txt,sha256=BHqsNJQiI6Q72DeypC1IINQJE59SLhU4nllbQjgJi9g,12
|
|
467
|
+
cartography-0.105.0.dist-info/RECORD,,
|
cartography/intel/aws/efs.py
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
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.intel.aws.ec2.util import get_botocore_config
|
|
12
|
-
from cartography.models.aws.efs.mount_target import EfsMountTargetSchema
|
|
13
|
-
from cartography.util import aws_handle_regions
|
|
14
|
-
from cartography.util import timeit
|
|
15
|
-
|
|
16
|
-
logger = logging.getLogger(__name__)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@timeit
|
|
20
|
-
@aws_handle_regions
|
|
21
|
-
def get_efs_mount_targets(
|
|
22
|
-
boto3_session: boto3.Session, region: str
|
|
23
|
-
) -> List[Dict[str, Any]]:
|
|
24
|
-
client = boto3_session.client(
|
|
25
|
-
"efs", region_name=region, config=get_botocore_config()
|
|
26
|
-
)
|
|
27
|
-
paginator = client.get_paginator("describe_mount_targets")
|
|
28
|
-
mountTargets = []
|
|
29
|
-
for page in paginator.paginate():
|
|
30
|
-
mountTargets.extend(page["MountTargets"])
|
|
31
|
-
return mountTargets
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@timeit
|
|
35
|
-
def load_efs_mount_targets(
|
|
36
|
-
neo4j_session: neo4j.Session,
|
|
37
|
-
data: List[Dict[str, Any]],
|
|
38
|
-
region: str,
|
|
39
|
-
current_aws_account_id: str,
|
|
40
|
-
aws_update_tag: int,
|
|
41
|
-
) -> None:
|
|
42
|
-
logger.info(
|
|
43
|
-
f"Loading Efs {len(data)} mount targets for region '{region}' into graph.",
|
|
44
|
-
)
|
|
45
|
-
load(
|
|
46
|
-
neo4j_session,
|
|
47
|
-
EfsMountTargetSchema(),
|
|
48
|
-
data,
|
|
49
|
-
lastupdated=aws_update_tag,
|
|
50
|
-
Region=region,
|
|
51
|
-
AWS_ID=current_aws_account_id,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
@timeit
|
|
56
|
-
def cleanup(
|
|
57
|
-
neo4j_session: neo4j.Session,
|
|
58
|
-
common_job_parameters: Dict[str, Any],
|
|
59
|
-
) -> None:
|
|
60
|
-
logger.debug("Running Efs cleanup job.")
|
|
61
|
-
cleanup_job = GraphJob.from_node_schema(
|
|
62
|
-
EfsMountTargetSchema(), common_job_parameters
|
|
63
|
-
)
|
|
64
|
-
cleanup_job.run(neo4j_session)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@timeit
|
|
68
|
-
def sync(
|
|
69
|
-
neo4j_session: neo4j.Session,
|
|
70
|
-
boto3_session: boto3.session.Session,
|
|
71
|
-
regions: List[str],
|
|
72
|
-
current_aws_account_id: str,
|
|
73
|
-
update_tag: int,
|
|
74
|
-
common_job_parameters: Dict[str, Any],
|
|
75
|
-
) -> None:
|
|
76
|
-
for region in regions:
|
|
77
|
-
logger.info(
|
|
78
|
-
f"Syncing Efs for region '{region}' in account '{current_aws_account_id}'.",
|
|
79
|
-
)
|
|
80
|
-
mountTargets = get_efs_mount_targets(boto3_session, region)
|
|
81
|
-
mount_target_data: List[Dict[str, Any]] = []
|
|
82
|
-
for mountTarget in mountTargets:
|
|
83
|
-
mount_target_data.append(mountTarget)
|
|
84
|
-
|
|
85
|
-
load_efs_mount_targets(
|
|
86
|
-
neo4j_session,
|
|
87
|
-
mount_target_data,
|
|
88
|
-
region,
|
|
89
|
-
current_aws_account_id,
|
|
90
|
-
update_tag,
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
cleanup(neo4j_session, common_job_parameters)
|