in cartography/intel/gcp/compute.py [0:0]
def load_gcp_ingress_firewalls(neo4j_session, fw_list, gcp_update_tag):
"""
Load the firewall list to Neo4j
:param fw_list: The transformed list of firewalls
:return: Nothing
"""
query = """
MERGE (fw:GCPFirewall{id:{FwPartialUri}})
ON CREATE SET fw.firstseen = timestamp(),
fw.partial_uri = {FwPartialUri}
SET fw.direction = {Direction},
fw.disabled = {Disabled},
fw.name = {Name},
fw.priority = {Priority},
fw.self_link = {SelfLink},
fw.has_target_service_accounts = {HasTargetServiceAccounts},
fw.lastupdated = {gcp_update_tag}
MERGE (vpc:GCPVpc{id:{VpcPartialUri}})
ON CREATE SET vpc.firstseen = timestamp(),
vpc.partial_uri = {VpcPartialUri}
SET vpc.lastupdated = {gcp_update_tag}
MERGE (vpc)-[r:RESOURCE]->(fw)
ON CREATE SET r.firstseen = timestamp()
SET r.lastupdated = {gcp_update_tag}
"""
for fw in fw_list:
neo4j_session.run(
query,
FwPartialUri=fw['id'],
Direction=fw['direction'],
Disabled=fw['disabled'],
Name=fw['name'],
Priority=fw['priority'],
SelfLink=fw['selfLink'],
VpcPartialUri=fw['vpc_partial_uri'],
HasTargetServiceAccounts=fw['has_target_service_accounts'],
gcp_update_tag=gcp_update_tag
)
_attach_firewall_rules(neo4j_session, fw, gcp_update_tag)
_attach_target_tags(neo4j_session, fw, gcp_update_tag)