UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

50 lines (49 loc) 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class CloudTrailsBucketMFADeleteAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allBucketVersionings = params.bucket_versioning; if (!fullReport["aws.trails"] || !fullReport["aws.trails"].cloud_trails || !allBucketVersionings) { return undefined; } const allCloudTrails = fullReport["aws.trails"].cloud_trails; const cloud_trails_bucket_mfa_delete = { type: types_1.CheckAnalysisType.Security }; cloud_trails_bucket_mfa_delete.what = "Is deleting cloud trails protected by MFA?"; cloud_trails_bucket_mfa_delete.why = `Cloud trails deletes should be MFA enabled so that attacker won't able to delete them`; cloud_trails_bucket_mfa_delete.recommendation = "Recommended to enable MFA for deleting Cloud Trails"; cloud_trails_bucket_mfa_delete.benchmark = ['all']; const allBucketsAnalysis = []; const cloudTrailBuckets = this.getCloudTrailBuckets(allCloudTrails); for (const bucketName of cloudTrailBuckets) { const bucketVersioning = allBucketVersionings[bucketName]; const bucketAnalysis = {}; bucketAnalysis.resource = { bucketName, bucketVersioning }; bucketAnalysis.resourceSummary = { name: "Bucket", value: bucketName }; if (bucketVersioning && bucketVersioning.MFADelete === "Enabled") { bucketAnalysis.severity = types_1.SeverityStatus.Good; bucketAnalysis.message = "Deletes are MFA enabled"; } else { bucketAnalysis.severity = types_1.SeverityStatus.Failure; bucketAnalysis.message = "Deletes are not MFA enabled"; bucketAnalysis.action = "Enable MFADelete"; } allBucketsAnalysis.push(bucketAnalysis); } cloud_trails_bucket_mfa_delete.regions = { global: allBucketsAnalysis }; return { cloud_trails_bucket_mfa_delete }; } getCloudTrailBuckets(cloudTrails) { const s3Buckets = {}; for (const region in cloudTrails) { cloudTrails[region].forEach((trail) => { s3Buckets[trail.S3BucketName] = 1; }); } return Object.keys(s3Buckets); } } exports.CloudTrailsBucketMFADeleteAnalyzer = CloudTrailsBucketMFADeleteAnalyzer;