Graph¶
The graph tools read three views of the same edges, each built lazily and cached per dataset:
- The relationship graph (
GraphBuilder, a NetworkXDiGraph): edges as collected, read "source verb target". Placeholder nodes such as0.0.0.0/0appear when an edge points at something that is not an asset. The graph holds one edge per pair of nodes: parallelSECURITY_GROUP_RULE,NACL_RULEandINTERNET_EXPOSEDedges with the same CIDR and direction are merged into one edge whoseport_rangeandprotocolare comma lists, and any other parallel edge replaces the earlier one. - The flow graph (
Dataset.flow_graph): the network-flow hops ofcloudg.graph.reachability.network_flow_graph(), the same walk the internet-exposure analysis uses, plus the identity edges (ASSUMES_ROLE,IAM_TRUST,GRANTS_ACCESS) as explicit pivots, because an attacker who reaches a workload can use its role. Flow hops followINTERNET_EXPOSED, ingress rules,ROUTE,PEERINGandLOAD_BALANCER_TARGETedges,CONTAINSonly out of a VPC, VNet or subnet,ATTACHED_TOforward from a network interface or public IP, andATTACHED_TObackwards from a security group, NSG or NACL to what is attached to it, since traffic a group admits reaches those resources. Path results label those reversed hopsSG_ADMITS. Egress rules,INVOKESand the other typed edges are not traffic paths.find_pathsinflowmode andattack_pathsuse it. - The dependency graph (
cloudg.inventory.dependencies.DependencyGraph): each edge turned into a "dependent needs dependency" arrow.forwardedge types (REFERENCES,ATTACHED_TO,ROUTE,PEERING,USES_IMAGE,ASSUMES_ROLE,LOGS_TO,LOAD_BALANCER_TARGET,GRANTS_ACCESS,IAM_POLICY_ATTACHMENT,IAM_TRUST) make the source depend on the target;reversetypes (CONTAINS,INVOKES,PROTECTS,MONITORS,MANAGES,GOVERNS) make the target depend on the source;SECURITY_GROUP_RULE,NACL_RULEandINTERNET_EXPOSEDcreate no dependency.depends_on,dependents,dependency_tree,shared_dependencies,largest_blast_radiusand the first half ofblast_radiususe it. INVENTORY_REFERENCE.md sections 6 and 12 have the full table.
neighbors and get_edges read the raw edge list, so parallel edges are all reported.
Sections¶
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema yes...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity restricted · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity confidential · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...
-
Category graph · sensitivity internal · capabilities read_state · readOnly true, destructive false, idempotent true, openWorld false · outputSchema no ·...