cloud-report
Version:
Collects and analyzes cloud resources
55 lines (54 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class GroupsAnalyzerAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allGroupUsers = params.group_users;
const allUsers = params.users;
if (!allGroupUsers || !allGroupUsers) {
return undefined;
}
const iam_groups_used = { type: types_1.CheckAnalysisType.Security };
iam_groups_used.what = "Are IAM groups used for granting permissions?";
iam_groups_used.why = `When we use IAM groups to grant access to
IAM users then it will be easy to manage access control`;
iam_groups_used.recommendation = "Recommended to use IAM groups for granting access to the users";
iam_groups_used.benchmark = ['all', 'cis', 'hipaa'];
const groupsByUser = this.mapGroupsByUser(allGroupUsers);
const allUserAnalysis = [];
for (const user of allUsers) {
const userAnalysis = {};
userAnalysis.resource = { user, groups: groupsByUser[user.UserName] };
userAnalysis.resourceSummary = {
name: "User",
value: user.UserName,
};
if (groupsByUser[user.UserName] && groupsByUser[user.UserName].length) {
userAnalysis.severity = types_1.SeverityStatus.Good;
userAnalysis.message = `User belongs to ${groupsByUser[user.UserName].join(", ")} groups`;
}
else {
userAnalysis.severity = types_1.SeverityStatus.Failure;
userAnalysis.message = "User doesn't belong to any group";
userAnalysis.action = "User groups for granting access to the users";
}
allUserAnalysis.push(userAnalysis);
}
iam_groups_used.regions = { global: allUserAnalysis };
return { iam_groups_used };
}
mapGroupsByUser(groups) {
return Object.keys(groups).reduce((groupsMap, groupName) => {
const groupUsers = groups[groupName];
if (groupUsers && groupUsers.length) {
groupUsers.forEach((user) => {
groupsMap[user.UserName] = groupsMap[user.UserName] || [];
groupsMap[user.UserName].push(groupName);
});
}
return groupsMap;
}, {});
}
}
exports.GroupsAnalyzerAnalyzer = GroupsAnalyzerAnalyzer;