UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

69 lines (68 loc) 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const utils_1 = require("../../../utils"); const base_1 = require("../../base"); class DefaultVpcUsedEC2InstancesAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allInstances = params.instances; if (!fullReport["aws.vpc"] || !fullReport["aws.vpc"].vpcs || !allInstances) { return undefined; } const allVpcs = fullReport["aws.vpc"].vpcs; const default_vpcs_used = { type: types_1.CheckAnalysisType.Security }; default_vpcs_used.what = "Are there any default vpc used for EC2 instances?"; default_vpcs_used.why = "Default vpcs are open to world by default and requires extra setup make them secure."; default_vpcs_used.recommendation = `Recommended not to use default vpc instead create a custom one as they make you better understand the security posture.`; default_vpcs_used.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allInstances) { const regionInstances = allInstances[region]; const regionVpcs = allVpcs[region]; const defaultVpcs = this.getDefaultVpcs(regionVpcs); allRegionsAnalysis[region] = []; for (const instance of regionInstances) { const instanceAnalysis = {}; instanceAnalysis.resource = { instanceId: instance.InstanceId, instanceName: utils_1.ResourceUtil.getNameByTags(instance), vpcId: instance.VpcId, }; instanceAnalysis.resourceSummary = { name: "Instance", value: `${instanceAnalysis.resource.instanceName} | ${instance.InstanceId}`, }; if (this.isVpcExist(defaultVpcs, instance.VpcId)) { instanceAnalysis.severity = types_1.SeverityStatus.Failure; instanceAnalysis.message = "Default VPC is used."; instanceAnalysis.action = "Use custom VPC instead of default VPC."; } else { instanceAnalysis.severity = types_1.SeverityStatus.Good; instanceAnalysis.message = "Default VPC is not used."; } allRegionsAnalysis[region].push(instanceAnalysis); } } default_vpcs_used.regions = allRegionsAnalysis; return { default_vpcs_used }; } getDefaultVpcs(vpcs) { if (!vpcs) { return []; } return vpcs.filter((vpc) => { return vpc.IsDefault; }); } isVpcExist(vpcs, vpcId) { if (!vpcs || !vpcId) { return false; } return vpcs.filter((vpc) => { return vpc.VpcId === vpcId; }).length > 0; } } exports.DefaultVpcUsedEC2InstancesAnalyzer = DefaultVpcUsedEC2InstancesAnalyzer;