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