@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
86 lines (85 loc) • 3.99 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
const sdk_1 = require("@cloudgraph/sdk");
const utils_1 = require("./utils");
/**
* WafV2WebAcl
*/
exports.default = ({ account, service: rawData, region, }) => {
const { Id: id, ARN: arn, Name: name, Description: description, scope, Rules, DefaultAction, Capacity: capacity, VisibilityConfig, PreProcessFirewallManagerRuleGroups, PostProcessFirewallManagerRuleGroups, ManagedByFirewallManager, LabelNamespace: labelNamespace, CustomResponseBodies, loggingConfiguration, } = rawData;
const mappedRules = Rules?.map(rule => ({
id: sdk_1.generateUniqueId({
...rule,
}),
name: rule.Name,
priority: rule.Priority,
statement: utils_1.formatRuleStatement(rule.Statement),
action: utils_1.formatRuleAction(rule.Action),
overrideAction: utils_1.formatRuleOverrideAction(rule.OverrideAction),
ruleLabels: utils_1.formatRuleLabels(rule.RuleLabels),
visibilityConfig: utils_1.formatVisibilityConfig(rule.VisibilityConfig),
}));
const mappedCustomResponseBodies = Object.keys(CustomResponseBodies ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
key,
contentType: CustomResponseBodies[key]?.ContentType,
content: CustomResponseBodies[key]?.Content,
}),
key,
contentType: CustomResponseBodies[key]?.ContentType,
content: CustomResponseBodies[key]?.Content,
}));
const formattedLoggingConfig = isEmpty_1.default(loggingConfiguration ?? {})
? {
resourceArn: loggingConfiguration?.ResourceArn,
logDestinationConfigs: loggingConfiguration?.LogDestinationConfigs,
redactedFields: loggingConfiguration?.RedactedFields?.map(utils_1.formatFieldToMatch),
managedByFirewallManager: loggingConfiguration?.ManagedByFirewallManager,
loggingFilter: {
filters: loggingConfiguration?.LoggingFilter?.Filters?.map(filter => ({
id: sdk_1.generateUniqueId({
...loggingConfiguration,
}),
behavior: filter.Behavior,
requirement: filter.Requirement,
conditions: filter.Conditions?.map(condition => ({
id: sdk_1.generateUniqueId({
action: condition?.ActionCondition?.Action,
labelName: condition?.LabelNameCondition?.LabelName,
}),
actionCondtion: {
action: condition?.ActionCondition?.Action,
},
labelNameCondition: {
labelName: condition?.LabelNameCondition?.LabelName,
},
})),
})),
defaultBehavior: loggingConfiguration?.LoggingFilter?.DefaultBehavior,
},
}
: null;
return {
id,
region,
accountId: account,
arn,
name,
scope,
description,
ManagedByFirewallManager,
capacity,
labelNamespace,
rules: mappedRules,
defaultAction: utils_1.formatDefaultAction(DefaultAction),
visibilityConfig: utils_1.formatVisibilityConfig(VisibilityConfig),
preProcessFirewallManagerRuleGroups: utils_1.formatFirewallManagerRuleGroups(PreProcessFirewallManagerRuleGroups),
postProcessFirewallManagerRuleGroups: utils_1.formatFirewallManagerRuleGroups(PostProcessFirewallManagerRuleGroups),
customResponseBodies: mappedCustomResponseBodies,
loggingConfiguration: formattedLoggingConfig,
};
};