Esempio n. 1
0
def test_audit_logging_middleware_enable():
    c = make_logged_in_client(username="******", is_superuser=False)

    # Make sure we enable it with a file path
    log_tmp = tempfile.NamedTemporaryFile("w+t")  # Get a tempfile path
    log_path = log_tmp.name
    log_tmp.close()
    reset = AUDIT_EVENT_LOG_DIR.set_for_testing(log_path)
    settings.MIDDLEWARE_CLASSES.append("desktop.middleware.AuditLoggingMiddleware")  # Re-add middleware

    try:
        # Check if we audit correctly
        response = c.get("/beeswax/")
        assert_true("audited" in response, response)

        audit = open(log_path).readlines()
        for line in audit:
            audit_json = json.loads(line)
            audit_record = audit_json.values()[0]
            assert_equal("test_audit_logging_middleware_enable", audit_record["user"], audit_record)
            assert_equal("/beeswax/", audit_record["url"], audit_record)

    finally:
        settings.MIDDLEWARE_CLASSES.pop()
        reset()
        try:
            os.remove(log_tmp)
        except:
            pass
Esempio n. 2
0
def test_audit_logging_middleware_enable():
  c = make_logged_in_client(username='******', is_superuser=False)

  # Make sure we enable it with a file path
  log_tmp = tempfile.NamedTemporaryFile("w+t") # Get a tempfile path
  log_path = log_tmp.name
  log_tmp.close()
  reset = AUDIT_EVENT_LOG_DIR.set_for_testing(log_path)
  settings.MIDDLEWARE_CLASSES.append('desktop.middleware.AuditLoggingMiddleware') # Re-add middleware

  try:
    # Check if we audit correctly
    response = c.get("/beeswax/")
    assert_true('audited' in response, response)

    audit = open(log_path).readlines()
    for line in audit:
      audit_json = json.loads(line)
      audit_record = audit_json.values()[0]
      assert_equal('test_audit_logging_middleware_enable', audit_record['user'], audit_record)
      assert_equal('/beeswax/', audit_record['url'], audit_record)

  finally:
    settings.MIDDLEWARE_CLASSES.pop()
    reset()
    try:
      os.remove(log_tmp)
    except:
      pass
Esempio n. 3
0
    def __init__(self, get_response):
        self.get_response = get_response
        self.impersonator = SERVER_USER.get()

        if not AUDIT_EVENT_LOG_DIR.get():
            LOG.info('Unloading AuditLoggingMiddleware')
            raise exceptions.MiddlewareNotUsed
Esempio n. 4
0
def test_audit_logging_middleware_enable():
    c = make_logged_in_client(username='******',
                              is_superuser=False)

    # Make sure we enable it with a file path
    with tempfile.NamedTemporaryFile("w+t") as log_tmp:
        log_path = log_tmp.name
        reset = AUDIT_EVENT_LOG_DIR.set_for_testing(log_path)
        settings.MIDDLEWARE_CLASSES.append(
            'desktop.middleware.AuditLoggingMiddleware')  # Re-add middleware

        try:
            # Check if we audit correctly
            response = c.get("/useradmin/permissions/edit/beeswax/access")
            assert_true('audited' in response, response)

            audit = open(log_path).readlines()
            for line in audit:
                audit_json = json.loads(line)
                audit_record = list(audit_json.values())[0]
                assert_equal('test_audit_logging', audit_record['user'],
                             audit_record)
                assert_equal('/useradmin/permissions/edit/beeswax/access',
                             audit_record['url'], audit_record)

        finally:
            settings.MIDDLEWARE_CLASSES.pop()
            reset()
Esempio n. 5
0
  def __init__(self):
    from desktop.conf import AUDIT_EVENT_LOG_DIR, SERVER_USER

    self.impersonator = SERVER_USER.get()

    if not AUDIT_EVENT_LOG_DIR.get():
      LOG.info('Unloading AuditLoggingMiddleware')
      raise exceptions.MiddlewareNotUsed
Esempio n. 6
0
  def __init__(self):
    from desktop.conf import AUDIT_EVENT_LOG_DIR, SERVER_USER

    self.impersonator = SERVER_USER.get()

    if not AUDIT_EVENT_LOG_DIR.get():
      LOG.info('Unloading AuditLoggingMiddleware')
      raise exceptions.MiddlewareNotUsed
Esempio n. 7
0
def test_audit_logging_middleware_disable():
    c = make_logged_in_client(username="******", is_superuser=False)

    reset = AUDIT_EVENT_LOG_DIR.set_for_testing("")
    try:
        # No middleware yet
        response = c.get("/oozie/")
        assert_false("audited" in response, response)
    finally:
        reset()
Esempio n. 8
0
def test_audit_logging_middleware_disable():
  c = make_logged_in_client(username='******', is_superuser=False)

  reset = AUDIT_EVENT_LOG_DIR.set_for_testing('')
  try:
    # No middleware yet
    response = c.get("/oozie/")
    assert_false('audited' in response, response)
  finally:
    reset()
Esempio n. 9
0
def get_audit_logger():
  from desktop.conf import AUDIT_EVENT_LOG_DIR, AUDIT_LOG_MAX_FILE_SIZE

  audit_logger = logging.getLogger('audit')
  if not [hclass for hclass in audit_logger.handlers if isinstance(hclass, AuditHandler)]: # Don't add handler twice
    size, unit = int(AUDIT_LOG_MAX_FILE_SIZE.get()[:-2]), AUDIT_LOG_MAX_FILE_SIZE.get()[-2:]
    maxBytes = size * 1024 ** (1 if unit == 'KB' else 2 if unit == 'MB' else 3)

    audit_handler = AuditHandler(AUDIT_EVENT_LOG_DIR.get(), maxBytes=maxBytes, backupCount=50)
    audit_handler.setFormatter(MessageOnlyFormatter())
    audit_logger.addHandler(audit_handler)

  return audit_logger
Esempio n. 10
0
def get_audit_logger():
  from desktop.conf import AUDIT_EVENT_LOG_DIR, AUDIT_LOG_MAX_FILE_SIZE

  audit_logger = logging.getLogger('audit')
  if not filter(lambda hclass: isinstance(hclass, AuditHandler), audit_logger.handlers): # Don't add handler twice
    size, unit = int(AUDIT_LOG_MAX_FILE_SIZE.get()[:-2]), AUDIT_LOG_MAX_FILE_SIZE.get()[-2:]
    maxBytes = size * 1024 ** (1 if unit == 'KB' else 2 if unit == 'MB' else 3)

    audit_handler = AuditHandler(AUDIT_EVENT_LOG_DIR.get(), maxBytes=maxBytes, backupCount=50)
    audit_handler.setFormatter(MessageOnlyFormatter())
    audit_logger.addHandler(audit_handler)

  return audit_logger
Esempio n. 11
0
def test_audit_logging_middleware_enable():
  c = make_logged_in_client(username='******', is_superuser=False)

  # Make sure we enable it with a file path
  with tempfile.NamedTemporaryFile("w+t") as log_tmp:
    log_path = log_tmp.name
    reset = AUDIT_EVENT_LOG_DIR.set_for_testing(log_path)
    settings.MIDDLEWARE_CLASSES.append('desktop.middleware.AuditLoggingMiddleware') # Re-add middleware

    try:
      # Check if we audit correctly
      response = c.get("/useradmin/permissions/edit/beeswax/access")
      assert_true('audited' in response, response)

      audit = open(log_path).readlines()
      for line in audit:
        audit_json = json.loads(line)
        audit_record = audit_json.values()[0]
        assert_equal('test_audit_logging', audit_record['user'], audit_record)
        assert_equal('/useradmin/permissions/edit/beeswax/access', audit_record['url'], audit_record)

    finally:
      settings.MIDDLEWARE_CLASSES.pop()
      reset()
Esempio n. 12
0
def test_one_audit():
  log_tmp = tempfile.NamedTemporaryFile("w+t")

  # KB
  reset = [
      AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp),
      AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25KB')
  ]

  audit_logger = get_audit_logger()
  audit_handler = audit_logger.handlers[0]

  assert_equal(25 * 1024 ** 1, audit_handler.maxBytes)
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
  assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

  audit_logger = get_audit_logger()
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

  # Cleanup
  audit_logger.removeHandler(audit_handler)

  for r in reset:
    r()

  # MB
  reset = [
      AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp),
      AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25MB')
  ]

  audit_logger = get_audit_logger()
  audit_handler = audit_logger.handlers[0]

  assert_equal(25 * 1024 ** 2, audit_handler.maxBytes)
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
  assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

  audit_logger = get_audit_logger()
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

  # Cleanup
  audit_logger.removeHandler(audit_handler)

  for r in reset:
    r()

  # GB
  reset = [
      AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp),
      AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25GB')
  ]

  audit_logger = get_audit_logger()
  audit_handler = audit_logger.handlers[0]

  assert_equal(25 * 1024 ** 3, audit_handler.maxBytes)
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
  assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

  audit_logger = get_audit_logger()
  assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

  # Cleanup
  audit_logger.removeHandler(audit_handler)

  for r in reset:
    r()
Esempio n. 13
0
def test_one_audit():
  with tempfile.NamedTemporaryFile("w+t") as log_tmp:

    # KB
    reset = [
        AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp.name),
        AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25KB')
    ]

    audit_logger = get_audit_logger()
    audit_handler = audit_logger.handlers[0]

    assert_equal(25 * 1024 ** 1, audit_handler.maxBytes)
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
    assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

    audit_logger = get_audit_logger()
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

    # Cleanup
    audit_logger.removeHandler(audit_handler)

    for r in reset:
      r()

    # MB
    reset = [
        AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp.name),
        AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25MB')
    ]

    audit_logger = get_audit_logger()
    audit_handler = audit_logger.handlers[0]

    assert_equal(25 * 1024 ** 2, audit_handler.maxBytes)
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
    assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

    audit_logger = get_audit_logger()
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

    # Cleanup
    audit_logger.removeHandler(audit_handler)

    for r in reset:
      r()

    # GB
    reset = [
        AUDIT_EVENT_LOG_DIR.set_for_testing(log_tmp.name),
        AUDIT_LOG_MAX_FILE_SIZE.set_for_testing('25GB')
    ]

    audit_logger = get_audit_logger()
    audit_handler = audit_logger.handlers[0]

    assert_equal(25 * 1024 ** 3, audit_handler.maxBytes)
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers)
    assert_true(isinstance(audit_handler, AuditHandler), audit_logger.handlers)

    audit_logger = get_audit_logger()
    assert_equal(len(audit_logger.handlers), 1, audit_logger.handlers) # Not adding handler twice

    # Cleanup
    audit_logger.removeHandler(audit_handler)

    for r in reset:
      r()