cloud-report
Version:
Collects and analyzes cloud resources
45 lines (44 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class DescribeMetricsForAlarmsAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const metrics = params.metrics;
if (!metrics) {
return undefined;
}
const allMetrics = fullReport["aws.cloudwatch"].metrics;
const describe_metrics_for_alarms = { type: types_1.CheckAnalysisType.Security };
describe_metrics_for_alarms.what = "Is a log metric filter and alarm exist for defined changes in your AWS Infra?";
describe_metrics_for_alarms.why = "Ensure there is an Amazon CloudWatch alarm created and configured in your AWS account to track the predefined changes.";
describe_metrics_for_alarms.recommendation = "Recommended to create log metric filter for the defined metric.";
describe_metrics_for_alarms.benchmark = ['all', 'hipaa'];
const allRegionsAnalysis = {};
for (const region in allMetrics) {
const regionAlarms = allMetrics[region] || [];
allRegionsAnalysis[region] = [];
for (const metric of regionAlarms) {
const metricAnalysis = {};
metricAnalysis.resource = { metric };
metricAnalysis.resourceSummary = {
name: "metricName",
value: metric.MetricName
};
if (metric.data.length) {
metricAnalysis.severity = types_1.SeverityStatus.Good;
metricAnalysis.message = "Log metrics are enabled";
}
else {
metricAnalysis.severity = types_1.SeverityStatus.Failure;
metricAnalysis.message = "Log metrics are enabled";
metricAnalysis.action = "Create Log metrics for the identified metric";
}
allRegionsAnalysis[region].push(metricAnalysis);
}
}
describe_metrics_for_alarms.regions = allRegionsAnalysis;
return { describe_metrics_for_alarms };
}
}
exports.DescribeMetricsForAlarmsAnalyzer = DescribeMetricsForAlarmsAnalyzer;