예제 #1
0
    def take_action(self, parsed_args):

        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port
        # project_id = args.keystone_pid

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        if parsed_args.filename:
            LOGGER.info("Loading: {}".format(parsed_args.filename))
        m = SourceFileLoader("scenario", parsed_args.filename)
        scenario = m.load_module()

        _models = models.check_model()
        for _model_id, _model_value in _models['models'].items():
            if _model_value['name'] == scenario.model_name:
                model_id = _model_id
                meta_rule_list = _model_value['meta_rules']
                models.create_model(scenario, model_id)
                break
        else:
            model_id, meta_rule_list = models.create_model(scenario)
        policy_id = policies.create_policy(scenario, model_id, meta_rule_list)
        pdp_id = pdp.create_pdp(scenario, policy_id=policy_id)
        pdp_name = PdpUtils.get_pdp_name(pdp, pdp_id, None)
        LOGGER.info("Pdp created : [id='{}', name='{}']".format(pdp_id, pdp_name))
예제 #2
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        # _pdp_key = PdpUtils.get_pdp_id(pdp, parsed_args.id_pdp, parsed_args.name_pdp)
        _pdp_name = PdpUtils.get_pdp_name(pdp, parsed_args.id_pdp, parsed_args.name_pdp)
        if _pdp_name is None:
            LOGGER.error("Error pdp not found ")
            return

        # _project_key = ProjectsUtils.get_project_id(
        # pdp, parsed_args.id_project, parsed_args.name_project)
        _project_name = ProjectsUtils.get_project_name(pdp, parsed_args.id_project,
                                                       parsed_args.name_project)
        if _project_name is None:
            LOGGER.error("Error project not found ")
            return

        LOGGER.info("Mapping: {}=>{}".format(_pdp_name, _project_name))

        # pdp.map_to_keystone(pdp_id=parsed_args.id_pdp, keystone_project_id=parsed_args.id_project)
        pdp.map_to_keystone(pdp_id=_pdp_name, keystone_project_id=_project_name)
예제 #3
0
def test_policies():
    policies.init("consul", 8500)
    models.init("consul", 8500)
    check_policy()
    policy_id = add_policy()
    check_policy(policy_id)
    delete_policy(policy_id)
예제 #4
0
파일: authz.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        if parsed_args.filename:
            LOGGER.info("Loading: {}".format(parsed_args.filename))
        m = SourceFileLoader("scenario", parsed_args.filename)
        scenario = m.load_module()

        keystone_project_id = ProjectsUtils.get_project_id(pdp, parsed_args.id_project,
                                                           parsed_args.name_project)
        if keystone_project_id is None:
            LOGGER.error("Project not found !")

        keystone_project_id = pdp.get_keystone_id(keystone_project_id)
        time_data = authz.send_requests(
            scenario,
            parsed_args.authz_host,
            parsed_args.authz_port,
            keystone_project_id,
            request_second=parsed_args.request_second,
            limit=parsed_args.limit,
            dry_run=parsed_args.dry_run,
            stress_test=parsed_args.stress_test,
            destination=parsed_args.destination
        )
        if not parsed_args.dry_run:
            authz.save_data(parsed_args.write, time_data)
예제 #5
0
파일: policies.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        policy_id = PoliciesUtils.get_policy_id(policies, parsed_args.id,
                                                parsed_args.name)
        policy_name = PoliciesUtils.get_policy_name(policies, parsed_args.id,
                                                    parsed_args.name)

        LOGGER.info("Deleting: {}".format(policy_name))
        pdp.delete_pdp(policy_id)

        _policies = policies.check_policy()
        # logger.info("Listing all Policies:")
        for _policy_key, _policy_value in _policies["policies"].items():
            # print("    {} {}".format(_policy_key, _policy_value['name']))
            if _policy_key == policy_id:
                LOGGER.error("Error in deleting {}".format(policy_id))

        return (('Key', 'Value'), (
            (_policy_key, _policy_value)
            for _policy_key, _policy_value in _policies["policies"].items()))
예제 #6
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        json_import.init(consul_host, consul_port)
        res = json_import.import_json(parsed_args.filename)
        if "message" in res:
            return res["message"]
        return res
예제 #7
0
파일: policies.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        _policies = policies.check_policy()

        return (('Key', 'Name'), (
            (_policy_key, _policy_value['name'])
            for _policy_key, _policy_value in _policies["policies"].items()))
예제 #8
0
파일: projects.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        projects = pdp.get_keystone_projects()

        return (('Id', 'Name'), ((_project['id'], _project['name'])
                                 for _project in projects['projects']))
예제 #9
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        subject_category_id = models.add_subject_category(parsed_args.name)
        if subject_category_id is not None:
            print("Subject category created with id {}".format(subject_category_id))
        else:
            print("Error while creating subject category")
예제 #10
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        pdps = pdp.check_pdp()

        return (('Key', 'Name', 'Project id'),
                ((_pdp_key, _pdp_value['name'], _pdp_value['keystone_project_id']) for
                 _pdp_key, _pdp_value in pdps["pdps"].items())
                )
예제 #11
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        object_categories = models.check_object_category()
        print(object_categories)
        return (('Key', 'Name'),
                ((_model_key, _model_value['name']) for _model_key, _model_value in
                 object_categories["object_categories"].items())
                )
예제 #12
0
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        modelz = models.check_model()

        return (('Key', 'Name'),
                ((_model_key, _model_value['name']) for _model_key, _model_value in
                 modelz["models"].items())
                )
예제 #13
0
파일: export.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        json_export.init(consul_host, consul_port)
        res = json_export.export_to_json()
        if "content" in res:
            json_file = open(parsed_args.filename, "w")
            json.dump(res["content"], json_file)
            return "Export ok!"

        return "Unexpected results : the returned json does not have the correct syntax"
예제 #14
0
    def take_action(self, parsed_args):
        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        slaves.init(consul_host, consul_port)

        return (('Name', 'Configured'),
                ((value['name'], value['configured'])
                 for value in slaves.get_slaves().get('slaves', dict())))
예제 #15
0
파일: policies.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        metarule_datas = policies.check_meta_rule()

        if len(metarule_datas["meta_rules"]) == 0:
            return (('Key', 'Name'), ())

        metarule_data = metarule_datas["meta_rules"]
        res = (('Key', 'Name'), ((_key, metarule_data[_key]['name'])
                                 for _key in list(metarule_data)))
        return res
예제 #16
0
파일: policies.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        action_datas = policies.check_action_data(parsed_args.policy_id, None,
                                                  parsed_args.category_id)

        if len(action_datas["action_data"]) == 0:
            return (('Key', 'Name'), ())
        action_data = action_datas["action_data"][0]["data"]
        res = (('Key', 'Name'), ((_action_key,
                                  action_data[_action_key]["value"]['name'])
                                 for _action_key in list(action_data)))
        return res
예제 #17
0
파일: policies.py 프로젝트: sarpkoksal/moon
    def take_action(self, parsed_args):
        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        subject_data = policies.check_subject_data(parsed_args.policy_id, None,
                                                   parsed_args.category_id)
        if len(subject_data["subject_data"]) == 0:
            return (('Key', 'Name'), ())

        return (('Key', 'Name'), (
            (_subject_key,
             subject_data["subject_data"][0]["data"][_subject_key]['name'])
            for _subject_key in subject_data["subject_data"][0]["data"].keys())
                )
예제 #18
0
    def take_action(self, parsed_args):
        requests_log = logging.getLogger("requests.packages.urllib3")
        requests_log.setLevel(logging.WARNING)
        requests_log.propagate = True

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)
        slaves.init(consul_host, consul_port)

        slave_input_name = parsed_args.name
        if parsed_args.name is None:
            slave_input_name = "kubernetes-admin@kubernetes"

        slaves.delete_slave(slave_input_name)
        print("    {} (configured=False)".format(slave_input_name))
예제 #19
0
    def take_action(self, parsed_args):

        consul_host = parsed_args.consul_host
        consul_port = parsed_args.consul_port

        models.init(consul_host, consul_port)
        policies.init(consul_host, consul_port)
        pdp.init(consul_host, consul_port)

        _search = PdpUtils.get_pdp_id(pdp, parsed_args.id, parsed_args.name)
        _pdp_key = _search
        if _pdp_key is None:
            LOGGER.error("Error pdp not found ")
            return

        # if parsed_args.id:
        #    logger.info("Deleting: {}".format(parsed_args.id))
        #    _search = parsed_args.id
        # if parsed_args.name:
        #    logger.info("Deleting: {}".format(parsed_args.name))
        #    _search = parsed_args.name

        # pdps = pdp.check_pdp()
        # for _pdp_key, _pdp_value in pdps["pdps"].items():
        #    if _pdp_key == _search or _pdp_value['name'] == _search:
        LOGGER.info("Found {}".format(_pdp_key))
        pdp.delete_pdp(_pdp_key)

        pdps = pdp.check_pdp()
        LOGGER.info("Listing all PDP:")
        for _pdp_key, _pdp_value in pdps["pdps"].items():
            if _pdp_key == _search:  # or _pdp_value['name'] == _search:
                LOGGER.error("Error in deleting {}".format(_search))

        return (('Key', 'Name', 'Project id'),
                ((_pdp_key, _pdp_value['name'], _pdp_value['keystone_project_id']) for
                 _pdp_key, _pdp_value in
                 pdps["pdps"].items())
                )