cloud-report
Version:
Collects and analyzes cloud resources
69 lines (68 loc) • 3.47 kB
JavaScript
;
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;