UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

57 lines (56 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class ApiRequestLogsAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allApis = params.apis; const allApiStages = params.api_stages; if (!allApis || !allApiStages) { return undefined; } const api_logs_enabled = { type: types_1.CheckAnalysisType.OperationalExcellence }; api_logs_enabled.what = "Are APIs logging requests and response?"; api_logs_enabled.why = "Logging request and response helps to debug APIs better"; api_logs_enabled.recommendation = `Recommended to enable logs for all Apis which doesn't handle sensitive data as we can't log sensitive information in logs`; api_logs_enabled.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allApis) { const regionApis = allApis[region]; allRegionsAnalysis[region] = []; for (const api of regionApis) { if (!allApiStages[region][api.id] || !allApiStages[region][api.id].length) { continue; } for (const apiStage of allApiStages[region][api.id]) { const apiStageAnalysis = {}; apiStageAnalysis.resource = { apiName: api.name, stage: apiStage }; apiStageAnalysis.resourceSummary = { name: "ApiState", value: `${api.name} | ${apiStage.stageName}`, }; if (this.isRequestLoggingEnabled(apiStage)) { apiStageAnalysis.severity = types_1.SeverityStatus.Good; apiStageAnalysis.message = "Request Logging is enabled"; } else { apiStageAnalysis.severity = types_1.SeverityStatus.Info; apiStageAnalysis.message = "Request Logging is not enabled"; apiStageAnalysis.action = `Enable Request Logging for API if it doesn't deal with any sensitive data`; } allRegionsAnalysis[region].push(apiStageAnalysis); } } } api_logs_enabled.regions = allRegionsAnalysis; return { api_logs_enabled }; } isRequestLoggingEnabled(stage) { if (stage.methodSettings["*/*"]) { return stage.methodSettings["*/*"].dataTraceEnabled; } } } exports.ApiRequestLogsAnalyzer = ApiRequestLogsAnalyzer;