Example #1
0
    def get(self, uuid=None, rule_id=None, user_id=None):
        """Retrieve all rules or a specific one

        :param uuid: policy ID
        :param rule_id: rule ID
        :param user_id: user ID who do the request
        :return: {
            "rules": [
                "policy_id": "policy_id1",
                "meta_rule_id": "meta_rule_id1",
                "rule_id1":
                    ["subject_data_id1", "object_data_id1", "action_data_id1"],
                "rule_id2":
                    ["subject_data_id2", "object_data_id2", "action_data_id2"],
            ]
        }
        :internal_api: get_rules
        """
        try:
            data = PolicyManager.get_rules(user_id=user_id,
                                           policy_id=uuid,
                                           rule_id=rule_id)
        except Exception as e:
            logger.error(e, exc_info=True)
            return {"result": False,
                    "error": str(e)}, 500
        return {"rules": data}
Example #2
0
    def _export_rules(self, json_content):
        policies = PolicyManager.get_policies(self._user_id)
        rules_array = []

        for policy_key in policies:
            rules = PolicyManager.get_rules(self._user_id, policy_key)
            rules = rules["rules"]
            # logger.info(rules)
            for rule in rules:
                rule_dict = dict()
                JsonUtils.copy_field_if_exists(rule, rule_dict, "instructions",
                                               dict)
                JsonUtils.copy_field_if_exists(rule, rule_dict, "enabled",
                                               True)
                JsonUtils.convert_id_to_name(rule["meta_rule_id"], rule_dict,
                                             "meta_rule", "meta_rule",
                                             ModelManager, self._user_id)
                JsonUtils.convert_id_to_name(policy_key, rule_dict, "policy",
                                             "policy", PolicyManager,
                                             self._user_id)
                ids = rule["rule"]
                rule_description = dict()
                meta_rule = ModelManager.get_meta_rules(
                    self._user_id, rule["meta_rule_id"])
                meta_rule = [v for v in meta_rule.values()]
                meta_rule = meta_rule[0]
                index_subject_data = len(meta_rule["subject_categories"]) - 1
                index_object_data = len(meta_rule["subject_categories"]) + len(
                    meta_rule["object_categories"]) - 1
                index_action_data = len(meta_rule["subject_categories"]) + len(
                    meta_rule["object_categories"]) + len(
                        meta_rule["action_categories"]) - 1
                ids_subject_data = [ids[0]] if len(
                    meta_rule["subject_categories"]
                ) == 1 else ids[0:index_subject_data]
                ids_object_data = [ids[index_object_data]] if len(
                    meta_rule["object_categories"]
                ) == 1 else ids[index_subject_data + 1:index_object_data]
                ids_action_date = [ids[index_action_data]] if len(
                    meta_rule["action_categories"]
                ) == 1 else ids[index_object_data + 1:index_action_data]
                JsonUtils.convert_ids_to_names(ids_subject_data,
                                               rule_description,
                                               "subject_data", "subject_data",
                                               PolicyManager, self._user_id,
                                               policy_key)
                JsonUtils.convert_ids_to_names(ids_object_data,
                                               rule_description, "object_data",
                                               "object_data", PolicyManager,
                                               self._user_id, policy_key)
                JsonUtils.convert_ids_to_names(ids_action_date,
                                               rule_description, "action_data",
                                               "action_data", PolicyManager,
                                               self._user_id, policy_key)
                rule_dict["rule"] = rule_description
                rules_array.append(rule_dict)

        if len(rules_array) > 0:
            json_content['rules'] = rules_array
Example #3
0
def get_rules(policy_id=None, meta_rule_id=None, rule_id=None):
    from python_moondb.core import PolicyManager
    return PolicyManager.get_rules("", policy_id, meta_rule_id, rule_id)