UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

69 lines (68 loc) 3.47 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 SecurityGroupsUnusedAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allSecurityGroups = params.security_groups; const allInstances = params.instances; if (!allSecurityGroups || !allInstances) { return undefined; } const security_groups_unused = { type: types_1.CheckAnalysisType.OperationalExcellence }; security_groups_unused.what = "Are there any security groups unused?"; security_groups_unused.why = "Unused security groups causes confusion and allows to make mistakes"; security_groups_unused.recommendation = "Recommended delete unused security groups"; security_groups_unused.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allInstances) { const regionInstances = allInstances[region]; const regionSecurityGroups = allSecurityGroups[region]; allRegionsAnalysis[region] = []; const securityGroupInstancesMap = {}; if (!regionInstances) { continue; } for (const instance of regionInstances) { const instanceData = { name: utils_1.ResourceUtil.getNameByTags(instance), instanceId: instance.InstanceId }; for (const securityGroup of instance.SecurityGroups) { securityGroupInstancesMap[securityGroup.GroupId] = securityGroupInstancesMap[securityGroup.GroupId] || []; securityGroupInstancesMap[securityGroup.GroupId].push(instanceData); } } if (!regionSecurityGroups) { continue; } for (const securityGroup of regionSecurityGroups) { if (securityGroup.GroupName === "default") { continue; } const securityGroupAnalysis = {}; securityGroupAnalysis.resource = { id: securityGroup.GroupId, instances: securityGroupInstancesMap[securityGroup.GroupId], name: securityGroup.GroupName, }; securityGroupAnalysis.resourceSummary = { name: "SecurityGroup", value: `${securityGroup.GroupName} | ${securityGroup.GroupId}`, }; if (securityGroupInstancesMap[securityGroup.GroupId]) { securityGroupAnalysis.severity = types_1.SeverityStatus.Good; securityGroupAnalysis.message = "Security group is used"; } else { securityGroupAnalysis.severity = types_1.SeverityStatus.Warning; securityGroupAnalysis.message = "Security group is not used"; securityGroupAnalysis.action = "Delete the security group"; } allRegionsAnalysis[region].push(securityGroupAnalysis); } } security_groups_unused.regions = allRegionsAnalysis; return { security_groups_unused }; } } exports.SecurityGroupsUnusedAnalyzer = SecurityGroupsUnusedAnalyzer;