UNPKG

@infrascan/aws-s3-scanner

Version:

Infrascan scanner definition for AWS S3

95 lines (94 loc) 3.27 kB
// src/generated/graph.ts import { evaluateSelectorGlobally, filterState, formatEdge } from "@infrascan/core"; import debug from "debug"; var edgesDebug = debug("s3:edges"); async function getEdges(stateConnector) { edgesDebug("Fetching edges"); const edges = []; edgesDebug("Evaluating S3|GetBucketNotificationConfiguration|[]"); const GetBucketNotificationConfigurationState1 = await evaluateSelectorGlobally( "S3|GetBucketNotificationConfiguration|[]", stateConnector ); const GetBucketNotificationConfigurationEdges1 = GetBucketNotificationConfigurationState1.flatMap((state) => { const source = filterState( state, "_parameters.Bucket | [`arn:aws:s3:::`,@] | join('',@)" ); const target = filterState( state, "_result.TopicConfigurations | [].{target:TopicArn,name:Id}" ); if (!target || !source) { return []; } if (Array.isArray(target)) { return target.map((edgeTarget) => formatEdge(source, edgeTarget)); } return formatEdge(source, target); }); edgesDebug( `Evaluated S3|GetBucketNotificationConfiguration|[]: ${GetBucketNotificationConfigurationEdges1.length} Edges found` ); edges.push(...GetBucketNotificationConfigurationEdges1); edgesDebug("Evaluating S3|GetBucketNotificationConfiguration|[]"); const GetBucketNotificationConfigurationState2 = await evaluateSelectorGlobally( "S3|GetBucketNotificationConfiguration|[]", stateConnector ); const GetBucketNotificationConfigurationEdges2 = GetBucketNotificationConfigurationState2.flatMap((state) => { const source = filterState( state, "_parameters.Bucket | [`arn:aws:s3:::`,@] | join('',@)" ); const target = filterState( state, "_result.QueueConfigurations | [].{target:QueueArn,name:Id}" ); if (!target || !source) { return []; } if (Array.isArray(target)) { return target.map((edgeTarget) => formatEdge(source, edgeTarget)); } return formatEdge(source, target); }); edgesDebug( `Evaluated S3|GetBucketNotificationConfiguration|[]: ${GetBucketNotificationConfigurationEdges2.length} Edges found` ); edges.push(...GetBucketNotificationConfigurationEdges2); edgesDebug("Evaluating S3|GetBucketNotificationConfiguration|[]"); const GetBucketNotificationConfigurationState3 = await evaluateSelectorGlobally( "S3|GetBucketNotificationConfiguration|[]", stateConnector ); const GetBucketNotificationConfigurationEdges3 = GetBucketNotificationConfigurationState3.flatMap((state) => { const source = filterState( state, "_parameters.Bucket | [`arn:aws:s3:::`,@] | join('',@)" ); const target = filterState( state, "_result.LambdaFunctionConfigurations | [].{target:LambdaFunctionArn,name:Id}" ); if (!target || !source) { return []; } if (Array.isArray(target)) { return target.map((edgeTarget) => formatEdge(source, edgeTarget)); } return formatEdge(source, target); }); edgesDebug( `Evaluated S3|GetBucketNotificationConfiguration|[]: ${GetBucketNotificationConfigurationEdges3.length} Edges found` ); edges.push(...GetBucketNotificationConfigurationEdges3); return edges; } export { getEdges };