UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

65 lines (64 loc) 3.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); const millsInOneDay = 24 * 60 * 60 * 1000; class CertificatesExpiryAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allCertificates = params.certificate_details; if (!allCertificates) { return undefined; } const certificates_expiry = { type: types_1.CheckAnalysisType.Reliability }; certificates_expiry.what = "Are certificates expiring soon?"; certificates_expiry.why = "Expired certificates can make services inaccessible for your customers."; certificates_expiry.recommendation = `Recommended to enable AutoRenew option or renew manually before certificates expiry`; certificates_expiry.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allCertificates) { allRegionsAnalysis[region] = []; const regionCertificates = allCertificates[region]; for (const certificate of regionCertificates) { const certificate_analysis = {}; certificate_analysis.resource = { CertificateArn: certificate.CertificateArn, DomainName: certificate.DomainName, }; certificate_analysis.resourceSummary = { name: "Certificate", value: `${certificate.DomainName} | ${this.getCertificateId(certificate.CertificateArn)}`, }; const expirationTime = new Date(certificate.NotAfter); const dateAfter30Days = new Date(Date.now() + 30 * millsInOneDay); const dateAfter90Days = new Date(Date.now() + 90 * millsInOneDay); if (expirationTime < new Date()) { certificate_analysis.severity = types_1.SeverityStatus.Failure; certificate_analysis.message = "Certificate is expired"; certificate_analysis.action = "Renew the certificate or remove it if no longer needed"; } else if (expirationTime < dateAfter30Days) { certificate_analysis.severity = types_1.SeverityStatus.Failure; certificate_analysis.message = "Certificate is expiring within a month"; certificate_analysis.action = "Renew the certificate immediately"; } else if (expirationTime < dateAfter90Days) { certificate_analysis.severity = types_1.SeverityStatus.Warning; certificate_analysis.message = "Certificate is expiring within 3 months"; certificate_analysis.action = "Plan for its renewal"; } else { certificate_analysis.severity = types_1.SeverityStatus.Good; certificate_analysis.message = "Certificate is valid for more than 3 months"; } allRegionsAnalysis[region].push(certificate_analysis); } } certificates_expiry.regions = allRegionsAnalysis; return { certificates_expiry }; } getCertificateId(certificateArn) { return certificateArn.split("/").pop(); } } exports.CertificatesExpiryAnalyzer = CertificatesExpiryAnalyzer;