@infrascan/aws-s3-scanner
Version:
Infrascan scanner definition for AWS S3
95 lines (94 loc) • 3.27 kB
JavaScript
// 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
};