UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

69 lines (68 loc) 3.14 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 DedicatedTenUsedEC2InstancesAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allInstances = params.instances; if (!fullReport["aws.ec2"] || !fullReport["aws.ec2"].ec2 || !allInstances) { return undefined; } const allEc2s = fullReport["aws.ec2"].ec2; const dedicated_ec2_used = { type: types_1.CheckAnalysisType.Security }; dedicated_ec2_used.what = "Are there any dedicated ec2 used for EC2 instances?"; dedicated_ec2_used.why = "Dedicated ec2 are open to world by dedicated and requires extra setup make them secure"; dedicated_ec2_used.recommendation = `Recommended not to use dedicated ec2 instead create a custom one as they make you better understand the security posture`; dedicated_ec2_used.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allInstances) { const regionInstances = allInstances[region]; const regionEc2s = allEc2s[region]; const dedicatedEc2s = this.getDedicatedEc2s(regionEc2s); allRegionsAnalysis[region] = []; for (const instance of regionInstances) { const instanceAnalysis = {}; instanceAnalysis.resource = { instanceId: instance.InstanceId, instanceName: utils_1.ResourceUtil.getNameByTags(instance), ec2Id: instance.Ec2Id, }; instanceAnalysis.resourceSummary = { name: "Instance", value: `${instanceAnalysis.resource.instanceName} | ${instance.InstanceId}`, }; if (this.isEc2Exist(dedicatedEc2s, instance.Ec2Id)) { instanceAnalysis.severity = types_1.SeverityStatus.Failure; instanceAnalysis.message = "Dedicated Ec2 is used"; instanceAnalysis.action = "Use custom Ec2 instead of dedicated Ec2"; } else { instanceAnalysis.severity = types_1.SeverityStatus.Good; instanceAnalysis.message = "Dedicated Ec2 is not used"; } allRegionsAnalysis[region].push(instanceAnalysis); } } dedicated_ec2_used.regions = allRegionsAnalysis; return { dedicated_ec2_used }; } getDedicatedEc2s(ec2) { if (!ec2) { return []; } return ec2.filter((ec2) => { return ec2.IsDedicated; }); } isEc2Exist(ec2, ec2Id) { if (!ec2 || !ec2Id) { return false; } return ec2.filter((ec2) => { return ec2.Ec2Id === ec2Id; }).length > 0; } } exports.DedicatedTenUsedEC2InstancesAnalyzer = DedicatedTenUsedEC2InstancesAnalyzer;