Search in sources :

Example 1 with VXMetricAuditDetailsCount

use of org.apache.ranger.view.VXMetricAuditDetailsCount in project ranger by apache.

the class MetricUtil method metricCalculation.

private void metricCalculation(String caseValue) {
    logger.info("Metric Type : " + caseValue);
    try {
        SearchCriteria searchCriteria = new SearchCriteria();
        searchCriteria.setStartIndex(0);
        searchCriteria.setMaxRows(100);
        searchCriteria.setGetCount(true);
        searchCriteria.setSortType("asc");
        switch(caseValue.toLowerCase()) {
            case "usergroup":
                try {
                    VXGroupList vxGroupList = xUserMgr.searchXGroups(searchCriteria);
                    long groupCount = vxGroupList.getTotalCount();
                    ArrayList<String> userKeyAdminRoleCount = new ArrayList<String>();
                    userKeyAdminRoleCount.add(RangerConstants.ROLE_SYS_ADMIN);
                    long userSysAdminCount = getUserCountBasedOnUserRole(userKeyAdminRoleCount);
                    ArrayList<String> userRoleListKeyRoleAdmin = new ArrayList<String>();
                    userRoleListKeyRoleAdmin.add(RangerConstants.ROLE_KEY_ADMIN);
                    long userKeyAdminCount = getUserCountBasedOnUserRole(userRoleListKeyRoleAdmin);
                    ArrayList<String> userRoleListUser = new ArrayList<String>();
                    userRoleListUser.add(RangerConstants.ROLE_USER);
                    long userRoleCount = getUserCountBasedOnUserRole(userRoleListUser);
                    long userTotalCount = userSysAdminCount + userKeyAdminCount + userRoleCount;
                    VXMetricUserGroupCount metricUserGroupCount = new VXMetricUserGroupCount();
                    metricUserGroupCount.setUserCountOfUserRole(userRoleCount);
                    metricUserGroupCount.setUserCountOfKeyAdminRole(userKeyAdminCount);
                    metricUserGroupCount.setUserCountOfSysAdminRole(userSysAdminCount);
                    metricUserGroupCount.setUserTotalCount(userTotalCount);
                    metricUserGroupCount.setGroupCount(groupCount);
                    Gson gson = new GsonBuilder().create();
                    final String jsonUserGroupCount = gson.toJson(metricUserGroupCount);
                    System.out.println(jsonUserGroupCount);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for usergroup : " + e.getMessage());
                }
                break;
            case "audits":
                try {
                    int clientTimeOffsetInMinute = RestUtil.getClientTimeOffset();
                    String defaultDateFormat = "MM/dd/yyyy";
                    DateFormat formatter = new SimpleDateFormat(defaultDateFormat);
                    VXMetricAuditDetailsCount auditObj = new VXMetricAuditDetailsCount();
                    DateUtil dateUtilTwoDays = new DateUtil();
                    Date startDateUtilTwoDays = dateUtilTwoDays.getDateFromNow(-2);
                    Date dStart2 = restErrorUtil.parseDate(formatter.format(startDateUtilTwoDays), "Invalid value for startDate", MessageEnums.INVALID_INPUT_DATA, null, "startDate", defaultDateFormat);
                    Date endDateTwoDays = MiscUtil.getUTCDate();
                    Date dEnd2 = restErrorUtil.parseDate(formatter.format(endDateTwoDays), "Invalid value for endDate", MessageEnums.INVALID_INPUT_DATA, null, "endDate", defaultDateFormat);
                    dEnd2 = dateUtilTwoDays.getDateFromGivenDate(dEnd2, 0, 23, 59, 59);
                    dEnd2 = dateUtilTwoDays.addTimeOffset(dEnd2, clientTimeOffsetInMinute);
                    VXMetricServiceCount deniedCountObj = getAuditsCount(0, dStart2, dEnd2);
                    auditObj.setDenialEventsCountTwoDays(deniedCountObj);
                    VXMetricServiceCount allowedCountObj = getAuditsCount(1, dStart2, dEnd2);
                    auditObj.setAccessEventsCountTwoDays(allowedCountObj);
                    long totalAuditsCountTwoDays = deniedCountObj.getTotalCount() + allowedCountObj.getTotalCount();
                    auditObj.setSolrIndexCountTwoDays(totalAuditsCountTwoDays);
                    DateUtil dateUtilWeek = new DateUtil();
                    Date startDateUtilWeek = dateUtilWeek.getDateFromNow(-7);
                    Date dStart7 = restErrorUtil.parseDate(formatter.format(startDateUtilWeek), "Invalid value for startDate", MessageEnums.INVALID_INPUT_DATA, null, "startDate", defaultDateFormat);
                    Date endDateWeek = MiscUtil.getUTCDate();
                    DateUtil dateUtilweek = new DateUtil();
                    Date dEnd7 = restErrorUtil.parseDate(formatter.format(endDateWeek), "Invalid value for endDate", MessageEnums.INVALID_INPUT_DATA, null, "endDate", defaultDateFormat);
                    dEnd7 = dateUtilweek.getDateFromGivenDate(dEnd7, 0, 23, 59, 59);
                    dEnd7 = dateUtilweek.addTimeOffset(dEnd7, clientTimeOffsetInMinute);
                    VXMetricServiceCount deniedCountObjWeek = getAuditsCount(0, dStart7, dEnd7);
                    auditObj.setDenialEventsCountWeek(deniedCountObjWeek);
                    VXMetricServiceCount allowedCountObjWeek = getAuditsCount(1, dStart7, dEnd7);
                    auditObj.setAccessEventsCountWeek(allowedCountObjWeek);
                    long totalAuditsCountWeek = deniedCountObjWeek.getTotalCount() + allowedCountObjWeek.getTotalCount();
                    auditObj.setSolrIndexCountWeek(totalAuditsCountWeek);
                    Gson gson = new GsonBuilder().create();
                    final String jsonAudit = gson.toJson(auditObj);
                    System.out.println(jsonAudit);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for audits : " + e.getMessage());
                }
                break;
            case "services":
                try {
                    SearchFilter serviceFilter = new SearchFilter();
                    serviceFilter.setMaxRows(200);
                    serviceFilter.setStartIndex(0);
                    serviceFilter.setGetCount(true);
                    serviceFilter.setSortBy("serviceId");
                    serviceFilter.setSortType("asc");
                    VXMetricServiceCount vXMetricServiceCount = new VXMetricServiceCount();
                    PList<RangerService> paginatedSvcs = svcStore.getPaginatedServices(serviceFilter);
                    long totalServiceCount = paginatedSvcs.getTotalCount();
                    List<RangerService> rangerServiceList = paginatedSvcs.getList();
                    Map<String, Long> services = new HashMap<String, Long>();
                    for (Object rangerService : rangerServiceList) {
                        RangerService RangerServiceObj = (RangerService) rangerService;
                        String serviceName = RangerServiceObj.getType();
                        if (!(services.containsKey(serviceName))) {
                            serviceFilter.setParam("serviceType", serviceName);
                            PList<RangerService> paginatedSvcscount = svcStore.getPaginatedServices(serviceFilter);
                            services.put(serviceName, paginatedSvcscount.getTotalCount());
                        }
                    }
                    vXMetricServiceCount.setServiceBasedCountList(services);
                    vXMetricServiceCount.setTotalCount(totalServiceCount);
                    Gson gson = new GsonBuilder().create();
                    final String jsonServices = gson.toJson(vXMetricServiceCount);
                    System.out.println(jsonServices);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for services : " + e.getMessage());
                }
                break;
            case "policies":
                try {
                    SearchFilter policyFilter = new SearchFilter();
                    policyFilter.setMaxRows(200);
                    policyFilter.setStartIndex(0);
                    policyFilter.setGetCount(true);
                    policyFilter.setSortBy("serviceId");
                    policyFilter.setSortType("asc");
                    VXMetricPolicyCount vXMetricPolicyCount = new VXMetricPolicyCount();
                    PList<RangerPolicy> paginatedSvcsList = svcStore.getPaginatedPolicies(policyFilter);
                    vXMetricPolicyCount.setTotalCount(paginatedSvcsList.getTotalCount());
                    Map<String, VXMetricServiceCount> servicesWithPolicy = new HashMap<String, VXMetricServiceCount>();
                    for (int k = 2; k >= 0; k--) {
                        String serviceType = String.valueOf(k);
                        VXMetricServiceCount vXMetricServiceCount = getVXMetricServiceCount(serviceType);
                        if (k == 2) {
                            servicesWithPolicy.put("rowFilteringPolicies", vXMetricServiceCount);
                        } else if (k == 1) {
                            servicesWithPolicy.put("maskingPolicies", vXMetricServiceCount);
                        } else if (k == 0) {
                            servicesWithPolicy.put("resourcePolicy", vXMetricServiceCount);
                        }
                    }
                    boolean tagFlag = false;
                    if (tagFlag == false) {
                        policyFilter.setParam("serviceType", "tag");
                        PList<RangerPolicy> policiestype = svcStore.getPaginatedPolicies(policyFilter);
                        Map<String, Long> tagMap = new HashMap<String, Long>();
                        long tagCount = policiestype.getTotalCount();
                        tagMap.put("tag", tagCount);
                        VXMetricServiceCount vXMetricServiceCount = new VXMetricServiceCount();
                        vXMetricServiceCount.setServiceBasedCountList(tagMap);
                        vXMetricServiceCount.setTotalCount(tagCount);
                        servicesWithPolicy.put("tagBasedPolicies", vXMetricServiceCount);
                        tagFlag = true;
                    }
                    vXMetricPolicyCount.setPolicyCountList(servicesWithPolicy);
                    Gson gson = new GsonBuilder().create();
                    final String jsonPolicies = gson.toJson(vXMetricPolicyCount);
                    System.out.println(jsonPolicies);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for policies : " + e.getMessage());
                }
                break;
            case "database":
                try {
                    int dbFlavor = RangerBizUtil.getDBFlavor();
                    String dbFlavourType = "Unknow ";
                    if (dbFlavor == AppConstants.DB_FLAVOR_MYSQL) {
                        dbFlavourType = "MYSQL ";
                    } else if (dbFlavor == AppConstants.DB_FLAVOR_ORACLE) {
                        dbFlavourType = "ORACLE ";
                    } else if (dbFlavor == AppConstants.DB_FLAVOR_POSTGRES) {
                        dbFlavourType = "POSTGRES ";
                    } else if (dbFlavor == AppConstants.DB_FLAVOR_SQLANYWHERE) {
                        dbFlavourType = "SQLANYWHERE ";
                    } else if (dbFlavor == AppConstants.DB_FLAVOR_SQLSERVER) {
                        dbFlavourType = "SQLSERVER ";
                    }
                    String dbDetail = dbFlavourType + xaBizUtil.getDBVersion();
                    Gson gson = new GsonBuilder().create();
                    final String jsonDBDetail = gson.toJson(dbDetail);
                    System.out.println(jsonDBDetail);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for database : " + e.getMessage());
                }
                break;
            case "contextenrichers":
                try {
                    SearchFilter filter = new SearchFilter();
                    filter.setStartIndex(0);
                    VXMetricContextEnricher serviceWithContextEnrichers = new VXMetricContextEnricher();
                    PList<RangerServiceDef> paginatedSvcDefs = svcStore.getPaginatedServiceDefs(filter);
                    List<RangerServiceDef> repoTypeList = paginatedSvcDefs.getList();
                    if (repoTypeList != null) {
                        for (RangerServiceDef repoType : repoTypeList) {
                            RangerServiceDef rangerServiceDefObj = (RangerServiceDef) repoType;
                            String name = rangerServiceDefObj.getName();
                            List<RangerContextEnricherDef> contextEnrichers = rangerServiceDefObj.getContextEnrichers();
                            if (contextEnrichers != null && !contextEnrichers.isEmpty()) {
                                serviceWithContextEnrichers.setServiceName(name);
                                serviceWithContextEnrichers.setTotalCount(contextEnrichers.size());
                            }
                        }
                    }
                    Gson gson = new GsonBuilder().create();
                    final String jsonContextEnrichers = gson.toJson(serviceWithContextEnrichers);
                    System.out.println(jsonContextEnrichers);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for contextenrichers : " + e.getMessage());
                }
                break;
            case "denyconditions":
                try {
                    SearchFilter policyFilter1 = new SearchFilter();
                    policyFilter1.setMaxRows(200);
                    policyFilter1.setStartIndex(0);
                    policyFilter1.setGetCount(true);
                    policyFilter1.setSortBy("serviceId");
                    policyFilter1.setSortType("asc");
                    int denyCount = 0;
                    Map<String, Integer> denyconditionsonMap = new HashMap<String, Integer>();
                    PList<RangerServiceDef> paginatedSvcDefs = svcStore.getPaginatedServiceDefs(policyFilter1);
                    if (paginatedSvcDefs != null) {
                        List<RangerServiceDef> rangerServiceDefs = paginatedSvcDefs.getList();
                        if (rangerServiceDefs != null && !rangerServiceDefs.isEmpty()) {
                            for (RangerServiceDef rangerServiceDef : rangerServiceDefs) {
                                if (rangerServiceDef != null) {
                                    String serviceDef = rangerServiceDef.getName();
                                    if (!StringUtils.isEmpty(serviceDef)) {
                                        policyFilter1.setParam("serviceType", serviceDef);
                                        PList<RangerPolicy> policiesList = svcStore.getPaginatedPolicies(policyFilter1);
                                        if (policiesList != null && policiesList.getListSize() > 0) {
                                            int policyListCount = policiesList.getListSize();
                                            if (policyListCount > 0 && policiesList.getList() != null) {
                                                List<RangerPolicy> policies = policiesList.getList();
                                                for (RangerPolicy policy : policies) {
                                                    if (policy != null) {
                                                        List<RangerPolicyItem> policyItem = policy.getDenyPolicyItems();
                                                        if (policyItem != null && !policyItem.isEmpty()) {
                                                            if (denyconditionsonMap.get(serviceDef) != null) {
                                                                denyCount = denyconditionsonMap.get(serviceDef) + denyCount + policyItem.size();
                                                            } else {
                                                                denyCount = denyCount + policyItem.size();
                                                            }
                                                        }
                                                        List<RangerPolicyItem> policyItemExclude = policy.getDenyExceptions();
                                                        if (policyItemExclude != null && !policyItemExclude.isEmpty()) {
                                                            if (denyconditionsonMap.get(serviceDef) != null) {
                                                                denyCount = denyconditionsonMap.get(serviceDef) + denyCount + policyItemExclude.size();
                                                            } else {
                                                                denyCount = denyCount + policyItemExclude.size();
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        policyFilter1.removeParam("serviceType");
                                    }
                                    denyconditionsonMap.put(serviceDef, denyCount);
                                    denyCount = 0;
                                }
                            }
                        }
                    }
                    Gson gson = new GsonBuilder().create();
                    String jsonContextDenyCondtionOn = gson.toJson(denyconditionsonMap);
                    System.out.println(jsonContextDenyCondtionOn);
                } catch (Exception e) {
                    logger.error("Error calculating Metric for denyconditions : " + e.getMessage());
                }
                break;
            default:
                System.out.println("type: Incorrect Arguments usage : -type policies | audits | usergroup | services | database | contextenrichers | denyconditions");
                logger.info("Please enter the valid arguments for Metric Calculation");
                break;
        }
    } catch (Exception e) {
        logger.error("Error calculating Metric : " + e.getMessage());
    }
}
Also used : VXMetricAuditDetailsCount(org.apache.ranger.view.VXMetricAuditDetailsCount) HashMap(java.util.HashMap) DateUtil(org.apache.ranger.common.DateUtil) VXGroupList(org.apache.ranger.view.VXGroupList) ArrayList(java.util.ArrayList) Gson(com.google.gson.Gson) SearchFilter(org.apache.ranger.plugin.util.SearchFilter) VXMetricPolicyCount(org.apache.ranger.view.VXMetricPolicyCount) RangerPolicy(org.apache.ranger.plugin.model.RangerPolicy) VXMetricUserGroupCount(org.apache.ranger.view.VXMetricUserGroupCount) RangerService(org.apache.ranger.plugin.model.RangerService) GsonBuilder(com.google.gson.GsonBuilder) VXMetricContextEnricher(org.apache.ranger.view.VXMetricContextEnricher) RangerPolicyItem(org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem) SearchCriteria(org.apache.ranger.common.SearchCriteria) Date(java.util.Date) RangerContextEnricherDef(org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef) SimpleDateFormat(java.text.SimpleDateFormat) DateFormat(java.text.DateFormat) VXMetricServiceCount(org.apache.ranger.view.VXMetricServiceCount) RangerServiceDef(org.apache.ranger.plugin.model.RangerServiceDef) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

Gson (com.google.gson.Gson)1 GsonBuilder (com.google.gson.GsonBuilder)1 DateFormat (java.text.DateFormat)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 DateUtil (org.apache.ranger.common.DateUtil)1 SearchCriteria (org.apache.ranger.common.SearchCriteria)1 RangerPolicy (org.apache.ranger.plugin.model.RangerPolicy)1 RangerPolicyItem (org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem)1 RangerService (org.apache.ranger.plugin.model.RangerService)1 RangerServiceDef (org.apache.ranger.plugin.model.RangerServiceDef)1 RangerContextEnricherDef (org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef)1 SearchFilter (org.apache.ranger.plugin.util.SearchFilter)1 VXGroupList (org.apache.ranger.view.VXGroupList)1 VXMetricAuditDetailsCount (org.apache.ranger.view.VXMetricAuditDetailsCount)1 VXMetricContextEnricher (org.apache.ranger.view.VXMetricContextEnricher)1 VXMetricPolicyCount (org.apache.ranger.view.VXMetricPolicyCount)1 VXMetricServiceCount (org.apache.ranger.view.VXMetricServiceCount)1