UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

103 lines (102 loc) 3.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const services_1 = __importDefault(require("../../enums/services")); const regions_1 = require("../../enums/regions"); exports.default = ({ service, data, region, }) => { const { arn: id, roleArn, encryptionConfig = [], resourcesVpcConfig = {}, } = service; const connections = []; const keyArns = encryptionConfig.map(({ provider }) => provider?.keyArn) || []; const sgIds = resourcesVpcConfig.securityGroupIds || []; const clusterSgId = resourcesVpcConfig.clusterSecurityGroupId; const subnetIds = resourcesVpcConfig.subnetIds || []; /** * Find related IAM Roles */ const roles = data.find(({ name }) => name === services_1.default.iamRole); if (roles?.data?.[regions_1.globalRegionName]) { const dataAtRegion = roles.data[regions_1.globalRegionName].filter(role => role.Arn === roleArn); if (!lodash_1.isEmpty(dataAtRegion)) { for (const instance of dataAtRegion) { const { Arn: roleId } = instance; connections.push({ id: roleId, resourceType: services_1.default.iamRole, relation: 'child', field: 'iamRoles', }); } } } /** * Find KMS */ const kmsKeys = data.find(({ name }) => name === services_1.default.kms); if (kmsKeys?.data?.[region]) { const kmsKeyInRegion = kmsKeys.data[region].filter(kmsKey => keyArns.includes(kmsKey.Arn)); if (!lodash_1.isEmpty(kmsKeyInRegion)) { for (const kms of kmsKeyInRegion) { connections.push({ id: kms.KeyId, resourceType: services_1.default.kms, relation: 'child', field: 'kms', }); } } } /** * Find SecurityGroups */ const securityGroups = data.find(({ name }) => name === services_1.default.sg); if (securityGroups?.data?.[region]) { const sgsInRegion = securityGroups.data[region].filter(({ GroupId }) => sgIds.includes(GroupId) || GroupId === clusterSgId); if (!lodash_1.isEmpty(sgsInRegion)) { for (const sg of sgsInRegion) { connections.push({ id: sg.GroupId, resourceType: services_1.default.sg, relation: 'child', field: 'securityGroups', }); } } } /** * Find Subnets */ const subnets = data.find(({ name }) => name === services_1.default.subnet); if (subnets?.data?.[region]) { const subnet = subnets.data[region].find(({ SubnetId }) => subnetIds.includes(SubnetId)); if (subnet) { connections.push({ id: subnet.SubnetId, resourceType: services_1.default.subnet, relation: 'child', field: 'subnets', }); } } /** * Find VPCs */ const vpcs = data.find(({ name }) => name === services_1.default.vpc); if (vpcs?.data?.[region]) { const vpc = vpcs.data[region].find(({ VpcId }) => VpcId === resourcesVpcConfig.vpcId); if (vpc) { connections.push({ id: vpc.VpcId, resourceType: services_1.default.vpc, relation: 'child', field: 'vpc', }); } } const result = { [id]: connections, }; return result; };