def post_user_app(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error apps = directory_controller.insert_apps(req_session.get_auth_token(), req_session.get_body()) return req_session.generate_sqlalchemy_response(201, apps)
def get_resource_tree_data(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request( optional_params=["pageNumber", "pageSize", "datasourceId"]) if req_error: return req_error auth_token = req_session.get_auth_token() payload = req_session.get_body() accessible_by = payload.get("accessibleBy") exposure_type = payload.get("exposureType") resource_type = payload.get("resourceType") page_number = payload.get("pageNumber") page_size = payload.get("pageSize") owner_email_id = payload.get("ownerEmailId") parent_folder = payload.get("parentFolder") selected_date = payload.get("selectedDate") search_prefix = payload.get("prefix") sort_column_name = payload.get("sortColumn") sort_type = payload.get("sortType") datasource_id = payload.get("datasourceId") source_type = payload.get("sourceType") resource_list = resource_controller.get_resources( auth_token, page_number, page_size, accessible_by, exposure_type, resource_type, search_prefix, owner_email_id, parent_folder, selected_date, sort_column_name, sort_type, datasource_id, source_type) return req_session.generate_sqlalchemy_response(200, resource_list)
def execute_slack_actions(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(True) if req_error: return req_error body = req_session.get_body() response = slack_action_facade.execute_slack_actions(req_session.get_auth_token(), body) log_status = action_constants.ActionStatus.SUCCESS.value status_code = 200 status_message = "Action completed successfully" if response['action_status'] == constants.ResponseType.ERROR.value: status_code = 404 log_status = action_constants.ActionStatus.FAILED.value status_message = "Action failed" log_id = body['log_id'] db_session = db_connection().get_session() current_log = db_session.query(AuditLog).filter( and_(AuditLog.log_id == log_id, AuditLog.status != action_constants.ActionStatus.FAILED.value)).first() if current_log: current_log.status = log_status current_log.message = status_message db_connection().commit() return req_session.generate_response(status_code, response)
def post_alert(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error alerts = alert_controller.create_alerts(req_session.auth_token, req_session.get_body()) return req_session.generate_sqlalchemy_response(201, alerts)
def get_all_activities(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error activities = get_activites_for_domain(req_session.get_body()) return req_session.generate_sqlalchemy_response(200, activities)
def execute_gsuite_actions(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(True) if req_error: return req_error response = gsuite_action_facade.execute_action( req_session.get_auth_token(), req_session.get_body()) return req_session.generate_sqlalchemy_response( response.get_response_code(), response.get_response_body())
def receive_github_notifications(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(True) if req_error: return response = notifications_receiver.receive_notification( req_session.get_auth_token(), req_session.get_body()) return req_session.generate_response(response.get_response_code(), response.get_response_body())
def post_policy(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error policy = policy_controller.create_policy(req_session.get_auth_token(), req_session.get_body()) return req_session.generate_sqlalchemy_response(201, policy)
def update_policy(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(True, ['policyId']) if req_error: return req_error policy = policy_controller.update_policy( req_session.get_auth_token(), req_session.get_req_param('policyId'), req_session.get_body()) return req_session.generate_sqlalchemy_response(201, policy)
def process_scanner_data(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request( True, ['domainId', 'dataSourceId', 'scannerId'], ['userId', 'userEmail', 'nextPageNumber', 'change_type']) if req_error: return req_error scanner_facade.process_scanner_data(req_session.get_auth_token(), req_session.get_all_req_param(), req_session.get_body()) return req_session.generate_response(200)
def receive_slack_notifications(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(False, mandatory_params=[], optional_params=[]) if req_error: return req_error response = notifications_receiver.receive_notifications( req_session.get_body()) return req_session.generate_sqlalchemy_response(202, response or {})
def get_widget_data(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request(True) if req_error: return req_error body = req_session.get_body() data = reports_controller.get_widget_data(req_session.get_auth_token(), body.get('widget_id'), None, None, body.get('event_filters')) return req_session.generate_sqlalchemy_response(200, data)
def validate_policy(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request( True, ['dataSourceId', 'policy_trigger']) if req_error: return req_error policy_validator_facade.validate_policy( req_session.get_auth_token(), req_session.get_req_param('dataSourceId'), req_session.get_req_param('policy_trigger'), req_session.get_body()) return req_session.generate_response(200)
def process_scanner_data(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request( True, ['dataSourceId', 'domainId', 'scannerId'], ['repo_name', 'org_name', 'repo_id']) if req_error: return req_error scanner_facade.process_scanner_data(req_session.get_auth_token(), req_session.get_all_req_param(), req_session.get_body()) return req_session.generate_response(202)
def export_to_csv(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error response = directory_controller.export_to_csv(req_session.get_auth_token(), req_session.get_body()) if response: return req_session.generate_sqlalchemy_response( response.response_code, response.get_response_body()) else: return req_session.generate_response(202)
def initiate_action(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error auth_token = req_session.get_auth_token() action_payload = req_session.get_body() Logger().info("Initiating action using payload: " + str(action_payload)) response = actions_controller.initiate_action(auth_token, action_payload) return req_session.generate_sqlalchemy_response( response.response_code, response.get_response_body())
def modify_scheduled_report(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error update_record = reports_controller.update_report( req_session.get_auth_token(), req_session.get_body()) report_id = update_record['report_id'] frequency = update_record['frequency'] payload = {'report_id': report_id} function_name = aws_utils.get_lambda_name('get', urls.EXECUTE_SCHEDULED_REPORT) aws_utils.create_cloudwatch_event(report_id, frequency, function_name, payload) return req_session.generate_sqlalchemy_response(201, update_record)
def post_scheduled_report(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error reports = reports_controller.create_report(req_session.get_auth_token(), req_session.get_body()) for report in reports: cron_expression = report.frequency report_id = report.report_id payload = {'report_id': report_id} function_name = aws_utils.get_lambda_name( 'get', urls.EXECUTE_SCHEDULED_REPORT) aws_utils.create_cloudwatch_event(report_id, cron_expression, function_name, payload) return req_session.generate_sqlalchemy_response(201, reports)
def process_activity_notifications(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request( False, mandatory_params=[], optional_params=[], headers=[ 'X-Goog-Channel-Token', 'X-Goog-Channel-ID', 'X-Goog-Resource-State' ]) if req_error: return req_error datasource_id = req_session.get_req_header('X-Goog-Channel-Token') channel_id = req_session.get_req_header('X-Goog-Channel-ID') notification_type = req_session.get_req_header('X-Goog-Resource-State') activity_notification.process_notifications(notification_type, datasource_id, channel_id, req_session.get_body()) return req_session.generate_response(202)
def post_datasource(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error try: datasource = domain_controller.create_datasource(req_session.get_auth_token(), req_session.get_body()) except Exception as ex: return req_session.generate_error_response(400, ex.message) return req_session.generate_sqlalchemy_response(200, datasource)
def post_trusted_entities(event, context): req_session = RequestSession(event) req_error = req_session.validate_authorized_request() if req_error: return req_error trusted_entities = domain_controller.create_trusted_entities_for_a_domain(req_session.get_auth_token(), req_session.get_body()) return req_session.generate_sqlalchemy_response(200, trusted_entities)