UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

45 lines (44 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class RdsPubliclyAccessibleAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allInstances = params.instances; if (!allInstances) { return undefined; } const publicly_accessible = { type: types_1.CheckAnalysisType.Security }; publicly_accessible.what = "Are there any publicly accessible RDS instances?"; publicly_accessible.why = `It is important to restrict RDS instances for private access only for most of the usecases`; publicly_accessible.recommendation = "Recommended to disable public access for RDS instances"; publicly_accessible.benchmark = ['all', 'hipaa']; const allRegionsAnalysis = {}; for (const region in allInstances) { const regionInstances = allInstances[region]; allRegionsAnalysis[region] = []; for (const instance of regionInstances) { const instance_analysis = {}; instance_analysis.resource = instance; instance_analysis.resourceSummary = { name: "DBInstance", value: instance.DBInstanceIdentifier, }; if (instance.PubliclyAccessible) { instance_analysis.severity = types_1.SeverityStatus.Warning; instance_analysis.message = "RDS instance is publicly accessible"; instance_analysis.action = "Recommended to access Database instance privately"; } else { instance_analysis.severity = types_1.SeverityStatus.Good; instance_analysis.message = "RDS instance is not publicly accessible"; } allRegionsAnalysis[region].push(instance_analysis); } } publicly_accessible.regions = allRegionsAnalysis; return { publicly_accessible }; } } exports.RdsPubliclyAccessibleAnalyzer = RdsPubliclyAccessibleAnalyzer;