cloud-report
Version:
Collects and analyzes cloud resources
68 lines (67 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const utils_1 = require("../../../utils");
const base_1 = require("../../base");
class DedicatedVpcUsedEC2InstancesAnalyzer 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 dedicated_vpcs_used = { type: types_1.CheckAnalysisType.Security };
dedicated_vpcs_used.what = "Are there any dedicated vpc used for EC2 instances?";
dedicated_vpcs_used.why = "Dedicated vpc are safe and secure and can only be accessed by person who is assigned to it.";
dedicated_vpcs_used.recommendation = `Recommended to use Dedicated vpc.`;
dedicated_vpcs_used.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allInstances) {
const regionInstances = allInstances[region];
const regionVpcs = allVpcs[region];
const dedicatedVpcs = this.getDedicatedVpcs(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(dedicatedVpcs, instance.VpcId)) {
instanceAnalysis.severity = types_1.SeverityStatus.Failure;
instanceAnalysis.message = "Default VPC.";
instanceAnalysis.action = "Use dedicated VPC.";
}
else {
instanceAnalysis.severity = types_1.SeverityStatus.Good;
instanceAnalysis.message = "Dedicated VPC.";
}
allRegionsAnalysis[region].push(instanceAnalysis);
}
}
dedicated_vpcs_used.regions = allRegionsAnalysis;
return { dedicated_vpcs_used };
}
getDedicatedVpcs(vpcs) {
if (!vpcs) {
return [];
}
return vpcs.filter((vpc) => {
return vpc.IsDedicated;
});
}
isVpcExist(vpcs, vpcId) {
if (!vpcs || !vpcId) {
return false;
}
return vpcs.filter((vpc) => {
return vpc.VpcId === vpcId;
}).length > 0;
}
}
exports.DedicatedVpcUsedEC2InstancesAnalyzer = DedicatedVpcUsedEC2InstancesAnalyzer;