cartography 0.95.0__py3-none-any.whl → 0.96.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/cli.py +15 -0
- cartography/client/core/tx.py +1 -1
- cartography/config.py +6 -2
- cartography/data/indexes.cypher +1 -2
- cartography/data/jobs/cleanup/aws_import_identity_center_cleanup.json +16 -0
- cartography/data/jobs/cleanup/{github_users_cleanup.json → github_org_and_users_cleanup.json} +5 -0
- cartography/data/jobs/cleanup/github_repos_cleanup.json +25 -0
- cartography/graph/querybuilder.py +4 -0
- cartography/intel/aws/apigateway.py +3 -3
- cartography/intel/aws/ec2/auto_scaling_groups.py +147 -185
- cartography/intel/aws/ec2/instances.py +2 -0
- cartography/intel/aws/ec2/network_acls.py +209 -0
- cartography/intel/aws/ec2/subnets.py +2 -0
- cartography/intel/aws/iam.py +4 -3
- cartography/intel/aws/identitycenter.py +307 -0
- cartography/intel/aws/resources.py +4 -0
- cartography/intel/cve/__init__.py +1 -1
- cartography/intel/cve/feed.py +10 -7
- cartography/intel/github/repos.py +176 -27
- cartography/intel/github/users.py +156 -39
- cartography/intel/okta/users.py +2 -1
- cartography/intel/semgrep/__init__.py +1 -1
- cartography/intel/semgrep/dependencies.py +54 -22
- cartography/models/aws/ec2/auto_scaling_groups.py +204 -0
- cartography/models/aws/ec2/launch_configurations.py +55 -0
- cartography/models/aws/ec2/network_acl_rules.py +98 -0
- cartography/models/aws/ec2/network_acls.py +86 -0
- cartography/models/aws/identitycenter/__init__.py +0 -0
- cartography/models/aws/identitycenter/awsidentitycenter.py +44 -0
- cartography/models/aws/identitycenter/awspermissionset.py +84 -0
- cartography/models/aws/identitycenter/awsssouser.py +68 -0
- cartography/models/core/common.py +18 -1
- cartography/models/github/orgs.py +26 -0
- cartography/models/github/users.py +119 -0
- cartography/models/semgrep/dependencies.py +13 -0
- cartography-0.96.0.dist-info/METADATA +53 -0
- {cartography-0.95.0.dist-info → cartography-0.96.0.dist-info}/RECORD +41 -28
- {cartography-0.95.0.dist-info → cartography-0.96.0.dist-info}/WHEEL +1 -1
- cartography-0.95.0.dist-info/METADATA +0 -53
- {cartography-0.95.0.dist-info → cartography-0.96.0.dist-info}/LICENSE +0 -0
- {cartography-0.95.0.dist-info → cartography-0.96.0.dist-info}/entry_points.txt +0 -0
- {cartography-0.95.0.dist-info → cartography-0.96.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
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 PermissionSetProperties(CartographyNodeProperties):
|
|
16
|
+
id: PropertyRef = PropertyRef('PermissionSetArn')
|
|
17
|
+
name: PropertyRef = PropertyRef('Name')
|
|
18
|
+
arn: PropertyRef = PropertyRef('PermissionSetArn')
|
|
19
|
+
description: PropertyRef = PropertyRef('Description')
|
|
20
|
+
session_duration: PropertyRef = PropertyRef('SessionDuration')
|
|
21
|
+
instance_arn: PropertyRef = PropertyRef('InstanceArn', set_in_kwargs=True)
|
|
22
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass(frozen=True)
|
|
26
|
+
class PermissionSetToInstanceRelProperties(CartographyRelProperties):
|
|
27
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@dataclass(frozen=True)
|
|
31
|
+
class PermissionSetToInstance(CartographyRelSchema):
|
|
32
|
+
target_node_label: str = 'AWSIdentityCenter'
|
|
33
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
34
|
+
{'arn': PropertyRef('InstanceArn', set_in_kwargs=True)},
|
|
35
|
+
)
|
|
36
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
37
|
+
rel_label: str = "HAS_PERMISSION_SET"
|
|
38
|
+
properties: PermissionSetToInstanceRelProperties = PermissionSetToInstanceRelProperties()
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclass(frozen=True)
|
|
42
|
+
class PermissionSetToAWSRoleRelProperties(CartographyRelProperties):
|
|
43
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass(frozen=True)
|
|
47
|
+
class PermissionSetToAWSRole(CartographyRelSchema):
|
|
48
|
+
target_node_label: str = 'AWSRole'
|
|
49
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
50
|
+
{'arn': PropertyRef('RoleHint', fuzzy_and_ignore_case=True)},
|
|
51
|
+
)
|
|
52
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
53
|
+
rel_label: str = "ASSIGNED_TO_ROLE"
|
|
54
|
+
properties: PermissionSetToAWSRoleRelProperties = PermissionSetToAWSRoleRelProperties()
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@dataclass(frozen=True)
|
|
58
|
+
class AWSPermissionSetToAwsAccountRelProperties(CartographyRelProperties):
|
|
59
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@dataclass(frozen=True)
|
|
63
|
+
# (:IdentityCenter)<-[:RESOURCE]-(:AWSAccount)
|
|
64
|
+
class AWSPermissionSetToAWSAccount(CartographyRelSchema):
|
|
65
|
+
target_node_label: str = 'AWSAccount'
|
|
66
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
67
|
+
{'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
|
|
68
|
+
)
|
|
69
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
70
|
+
rel_label: str = "RESOURCE"
|
|
71
|
+
properties: AWSPermissionSetToAwsAccountRelProperties = AWSPermissionSetToAwsAccountRelProperties()
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@dataclass(frozen=True)
|
|
75
|
+
class AWSPermissionSetSchema(CartographyNodeSchema):
|
|
76
|
+
label: str = 'AWSPermissionSet'
|
|
77
|
+
properties: PermissionSetProperties = PermissionSetProperties()
|
|
78
|
+
sub_resource_relationship: AWSPermissionSetToAWSAccount = AWSPermissionSetToAWSAccount()
|
|
79
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
80
|
+
[
|
|
81
|
+
PermissionSetToInstance(),
|
|
82
|
+
PermissionSetToAWSRole(),
|
|
83
|
+
],
|
|
84
|
+
)
|
|
@@ -0,0 +1,68 @@
|
|
|
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 SSOUserProperties(CartographyNodeProperties):
|
|
17
|
+
id: PropertyRef = PropertyRef('UserId', extra_index=True)
|
|
18
|
+
user_name: PropertyRef = PropertyRef('UserName')
|
|
19
|
+
identity_store_id: PropertyRef = PropertyRef('IdentityStoreId')
|
|
20
|
+
external_id: PropertyRef = PropertyRef('ExternalId', extra_index=True)
|
|
21
|
+
region: PropertyRef = PropertyRef('Region')
|
|
22
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass(frozen=True)
|
|
26
|
+
class SSOUserToOktaUserRelProperties(CartographyRelProperties):
|
|
27
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@dataclass(frozen=True)
|
|
31
|
+
class SSOUserToOktaUser(CartographyRelSchema):
|
|
32
|
+
target_node_label: str = 'UserAccount'
|
|
33
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
34
|
+
{'id': PropertyRef('ExternalId')},
|
|
35
|
+
)
|
|
36
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
37
|
+
rel_label: str = "CAN_ASSUME_IDENTITY"
|
|
38
|
+
properties: SSOUserToOktaUserRelProperties = SSOUserToOktaUserRelProperties()
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclass(frozen=True)
|
|
42
|
+
class AWSSSOUserToAwsAccountRelProperties(CartographyRelProperties):
|
|
43
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass(frozen=True)
|
|
47
|
+
# (:IdentityCenter)<-[:RESOURCE]-(:AWSAccount)
|
|
48
|
+
class AWSSSOUserToAWSAccount(CartographyRelSchema):
|
|
49
|
+
target_node_label: str = 'AWSAccount'
|
|
50
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
51
|
+
{'id': PropertyRef('AWS_ID', set_in_kwargs=True)},
|
|
52
|
+
)
|
|
53
|
+
direction: LinkDirection = LinkDirection.INWARD
|
|
54
|
+
rel_label: str = "RESOURCE"
|
|
55
|
+
properties: AWSSSOUserToAwsAccountRelProperties = AWSSSOUserToAwsAccountRelProperties()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass(frozen=True)
|
|
59
|
+
class AWSSSOUserSchema(CartographyNodeSchema):
|
|
60
|
+
label: str = 'AWSSSOUser'
|
|
61
|
+
properties: SSOUserProperties = SSOUserProperties()
|
|
62
|
+
extra_node_labels: ExtraNodeLabels = ExtraNodeLabels(["UserAccount"])
|
|
63
|
+
sub_resource_relationship: AWSSSOUserToAWSAccount = AWSSSOUserToAWSAccount()
|
|
64
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
65
|
+
[
|
|
66
|
+
SSOUserToOktaUser(),
|
|
67
|
+
],
|
|
68
|
+
)
|
|
@@ -8,7 +8,14 @@ class PropertyRef:
|
|
|
8
8
|
(PropertyRef.set_in_kwargs=True).
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
def __init__(
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
name: str,
|
|
14
|
+
set_in_kwargs=False,
|
|
15
|
+
extra_index=False,
|
|
16
|
+
ignore_case=False,
|
|
17
|
+
fuzzy_and_ignore_case=False,
|
|
18
|
+
):
|
|
12
19
|
"""
|
|
13
20
|
:param name: The name of the property
|
|
14
21
|
:param set_in_kwargs: Optional. If True, the property is not defined on the data dict, and we expect to find the
|
|
@@ -33,11 +40,21 @@ class PropertyRef:
|
|
|
33
40
|
cartography catalog of GitHubUser nodes. Therefore, you would need `ignore_case=True` in the PropertyRef
|
|
34
41
|
that points to the GitHubUser node's name field, otherwise if one of your employees' GitHub usernames
|
|
35
42
|
contains capital letters, you would not be able to map them properly to a GitHubUser node in your graph.
|
|
43
|
+
:param fuzzy_and_ignore_case: If True, performs a fuzzy + case-insensitive match when comparing the value of
|
|
44
|
+
this property using the `CONTAINS` operator.
|
|
45
|
+
query. Defaults to False. This only has effect as part of a TargetNodeMatcher and is not supported for the
|
|
46
|
+
sub resource relationship.
|
|
36
47
|
"""
|
|
37
48
|
self.name = name
|
|
38
49
|
self.set_in_kwargs = set_in_kwargs
|
|
39
50
|
self.extra_index = extra_index
|
|
40
51
|
self.ignore_case = ignore_case
|
|
52
|
+
self.fuzzy_and_ignore_case = fuzzy_and_ignore_case
|
|
53
|
+
if self.fuzzy_and_ignore_case and self.ignore_case:
|
|
54
|
+
raise ValueError(
|
|
55
|
+
f'Error setting PropertyRef "{self.name}": ignore_case cannot be used together with'
|
|
56
|
+
'fuzzy_and_ignore_case. Pick one or the other.',
|
|
57
|
+
)
|
|
41
58
|
|
|
42
59
|
def _parameterize_name(self) -> str:
|
|
43
60
|
return f"${self.name}"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This schema does not handle the org's relationships. Those are handled by other schemas, for example:
|
|
3
|
+
* GitHubTeamSchema defines (GitHubOrganization)-[RESOURCE]->(GitHubTeam)
|
|
4
|
+
* GitHubUserSchema defines (GitHubUser)-[MEMBER_OF|UNAFFILIATED]->(GitHubOrganization)
|
|
5
|
+
(There may be others, these are just two examples.)
|
|
6
|
+
"""
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
|
|
9
|
+
from cartography.models.core.common import PropertyRef
|
|
10
|
+
from cartography.models.core.nodes import CartographyNodeProperties
|
|
11
|
+
from cartography.models.core.nodes import CartographyNodeSchema
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True)
|
|
15
|
+
class GitHubOrganizationNodeProperties(CartographyNodeProperties):
|
|
16
|
+
id: PropertyRef = PropertyRef('url')
|
|
17
|
+
username: PropertyRef = PropertyRef('login', extra_index=True)
|
|
18
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass(frozen=True)
|
|
22
|
+
class GitHubOrganizationSchema(CartographyNodeSchema):
|
|
23
|
+
label: str = 'GitHubOrganization'
|
|
24
|
+
properties: GitHubOrganizationNodeProperties = GitHubOrganizationNodeProperties()
|
|
25
|
+
other_relationships = None
|
|
26
|
+
sub_resource_relationship = None
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""
|
|
2
|
+
RE: Tenant relationship between GitHubUser and GitHubOrganization
|
|
3
|
+
|
|
4
|
+
Note this relationship is implemented via 'other_relationships' and not via the 'sub_resource_relationship'
|
|
5
|
+
as might be expected.
|
|
6
|
+
|
|
7
|
+
The 'sub_resource_relationship' typically describes the relationship of a node to its tenant (the org, project, or
|
|
8
|
+
other resource to which other nodes belong). An assumption of that relationship is that if the tenant goes
|
|
9
|
+
away, all nodes related to it should be cleaned up.
|
|
10
|
+
|
|
11
|
+
In GitHub, though the GitHubUser's tenant seems to be GitHubOrganization, users actually exist independently. There
|
|
12
|
+
is a concept of 'UNAFFILIATED' users (https://docs.github.com/en/graphql/reference/enums#roleinorganization) like
|
|
13
|
+
Enterprise Owners who are related to an org even if they are not direct members of it. You would not want them to be
|
|
14
|
+
cleaned up, if an org goes away, and you could want them in your graph even if they are not members of any org in
|
|
15
|
+
the enterprise.
|
|
16
|
+
|
|
17
|
+
To allow for this in the schema, this relationship is treated as any other node-to-node relationship, via
|
|
18
|
+
'other_relationships', instead of as the typical 'sub_resource_relationship'.
|
|
19
|
+
|
|
20
|
+
RE: GitHubOrganizationUserSchema vs GitHubUnaffiliatedUserSchema
|
|
21
|
+
|
|
22
|
+
As noted above, there are implicitly two types of users, those that are part of, or affiliated, to a target
|
|
23
|
+
GitHubOrganization, and those thare are not part, or unaffiliated. Both are represented as GitHubUser nodes,
|
|
24
|
+
but there are two schemas below to allow for some differences between them, e.g., unaffiliated lack these properties:
|
|
25
|
+
* the 'role' property, because unaffiliated have no 'role' in the target org
|
|
26
|
+
* the 'has_2fa_enabled' property, because the GitHub api does not return it, for these users
|
|
27
|
+
The main importance of having two schemas is to allow the two sets of users to be loaded separately. If we are loading
|
|
28
|
+
an unaffiliated user, but the user already exists in the graph (perhaps they are members of another GitHub orgs for
|
|
29
|
+
example), then loading the unaffiliated user will not blank out the 'role' and 'has_2fa_enabled' properties.
|
|
30
|
+
"""
|
|
31
|
+
from dataclasses import dataclass
|
|
32
|
+
|
|
33
|
+
from cartography.models.core.common import PropertyRef
|
|
34
|
+
from cartography.models.core.nodes import CartographyNodeProperties
|
|
35
|
+
from cartography.models.core.nodes import CartographyNodeSchema
|
|
36
|
+
from cartography.models.core.relationships import CartographyRelProperties
|
|
37
|
+
from cartography.models.core.relationships import CartographyRelSchema
|
|
38
|
+
from cartography.models.core.relationships import LinkDirection
|
|
39
|
+
from cartography.models.core.relationships import make_target_node_matcher
|
|
40
|
+
from cartography.models.core.relationships import OtherRelationships
|
|
41
|
+
from cartography.models.core.relationships import TargetNodeMatcher
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@dataclass(frozen=True)
|
|
45
|
+
class BaseGitHubUserNodeProperties(CartographyNodeProperties):
|
|
46
|
+
# core properties in all GitHubUser nodes
|
|
47
|
+
id: PropertyRef = PropertyRef('url')
|
|
48
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
49
|
+
fullname: PropertyRef = PropertyRef('name')
|
|
50
|
+
username: PropertyRef = PropertyRef('login', extra_index=True)
|
|
51
|
+
is_site_admin: PropertyRef = PropertyRef('isSiteAdmin')
|
|
52
|
+
is_enterprise_owner: PropertyRef = PropertyRef('isEnterpriseOwner')
|
|
53
|
+
email: PropertyRef = PropertyRef('email')
|
|
54
|
+
company: PropertyRef = PropertyRef('company')
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@dataclass(frozen=True)
|
|
58
|
+
class GitHubOrganizationUserNodeProperties(BaseGitHubUserNodeProperties):
|
|
59
|
+
# specified for affiliated users only. The GitHub api does not return this property for unaffiliated users.
|
|
60
|
+
has_2fa_enabled: PropertyRef = PropertyRef('hasTwoFactorEnabled')
|
|
61
|
+
# specified for affiliated uers only. Unaffiliated users do not have a 'role' in the target organization.
|
|
62
|
+
role: PropertyRef = PropertyRef('role')
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@dataclass(frozen=True)
|
|
66
|
+
class GitHubUnaffiliatedUserNodeProperties(BaseGitHubUserNodeProperties):
|
|
67
|
+
# No additional properties needed
|
|
68
|
+
pass
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@dataclass(frozen=True)
|
|
72
|
+
class GitHubUserToOrganizationRelProperties(CartographyRelProperties):
|
|
73
|
+
lastupdated: PropertyRef = PropertyRef('lastupdated', set_in_kwargs=True)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@dataclass(frozen=True)
|
|
77
|
+
class GitHubUserMemberOfOrganizationRel(CartographyRelSchema):
|
|
78
|
+
target_node_label: str = 'GitHubOrganization'
|
|
79
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
80
|
+
{'id': PropertyRef('MEMBER_OF')},
|
|
81
|
+
)
|
|
82
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
83
|
+
rel_label: str = "MEMBER_OF"
|
|
84
|
+
properties: GitHubUserToOrganizationRelProperties = GitHubUserToOrganizationRelProperties()
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@dataclass(frozen=True)
|
|
88
|
+
class GitHubUserUnaffiliatedOrganizationRel(CartographyRelSchema):
|
|
89
|
+
target_node_label: str = 'GitHubOrganization'
|
|
90
|
+
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
|
|
91
|
+
{'id': PropertyRef('UNAFFILIATED')},
|
|
92
|
+
)
|
|
93
|
+
direction: LinkDirection = LinkDirection.OUTWARD
|
|
94
|
+
rel_label: str = "UNAFFILIATED"
|
|
95
|
+
properties: GitHubUserToOrganizationRelProperties = GitHubUserToOrganizationRelProperties()
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@dataclass(frozen=True)
|
|
99
|
+
class GitHubOrganizationUserSchema(CartographyNodeSchema):
|
|
100
|
+
label: str = 'GitHubUser'
|
|
101
|
+
properties: GitHubOrganizationUserNodeProperties = GitHubOrganizationUserNodeProperties()
|
|
102
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
103
|
+
[
|
|
104
|
+
GitHubUserMemberOfOrganizationRel(),
|
|
105
|
+
],
|
|
106
|
+
)
|
|
107
|
+
sub_resource_relationship = None
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@dataclass(frozen=True)
|
|
111
|
+
class GitHubUnaffiliatedUserSchema(CartographyNodeSchema):
|
|
112
|
+
label: str = 'GitHubUser'
|
|
113
|
+
properties: GitHubUnaffiliatedUserNodeProperties = GitHubUnaffiliatedUserNodeProperties()
|
|
114
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
115
|
+
[
|
|
116
|
+
GitHubUserUnaffiliatedOrganizationRel(),
|
|
117
|
+
],
|
|
118
|
+
)
|
|
119
|
+
sub_resource_relationship = None
|
|
@@ -75,3 +75,16 @@ class SemgrepGoLibrarySchema(CartographyNodeSchema):
|
|
|
75
75
|
SemgrepDependencyToGithubRepoRel(),
|
|
76
76
|
],
|
|
77
77
|
)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@dataclass(frozen=True)
|
|
81
|
+
class SemgrepNpmLibrarySchema(CartographyNodeSchema):
|
|
82
|
+
label: str = 'NpmLibrary'
|
|
83
|
+
extra_node_labels: Optional[ExtraNodeLabels] = ExtraNodeLabels(['Dependency', 'SemgrepDependency'])
|
|
84
|
+
properties: SemgrepDependencyNodeProperties = SemgrepDependencyNodeProperties()
|
|
85
|
+
sub_resource_relationship: SemgrepDependencyToSemgrepDeploymentSchema = SemgrepDependencyToSemgrepDeploymentSchema()
|
|
86
|
+
other_relationships: OtherRelationships = OtherRelationships(
|
|
87
|
+
[
|
|
88
|
+
SemgrepDependencyToGithubRepoRel(),
|
|
89
|
+
],
|
|
90
|
+
)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: cartography
|
|
3
|
+
Version: 0.96.0
|
|
4
|
+
Summary: Explore assets and their relationships across your technical infrastructure.
|
|
5
|
+
Home-page: https://www.github.com/cartography-cncf/cartography
|
|
6
|
+
Maintainer: Cartography Contributors
|
|
7
|
+
License: apache2
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Natural Language :: English
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Topic :: Security
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: backoff>=2.1.2
|
|
21
|
+
Requires-Dist: boto3>=1.15.1
|
|
22
|
+
Requires-Dist: botocore>=1.18.1
|
|
23
|
+
Requires-Dist: dnspython>=1.15.0
|
|
24
|
+
Requires-Dist: neo4j<5.0.0,>=4.4.4
|
|
25
|
+
Requires-Dist: policyuniverse>=1.1.0.0
|
|
26
|
+
Requires-Dist: google-api-python-client>=1.7.8
|
|
27
|
+
Requires-Dist: oauth2client>=4.1.3
|
|
28
|
+
Requires-Dist: marshmallow>=3.0.0rc7
|
|
29
|
+
Requires-Dist: oci>=2.71.0
|
|
30
|
+
Requires-Dist: okta<1.0.0
|
|
31
|
+
Requires-Dist: pyyaml>=5.3.1
|
|
32
|
+
Requires-Dist: requests>=2.22.0
|
|
33
|
+
Requires-Dist: statsd
|
|
34
|
+
Requires-Dist: packaging
|
|
35
|
+
Requires-Dist: python-digitalocean>=1.16.0
|
|
36
|
+
Requires-Dist: adal>=1.2.4
|
|
37
|
+
Requires-Dist: azure-cli-core>=2.26.0
|
|
38
|
+
Requires-Dist: azure-mgmt-compute>=5.0.0
|
|
39
|
+
Requires-Dist: azure-mgmt-resource>=10.2.0
|
|
40
|
+
Requires-Dist: azure-mgmt-cosmosdb>=6.0.0
|
|
41
|
+
Requires-Dist: msrestazure>=0.6.4
|
|
42
|
+
Requires-Dist: azure-mgmt-storage>=16.0.0
|
|
43
|
+
Requires-Dist: azure-mgmt-sql<=1.0.0
|
|
44
|
+
Requires-Dist: azure-identity>=1.5.0
|
|
45
|
+
Requires-Dist: kubernetes>=22.6.0
|
|
46
|
+
Requires-Dist: pdpyras>=4.3.0
|
|
47
|
+
Requires-Dist: crowdstrike-falconpy>=0.5.1
|
|
48
|
+
Requires-Dist: python-dateutil
|
|
49
|
+
Requires-Dist: xmltodict
|
|
50
|
+
Requires-Dist: duo-client
|
|
51
|
+
Requires-Dist: importlib-resources; python_version < "3.7"
|
|
52
|
+
|
|
53
|
+
file: README.md
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
cartography/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
cartography/__main__.py,sha256=JftXT_nUPkqcEh8uxCCT4n-OyHYqbldEgrDS-4ygy0U,101
|
|
3
|
-
cartography/cli.py,sha256=
|
|
4
|
-
cartography/config.py,sha256=
|
|
3
|
+
cartography/cli.py,sha256=LPjeOkx-cKhRkuhqMicB-0X3SHOjLXxEeGqsp2FtpC0,33285
|
|
4
|
+
cartography/config.py,sha256=ZcadsKmooAkti9Kv0eDl8Ec1PcZDu3lWobtNaCnwY3k,11872
|
|
5
5
|
cartography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
cartography/stats.py,sha256=dbybb9V2FuvSuHjjNwz6Vjwnd1hap2C7h960rLoKcl8,4406
|
|
7
7
|
cartography/sync.py,sha256=ziD63T_774gXSuD5zdz6fLGvv1Kt2ntQySSVbmcCZb8,9708
|
|
@@ -10,9 +10,9 @@ cartography/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
10
10
|
cartography/client/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
cartography/client/aws/iam.py,sha256=dYsGikc36DEsSeR2XVOVFFUDwuU9yWj_EVkpgVYCFgM,1293
|
|
12
12
|
cartography/client/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
cartography/client/core/tx.py,sha256=
|
|
13
|
+
cartography/client/core/tx.py,sha256=FcUPfmNIKSXkN5UK3nL5-GFoGkPYXmAxIWP7knvrHWg,10794
|
|
14
14
|
cartography/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
cartography/data/indexes.cypher,sha256=
|
|
15
|
+
cartography/data/indexes.cypher,sha256=zMEzytgcvMLgclMmCkFUdWp4t_EFsOEOp1M2v1vGctM,27208
|
|
16
16
|
cartography/data/permission_relationships.yaml,sha256=RuKGGc_3ZUQ7ag0MssB8k_zaonCkVM5E8I_svBWTmGc,969
|
|
17
17
|
cartography/data/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
18
|
cartography/data/jobs/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -45,6 +45,7 @@ cartography/data/jobs/cleanup/aws_import_es_cleanup.json,sha256=VqRqiMcT0Ag0Qif2
|
|
|
45
45
|
cartography/data/jobs/cleanup/aws_import_groups_cleanup.json,sha256=QSdWIpC_Ru4TFBm9I5mpI-ZHyusbzCzCePWN-yn8TQU,463
|
|
46
46
|
cartography/data/jobs/cleanup/aws_import_groups_membership_cleanup.json,sha256=OSeasbv01pn47J1ib3yal_dAzbEOCZVJnldMqK0SAOQ,292
|
|
47
47
|
cartography/data/jobs/cleanup/aws_import_groups_policy_cleanup.json,sha256=U_yKHAsjHoI9fiiTqGyhlMazgeZumlZwMO70CpJpuAM,309
|
|
48
|
+
cartography/data/jobs/cleanup/aws_import_identity_center_cleanup.json,sha256=PSyerOlZkiLaWYFa3Hg1mqqX83FGwj36-p0BF1lR-Q8,650
|
|
48
49
|
cartography/data/jobs/cleanup/aws_import_internet_gateways_cleanup.json,sha256=SHHrR9pX0V1r-RxwJggHGeFA7JVQAAK02D-n-vqOvdU,287
|
|
49
50
|
cartography/data/jobs/cleanup/aws_import_kms_cleanup.json,sha256=NU9doXVk4UmAY59aYnld95Wc1b8DrfCbvJltUsATxko,1441
|
|
50
51
|
cartography/data/jobs/cleanup/aws_import_lambda_cleanup.json,sha256=ntjEpy_WyLxD66Dxydi9GliBVK0DVZWza6908KYeoyA,2268
|
|
@@ -101,8 +102,8 @@ cartography/data/jobs/cleanup/gcp_crm_project_cleanup.json,sha256=JImcuuz9HI2TL0
|
|
|
101
102
|
cartography/data/jobs/cleanup/gcp_dns_cleanup.json,sha256=NGs5UYFmm65Rq8gyqbzIe8_OnFchfpNFf9iAcIj_hyY,1286
|
|
102
103
|
cartography/data/jobs/cleanup/gcp_gke_cluster_cleanup.json,sha256=3bMEJ44AEvjkj_1ibclk6Ys5r1LniUWefpZ_U5hTwHI,671
|
|
103
104
|
cartography/data/jobs/cleanup/gcp_storage_bucket_cleanup.json,sha256=sGygB_meoCpGdGgEZtIlC4L-19meAXdfP99gkNJHD7o,1288
|
|
104
|
-
cartography/data/jobs/cleanup/
|
|
105
|
-
cartography/data/jobs/cleanup/
|
|
105
|
+
cartography/data/jobs/cleanup/github_org_and_users_cleanup.json,sha256=vjaOlWdnjaCHmvmaWadOzHXqFnjpR1wW8cykb_M54fM,1010
|
|
106
|
+
cartography/data/jobs/cleanup/github_repos_cleanup.json,sha256=Ko6zya72yLjLt_m-wogAUmuzzL2-IJiO457clEHFxPk,3676
|
|
106
107
|
cartography/data/jobs/cleanup/gsuite_ingest_groups_cleanup.json,sha256=ddXAUi6aVi2htf5R1bNn6YrC3SjshjLBgWtlzBgZ9Do,961
|
|
107
108
|
cartography/data/jobs/cleanup/gsuite_ingest_users_cleanup.json,sha256=0qMLbVSTyq5F9vt4-TvVa3YAAvZCpPtzF9EwblaTxWg,353
|
|
108
109
|
cartography/data/jobs/cleanup/jamf_import_computers_cleanup.json,sha256=sEF6VSkOcFO210y3VHFO45PDYi5ZePS6xRm3GL9lW7A,248
|
|
@@ -135,14 +136,14 @@ cartography/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
135
136
|
cartography/graph/cleanupbuilder.py,sha256=87vFrOJo66hOrrqeNwXp18WrNQEheHTlZko9KUkXWhY,8021
|
|
136
137
|
cartography/graph/context.py,sha256=RGxGb8EnxowcqjR0nFF86baNhgRHeUF9wjIoFUoG8LU,1230
|
|
137
138
|
cartography/graph/job.py,sha256=RZWsbNhHuJlcSpw4C73ZuovRTp7kGrcm3X9yUH8vT1Q,7488
|
|
138
|
-
cartography/graph/querybuilder.py,sha256=
|
|
139
|
+
cartography/graph/querybuilder.py,sha256=7DtIGPlfeKcIWKw_ReCAX1OeUkhSnIRV_reeVaKL6I4,20416
|
|
139
140
|
cartography/graph/statement.py,sha256=VsqG46ty_Mm87fr8YdIwfr6a82OUXU7yZe6S-Py9hZg,5345
|
|
140
141
|
cartography/intel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
142
|
cartography/intel/analysis.py,sha256=gHtN42NqqLL1G5MOm2Q6rMyg-V5lU_wqbnKp5hbOOao,1499
|
|
142
143
|
cartography/intel/create_indexes.py,sha256=HM2jB2v3NZvGqgVDtNoBQRVpkei_JXcYXqM14w8Rjss,741
|
|
143
144
|
cartography/intel/dns.py,sha256=M-WSiGQoxWZsl0sg-2SDR8OD8e1Rexkt2Tbb2OpeioA,5596
|
|
144
145
|
cartography/intel/aws/__init__.py,sha256=siRhVNypfGxMPNIXHSjfYbLX9qlB6RYyN6aWX64N-t8,11076
|
|
145
|
-
cartography/intel/aws/apigateway.py,sha256=
|
|
146
|
+
cartography/intel/aws/apigateway.py,sha256=aTUVjpAksfLJwq_ttye8NWt5LMkCV8vKyXbPW4gN7-U,12736
|
|
146
147
|
cartography/intel/aws/config.py,sha256=wrZbz7bc8vImLmRvTLkPcWnjjPzk3tOG4bB_BFS2lq8,7329
|
|
147
148
|
cartography/intel/aws/dynamodb.py,sha256=LZ6LGNThLi0zC3eLMq2JN3mwiSwZeaH58YQQHvsXMGE,5013
|
|
148
149
|
cartography/intel/aws/ecr.py,sha256=9yK8bXnXBJHW_AOalATjqfC4GTpR9pilpDScla4EFuY,6624
|
|
@@ -151,7 +152,8 @@ cartography/intel/aws/eks.py,sha256=OerAX7qT2uGPbqliPvuy8JZUIgle_KMlnkkHxk8O5fk,
|
|
|
151
152
|
cartography/intel/aws/elasticache.py,sha256=fCI47aDFmIDyE26GiReKYb6XIZUwrzcvsXBQ4ruFhuI,4427
|
|
152
153
|
cartography/intel/aws/elasticsearch.py,sha256=ZL7MkXF_bXRSoXuDSI1dwGckRLG2zDB8LuAD07vSLnE,8374
|
|
153
154
|
cartography/intel/aws/emr.py,sha256=xhWBVZngxJRFjMEDxwq3G6SgytRGLq0v2a_CeDvByR0,3372
|
|
154
|
-
cartography/intel/aws/iam.py,sha256=
|
|
155
|
+
cartography/intel/aws/iam.py,sha256=zRlF9cKcYm44iL63G6bd-_flNOFHVrjsEfW0jZHpUNg,32387
|
|
156
|
+
cartography/intel/aws/identitycenter.py,sha256=zIWe_JpXPC-kkWu26aFjYtGsClNG_GaQ3bdCeiRkApc,9475
|
|
155
157
|
cartography/intel/aws/inspector.py,sha256=S22ZgRKEnmnBTJ-u0rodqRPB7_LkSIek47NeBxN4XJw,9336
|
|
156
158
|
cartography/intel/aws/kms.py,sha256=bZUzMxAH_DsAcGTJBs08gg2tLKYu-QWjvMvV9C-6v50,11731
|
|
157
159
|
cartography/intel/aws/lambda_function.py,sha256=KKTyn53xpaMI9WvIqxmsOASFwflHt-2_5ow-zUFc2wg,9890
|
|
@@ -160,7 +162,7 @@ cartography/intel/aws/permission_relationships.py,sha256=IarV9gt5BaplZ5TPo_mfypt
|
|
|
160
162
|
cartography/intel/aws/rds.py,sha256=vnlNYmrO2Cc0PNn31CeG2QwYhwjVosbQFE9Ol1vQyLE,25252
|
|
161
163
|
cartography/intel/aws/redshift.py,sha256=KOqiXIllHmtPTeaNGl-cX4srY5pFE6o12j8MQ5-zWpc,6694
|
|
162
164
|
cartography/intel/aws/resourcegroupstaggingapi.py,sha256=aq4kPF6t8QZZoTxdkQVLXH65Di41CDJVM9llJNe6iaY,10278
|
|
163
|
-
cartography/intel/aws/resources.py,sha256=
|
|
165
|
+
cartography/intel/aws/resources.py,sha256=A8Dc3PtCfDyk5a1ZgAoHthhDPS6aWN_kR0PLwnHdC0Q,3370
|
|
164
166
|
cartography/intel/aws/route53.py,sha256=IYqeQud1HuHnf11A7T-Jeif5DWgjpaaU-Jfr2cLUc_o,14099
|
|
165
167
|
cartography/intel/aws/s3.py,sha256=SVxUMtMSkbdjZv5qOSYIbYb8BQa-QTojbHG85-EFWLA,27034
|
|
166
168
|
cartography/intel/aws/secretsmanager.py,sha256=YogwRPT6qZPVg5HrND71zI-nNn60oxoWaW7eUlhuTS0,3304
|
|
@@ -168,20 +170,21 @@ cartography/intel/aws/securityhub.py,sha256=8FF7vW0ykdqn07xGExtsOLxYTyCTTbDiRuA1
|
|
|
168
170
|
cartography/intel/aws/sqs.py,sha256=cosScBKxAm_6GsM9zzg4U12KvAjXUzxpJ1zGv0lsVZI,6199
|
|
169
171
|
cartography/intel/aws/ssm.py,sha256=IDOYa8v2FgziU8nBOZ7wyDG4o_nFYshbB-si9Ut_9Zc,5562
|
|
170
172
|
cartography/intel/aws/ec2/__init__.py,sha256=IDK2Yap7mllK_ab6yVMLXatJ94znIkn-szv5RJP5fbo,346
|
|
171
|
-
cartography/intel/aws/ec2/auto_scaling_groups.py,sha256=
|
|
173
|
+
cartography/intel/aws/ec2/auto_scaling_groups.py,sha256=ylfks8_oC0-fVMnToFbmRcbKdEN0H17LlN1-ZqW6ULc,8148
|
|
172
174
|
cartography/intel/aws/ec2/elastic_ip_addresses.py,sha256=0k4NwS73VyWbEj5jXvSkaq2RNvmAlBlrN-UKa_Bj0uk,3957
|
|
173
175
|
cartography/intel/aws/ec2/images.py,sha256=heElwHJGqVD3iUJjxwA_Sdc3CmE4HPs00CTMHuQ1wkc,3782
|
|
174
|
-
cartography/intel/aws/ec2/instances.py,sha256=
|
|
176
|
+
cartography/intel/aws/ec2/instances.py,sha256=IJS9TJhk0aqFaRbmUOCE_sHVhZJLg8fPTF8zEnTlyvk,12372
|
|
175
177
|
cartography/intel/aws/ec2/internet_gateways.py,sha256=dI-4-85_3DGGZZBcY_DN6XqESx9P26S6jKok314lcnQ,2883
|
|
176
178
|
cartography/intel/aws/ec2/key_pairs.py,sha256=SvRgd56vE4eouvTSNoFK8PP8HYoECO91goxc36oq_FY,2508
|
|
177
179
|
cartography/intel/aws/ec2/launch_templates.py,sha256=aeqaL8On38ET8nM8bISsIXLy6PkZoV-tqSWG38YXgkI,6010
|
|
178
180
|
cartography/intel/aws/ec2/load_balancer_v2s.py,sha256=95FfQQn740gexINIHDJizOM4OKzRtQT_y2XQMipQ5Dg,8661
|
|
179
181
|
cartography/intel/aws/ec2/load_balancers.py,sha256=1GwErzGqi3BKCARqfGJcD_r_D84rFKVy5kNMas9jAok,6756
|
|
182
|
+
cartography/intel/aws/ec2/network_acls.py,sha256=_UiOx79OxcqH0ecRjcVMglAzz5XJ4aVYLlv6dl_ism4,6809
|
|
180
183
|
cartography/intel/aws/ec2/network_interfaces.py,sha256=CzF8PooCYUQ2pk8DR8JDAhkWRUQSBj_27OsIfkL_-Cs,9199
|
|
181
184
|
cartography/intel/aws/ec2/reserved_instances.py,sha256=jv8-VLI5KL8jN1QRI20yim8lzZ7I7wR8a5EF8DckahA,3122
|
|
182
185
|
cartography/intel/aws/ec2/security_groups.py,sha256=vxLeaCpCowkbl-YpON1UdbjtPolMfj_reOEuKujN80Y,6060
|
|
183
186
|
cartography/intel/aws/ec2/snapshots.py,sha256=R3U6ZwE4bQPy5yikLCRcUHyXN1dD7TzS-3jULQO-F0g,5432
|
|
184
|
-
cartography/intel/aws/ec2/subnets.py,sha256=
|
|
187
|
+
cartography/intel/aws/ec2/subnets.py,sha256=42KODMXswv4OCVnkWDHZbZDLUnc_ZAD-1TDMk88rWdo,3892
|
|
185
188
|
cartography/intel/aws/ec2/tgw.py,sha256=lTFPlRNoDHNklR38alSywXlSiiTyg86vJNth7Pc4pZQ,9114
|
|
186
189
|
cartography/intel/aws/ec2/util.py,sha256=Pv-x1QEAAmyxcpEl6y8M24ija3ERjXFE36fswuKXHDs,226
|
|
187
190
|
cartography/intel/aws/ec2/volumes.py,sha256=4jmeuf-l_Wje4VaKq2mcF_cd02rBZdnDoMPvKb4Lh8w,3507
|
|
@@ -205,8 +208,8 @@ cartography/intel/crowdstrike/__init__.py,sha256=dAtgI-0vZAQZ3cTFQhMEzzt7aqiNSNu
|
|
|
205
208
|
cartography/intel/crowdstrike/endpoints.py,sha256=tdqokMDW3p4fK3dHKKb2T1DTogvOJBCpwyrxdQlbUhw,3815
|
|
206
209
|
cartography/intel/crowdstrike/spotlight.py,sha256=yNhj44-RYF6ubck-hHMKhKiNU0fCfhQf4Oagopc31EM,4754
|
|
207
210
|
cartography/intel/crowdstrike/util.py,sha256=gfJ6Ptr6YdbBS9Qj9a_-Jc-IJroADDRcXqjh5TW0qXE,277
|
|
208
|
-
cartography/intel/cve/__init__.py,sha256=
|
|
209
|
-
cartography/intel/cve/feed.py,sha256=
|
|
211
|
+
cartography/intel/cve/__init__.py,sha256=3PLAhQ36g-aq40IHvba789WANsA-TY9B-Oe9mpQweQ8,2516
|
|
212
|
+
cartography/intel/cve/feed.py,sha256=bKzetBVGYz8e2GKupUh2BilBCZuIwSfZdN23ArxYLZU,10147
|
|
210
213
|
cartography/intel/digitalocean/__init__.py,sha256=SMYB7LGIQOj_EgGSGVjWZk7SJNbP43hQuOfgOu6xYm4,1526
|
|
211
214
|
cartography/intel/digitalocean/compute.py,sha256=9XctwMjq9h5dExFgExvawoqyiEwSoocNgaMm3Fgl5GM,4911
|
|
212
215
|
cartography/intel/digitalocean/management.py,sha256=YWRnBLLL_bAP1vefIAQgm_-QzefGH0sZKmyU_EokHfA,3764
|
|
@@ -226,9 +229,9 @@ cartography/intel/gcp/dns.py,sha256=y2pvbmV04cnrMyuu_nbW3oc7uwHX6yEzn1n7veCsjmk,
|
|
|
226
229
|
cartography/intel/gcp/gke.py,sha256=qaTwsVaxkwNhW5_Mw4bedOk7fgJK8y0LwwcYlUABXDg,7966
|
|
227
230
|
cartography/intel/gcp/storage.py,sha256=oO_ayEhkXlj2Gn7T5MU41ZXiqwRwe6Ud4wzqyRTsyf4,9075
|
|
228
231
|
cartography/intel/github/__init__.py,sha256=y876JJGTDJZEOFCDiNCJfcLNxN24pVj4s2N0YmuuoaE,1914
|
|
229
|
-
cartography/intel/github/repos.py,sha256=
|
|
232
|
+
cartography/intel/github/repos.py,sha256=HwTI4gzg8rnI4GC4Sl2r1q2ElieN3WuNcd9szbhAoaA,27995
|
|
230
233
|
cartography/intel/github/teams.py,sha256=aXI-XbxlA1IDaAUX0XSdEt6pA2n4ew5j_doj1iNYCDM,6618
|
|
231
|
-
cartography/intel/github/users.py,sha256=
|
|
234
|
+
cartography/intel/github/users.py,sha256=zkMLVNfEMZIYYtPfqTsMXs2BNFzK8SfFRO7qnnlHy_s,8399
|
|
232
235
|
cartography/intel/github/util.py,sha256=K6hbxypy4luKhIE1Uh5VWZc9OyjMK2OuO00vBAQfloA,8049
|
|
233
236
|
cartography/intel/gsuite/__init__.py,sha256=AGIUskGlLCVGHbnQicNpNWi9AvmV7_7hUKTt-hsB2J8,4306
|
|
234
237
|
cartography/intel/gsuite/api.py,sha256=J0dkNdfBVMrEv8vvStQu7YKVxXSyV45WueFhUS4aOG4,10310
|
|
@@ -258,7 +261,7 @@ cartography/intel/okta/organization.py,sha256=YLQc7ETdtf8Vc-CRCYivV_xmVl2Oz0Px53
|
|
|
258
261
|
cartography/intel/okta/origins.py,sha256=LNswsOXx8oBk9tL6Qc_3EuqXpa9qgD6fWEWrbsP-_fE,3730
|
|
259
262
|
cartography/intel/okta/roles.py,sha256=_H3o8RveEBt5Mx_nHle81pYEB3NrGq2R2UGL_ChArFs,5840
|
|
260
263
|
cartography/intel/okta/sync_state.py,sha256=GYtAJlbEObiZKPihcIzVzB6APdI_TwUYzhycsDJ8cDE,702
|
|
261
|
-
cartography/intel/okta/users.py,sha256=
|
|
264
|
+
cartography/intel/okta/users.py,sha256=rkOvLaZkBOV2QrgsCa-O0p2Iq7AfguUO078w7XB8CMM,6422
|
|
262
265
|
cartography/intel/okta/utils.py,sha256=XSXw8QiaaXwL_PfOlbpvjgPfy2Etmt_PkS7T6ruTFmc,2165
|
|
263
266
|
cartography/intel/pagerduty/__init__.py,sha256=kXYtgUFLl4eldveyBoxNiebcfOOktTVvLf6rVkriNuA,2164
|
|
264
267
|
cartography/intel/pagerduty/escalation_policies.py,sha256=5Fnm0WLF9TP1GH0BJ2sZlO6U9tH1KdhCvoMxGtL_318,6455
|
|
@@ -267,8 +270,8 @@ cartography/intel/pagerduty/services.py,sha256=Cjm37mWmuBNXSY49-xUQ3xV0DZ391GTLv
|
|
|
267
270
|
cartography/intel/pagerduty/teams.py,sha256=aRubUXgEVVReyLrXAX_be1E_QBJv3Qlr4n779Jkkz8Q,2498
|
|
268
271
|
cartography/intel/pagerduty/users.py,sha256=oltGssxrnzYsV6QTGP1SsPoA1rCUDStj6vGlGWY695g,1623
|
|
269
272
|
cartography/intel/pagerduty/vendors.py,sha256=WlDHExrWRBegDQKtxBV5nJiYgwoTLxNee4HrQDJ-Pdg,1559
|
|
270
|
-
cartography/intel/semgrep/__init__.py,sha256=
|
|
271
|
-
cartography/intel/semgrep/dependencies.py,sha256=
|
|
273
|
+
cartography/intel/semgrep/__init__.py,sha256=dNosNlFJtIJI-XZMF_5qV2nZ-barQNEZaIkEL-JFTyk,1202
|
|
274
|
+
cartography/intel/semgrep/dependencies.py,sha256=PeEeroI38BUH-TefJeimzxNP5y429y6i-jJj3M2s9N4,8163
|
|
272
275
|
cartography/intel/semgrep/deployment.py,sha256=sh-yJHtdgZjxIJimNnA-DxsM-MYgMhQ_WX2E7w4PWiM,2012
|
|
273
276
|
cartography/intel/semgrep/findings.py,sha256=GDqZmfl9-HiZ93u0jhlkZ1w_qzrD1cFFFJtVc7DFdPk,9761
|
|
274
277
|
cartography/intel/snipeit/__init__.py,sha256=0uIh8NbuI7IbfgaOrPHg4Nfm1yO6mTRC_qaFiIjR2FA,992
|
|
@@ -282,12 +285,16 @@ cartography/models/aws/dynamodb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
|
282
285
|
cartography/models/aws/dynamodb/gsi.py,sha256=KYsHJpSgrTQndZGIdKAi5MjgvUne2iNvqTr29BDzI14,3021
|
|
283
286
|
cartography/models/aws/dynamodb/tables.py,sha256=iNTnI0FLdqHs0-EYGqWLGHWEy4mkSEDny2l5f7HBXN0,2198
|
|
284
287
|
cartography/models/aws/ec2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
288
|
+
cartography/models/aws/ec2/auto_scaling_groups.py,sha256=ImIu-i5iU_CJQ25oa2MDnOhOjL4jcpBagPiB95JUvSE,8660
|
|
285
289
|
cartography/models/aws/ec2/images.py,sha256=uGhXS7Xb6sKUdwwkS0O0dWP4sIREjusUaV_unODv9gE,3012
|
|
286
290
|
cartography/models/aws/ec2/instances.py,sha256=cNMHngdGNRhxoyID6AmG2F7CQGC1fYani8DV8lSKvsI,3902
|
|
287
291
|
cartography/models/aws/ec2/keypairs.py,sha256=scKC3SdExHAWkPNmb6tT9LK-9q4sweqS2ejFzMec10M,2630
|
|
292
|
+
cartography/models/aws/ec2/launch_configurations.py,sha256=zdfWJEx93HXDXd_IzSEkhvcztkJI7_v_TCE_d8ZNAyI,2764
|
|
288
293
|
cartography/models/aws/ec2/launch_template_versions.py,sha256=RitfnAuAj0XpFsCXkRbtUhHMAi8Vsvmtury231eKvGU,3897
|
|
289
294
|
cartography/models/aws/ec2/launch_templates.py,sha256=GqiwFuMp72LNSt2eQlp2WfdU_vHsom-xKV5AaUewSHQ,2157
|
|
290
295
|
cartography/models/aws/ec2/loadbalancerv2.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
296
|
+
cartography/models/aws/ec2/network_acl_rules.py,sha256=4Rq2J-Dce8J6y9J6YIalmYtuQRWLp652LXO1Xg6XGPE,3951
|
|
297
|
+
cartography/models/aws/ec2/network_acls.py,sha256=pJKsXdMLB8L79lmTYpLJfFJ6p7PWpf3rBN6eW6y-5hY,3419
|
|
291
298
|
cartography/models/aws/ec2/networkinterface_instance.py,sha256=t3oqcQ4GjYf7dwqPUGCiXd70ie4ibYLilOXiE5_Ad8g,4707
|
|
292
299
|
cartography/models/aws/ec2/networkinterfaces.py,sha256=z1-Dl6I79-TCxXKG8QBpSKga93lPCPaLR1XqKJZK3ME,4127
|
|
293
300
|
cartography/models/aws/ec2/privateip_networkinterface.py,sha256=j8MyiZsiUCuzuGUH_4PBKV3rLTk1GkE-SZb6K11oSdM,3038
|
|
@@ -299,6 +306,10 @@ cartography/models/aws/ec2/subnet_networkinterface.py,sha256=JHlxfBojBw7LfJS4a5L
|
|
|
299
306
|
cartography/models/aws/ec2/volumes.py,sha256=WSP7YNZeJE3s4wnY9QrIAbcJN3OathqNgEBX0cVahDg,4470
|
|
300
307
|
cartography/models/aws/eks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
301
308
|
cartography/models/aws/eks/clusters.py,sha256=WeuC1wcjB_twsvgS0EMvU2wENhD-pm4t6N3HZ19x3vk,2293
|
|
309
|
+
cartography/models/aws/identitycenter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
310
|
+
cartography/models/aws/identitycenter/awsidentitycenter.py,sha256=lmpo-qqmMN6BMGEkBQyxmb0Nfal0qI1HetqmRmOWkSU,1988
|
|
311
|
+
cartography/models/aws/identitycenter/awspermissionset.py,sha256=30BBY-XG3-rJMihKKTdUVobkdqQYWWGsFD83uTVJqkI,3539
|
|
312
|
+
cartography/models/aws/identitycenter/awsssouser.py,sha256=HSXSHDVM36eIlYfRAwZ8KT470v_s1hC0_lrzZxCbYjw,2837
|
|
302
313
|
cartography/models/aws/inspector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
303
314
|
cartography/models/aws/inspector/findings.py,sha256=_o5dsHCl6LNZrwSjEWBHiawMxgMMwlVOGoYQl8cHKJQ,5585
|
|
304
315
|
cartography/models/aws/inspector/packages.py,sha256=dtY5JsVb6Ri78Lqigb2nHNq0Qc926U_m90SmbvZEDGc,3267
|
|
@@ -309,7 +320,7 @@ cartography/models/bigfix/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
309
320
|
cartography/models/bigfix/bigfix_computer.py,sha256=HQQsQPUphfkBsW8jIP0b9InNAb3vtOSWVD_GqSikkm4,3520
|
|
310
321
|
cartography/models/bigfix/bigfix_root.py,sha256=GkyI0Gmnat8Q-3aQWJdCaNzKB89fY0ee4-lRvvPRLns,598
|
|
311
322
|
cartography/models/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
312
|
-
cartography/models/core/common.py,sha256=
|
|
323
|
+
cartography/models/core/common.py,sha256=uAMmUAY7_ENDsq-CvEZ0bQNAwdWOFRCzIQEFz7NOtmI,4316
|
|
313
324
|
cartography/models/core/nodes.py,sha256=h5dwBOk_a2uCHZWeQz3pidr7gkqMKf7buIZgl6M1Ox4,3699
|
|
314
325
|
cartography/models/core/relationships.py,sha256=6AwXvk0dq48BxqyxBpHyBXZ3dJNm65t1y4vNg4n25uA,5103
|
|
315
326
|
cartography/models/cve/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -324,7 +335,9 @@ cartography/models/duo/token.py,sha256=BS_AvF-TAGzCY9Owtqxr8g_s6716dnzFOO1Iwkckm
|
|
|
324
335
|
cartography/models/duo/user.py,sha256=ih3DH_QveAve4cX9dmIwC5gVN6_RNnuLK3bfJ5I9u6g,6554
|
|
325
336
|
cartography/models/duo/web_authn_credential.py,sha256=OcZnfG5zCMlphxSltRcAXQ12hHYJjxrBt6A9L28g7Vk,2920
|
|
326
337
|
cartography/models/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
338
|
+
cartography/models/github/orgs.py,sha256=f5kJ-51MDGW5k4sWMeTfyBDxcHdhFJZGkRUvGcjllBU,1097
|
|
327
339
|
cartography/models/github/teams.py,sha256=mk3OFGTDqWkLz7aX7Q9AtpOMOkZDDGH0MWoVeevK2-k,4376
|
|
340
|
+
cartography/models/github/users.py,sha256=XliVsBKWF7wW7Dwjwdoz9E2gk1cASyfQgAddKYr23VY,5739
|
|
328
341
|
cartography/models/kandji/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
329
342
|
cartography/models/kandji/device.py,sha256=C3zPhLi1oPNysbSUr4H2u8b-Xy14sb3FE7YcjCwlntw,2214
|
|
330
343
|
cartography/models/kandji/tenant.py,sha256=KhcbahNBemny3coQPiadIY8B-yDMg_ejYB2BR6vqBfw,674
|
|
@@ -332,7 +345,7 @@ cartography/models/lastpass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
|
332
345
|
cartography/models/lastpass/tenant.py,sha256=TG-9LFo9Sfzb9UgcTt_gFVTKocLItbgQMMPkN_iprXU,618
|
|
333
346
|
cartography/models/lastpass/user.py,sha256=SMTTYN6jgccc9k76hY3rVImElJOhHhZ9f1aZ6JzcrHw,3487
|
|
334
347
|
cartography/models/semgrep/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
335
|
-
cartography/models/semgrep/dependencies.py,sha256=
|
|
348
|
+
cartography/models/semgrep/dependencies.py,sha256=zO8NxfFIvL6vzFWaIDAXqPF7VfUwLMj5YizqA0IS-eA,3959
|
|
336
349
|
cartography/models/semgrep/deployment.py,sha256=or5qZDuR51MXzINpH15jZrqmSUvXQevCNYWJ7D6v-JI,745
|
|
337
350
|
cartography/models/semgrep/findings.py,sha256=RPd-QzvP38fbTIqFARx6XpcZSsd5JM3KIg-ZlJA7NlE,5490
|
|
338
351
|
cartography/models/semgrep/locations.py,sha256=kSk7Nn5Mn4Ob84MVZOo2GR0YFi-9Okq9pgA3FfC6_bk,3061
|
|
@@ -340,9 +353,9 @@ cartography/models/snipeit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
340
353
|
cartography/models/snipeit/asset.py,sha256=FyRAaeXuZjMy0eUQcSDFcgEAF5lbLMlvqp1Tv9d3Lv4,3238
|
|
341
354
|
cartography/models/snipeit/tenant.py,sha256=p4rFnpNNuF1W5ilGBbexDaETWTwavfb38RcQGoImkQI,679
|
|
342
355
|
cartography/models/snipeit/user.py,sha256=MsB4MiCVNTH6JpESime7cOkB89autZOXQpL6Z0l7L6o,2113
|
|
343
|
-
cartography-0.
|
|
344
|
-
cartography-0.
|
|
345
|
-
cartography-0.
|
|
346
|
-
cartography-0.
|
|
347
|
-
cartography-0.
|
|
348
|
-
cartography-0.
|
|
356
|
+
cartography-0.96.0.dist-info/LICENSE,sha256=kvLEBRYaQ1RvUni6y7Ti9uHeooqnjPoo6n_-0JO1ETc,11351
|
|
357
|
+
cartography-0.96.0.dist-info/METADATA,sha256=i5d9scepvNyWXclezQtJ-UmhQYb7ZCnkS_8dVHLgI3E,1938
|
|
358
|
+
cartography-0.96.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
359
|
+
cartography-0.96.0.dist-info/entry_points.txt,sha256=GVIAWD0o0_K077qMA_k1oZU4v-M0a8GLKGJR8tZ-qH8,112
|
|
360
|
+
cartography-0.96.0.dist-info/top_level.txt,sha256=BHqsNJQiI6Q72DeypC1IINQJE59SLhU4nllbQjgJi9g,12
|
|
361
|
+
cartography-0.96.0.dist-info/RECORD,,
|