コード例 #1
0
def delete_datasource(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ["datasourceId"], ["completeDelete"])
    if req_error:
        return req_error
    domain_controller.delete_datasource(req_session.get_auth_token(), req_session.get_req_param("datasourceId"), req_session.get_req_param("completeDelete"))
    return req_session.generate_response(200)
コード例 #2
0
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)
コード例 #3
0
def delete_policy(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['policyId'])
    if req_error:
        return req_error

    policy_controller.delete_policy(req_session.get_req_param('policyId'))
    return req_session.generate_response(200)
コード例 #4
0
def get_alert_count(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request()
    if req_error:
        return req_error
    alerts_count = alert_controller.fetch_alerts_count(
        req_session.get_auth_token())
    return req_session.generate_response(200, alerts_count)
コード例 #5
0
def get_accesslogs_handler(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, mandatory_params=['datasource_id'], optional_params=['page_num'])
    if req_error:
        return req_error
    response = get_accesslogs(req_session.get_req_param('datasource_id'),
                              req_session.get_req_param('page_num'))
    return req_session.generate_response(response)
コード例 #6
0
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())
コード例 #7
0
def gdrive_periodic_changes_poll(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        False, optional_params=['datasource_id'])
    if req_error:
        return req_error

    incremental_scan.gdrive_periodic_changes_poll(
        req_session.get_req_param('datasource_id'))
    return req_session.generate_response(200)
コード例 #8
0
def update_scan(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['dataSourceId'])
    if req_error:
        return req_error

    scanner_facade.update_scan(req_session.get_auth_token(),
                               req_session.get_req_param('dataSourceId'))

    return req_session.generate_response(202)
コード例 #9
0
def handle_channel_expiration(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        False, optional_params=['page_num'])
    if req_error:
        return req_error

    response = incremental_scan.handle_channel_expiration(
        req_session.get_req_param('page_num'))
    return req_session.generate_response(202)
コード例 #10
0
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)
コード例 #11
0
def request_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.request_scanner_data(req_session.get_auth_token(),
                                        req_session.get_all_req_param())
    return req_session.generate_response(202)
コード例 #12
0
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)
コード例 #13
0
def delete_scheduled_report(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(True, ['reportId'])
    if req_error:
        return req_error
    deleted_report = reports_controller.delete_report(
        req_session.get_auth_token(), req_session.get_req_param('reportId'))

    function_name = aws_utils.get_lambda_name('get',
                                              urls.EXECUTE_SCHEDULED_REPORT)
    aws_utils.delete_cloudwatch_event(deleted_report.report_id, function_name)
    return req_session.generate_response(200)
コード例 #14
0
def start_scan(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, ['dataSourceId', 'domainId', 'userEmail'])
    if req_error:
        return req_error
    scanner_facade.start_scan(req_session.get_auth_token(),
                              req_session.get_req_param('dataSourceId'),
                              req_session.get_req_param('domainId'),
                              req_session.get_req_param('userEmail'))

    return req_session.generate_response(200)
コード例 #15
0
def subscribe_gdrive_notifications(event, context):
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(
        True, ["domainId", "dataSourceId"], ["pageNum"])
    if req_error:
        return req_error

    incremental_scan.subscribe(req_session.get_auth_token(),
                               req_session.get_req_param('domainId'),
                               req_session.get_req_param('dataSourceId'),
                               req_session.get_req_param('pageNum'))
    return req_session.generate_response(202)
コード例 #16
0
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)
コード例 #17
0
def process_drive_change_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')
    drive_change_notification.process_notifications(notification_type,
                                                    datasource_id, channel_id)
    return req_session.generate_response(202)
コード例 #18
0
def execute_cron_report(event, context):
    Logger().info("execute_cron_report : event " + str(event))
    req_session = RequestSession(event)
    req_error = req_session.validate_authorized_request(False, ["report_id"])
    if req_error:
        return req_error

    if req_error:
        return req_error

    Logger().info("call generate_csv_report function ")
    Logger().info("report id " + str(req_session.get_req_param('report_id')))
    response = reports_controller.generate_csv_report(
        req_session.get_req_param('report_id'))

    if len(response['csv_records']) > 0:
        Logger().info("call send_email_with_attachment function ")
        report_desc = '[Adya] ' + response['report_desc']
        aws_utils.send_email_with_attachment(response['email_list'],
                                             response['csv_records'],
                                             report_desc,
                                             response['report_name'])

    return req_session.generate_response(200)