behavior, matchbehavior, node-behavior 명령어의 차이점에 대해 알고 싶습니다.
제가 이해한 바로는
- behavior, node-behavior는 행위프로파일에 저장 된 정보를 읽어오는 용도고 명령어 실행 가능한 곳이 다르다는 것
- 사용 : 데이터 join 시 사용
- matchbehavior는 key값을 기준으로 매칭 되는 내용을 출력하는 것
- 사용 : key 값에 매칭되는 내용 출력
이게 맞을까요?
behavior, matchbehavior, node-behavior 명령어의 차이점에 대해 알고 싶습니다.
제가 이해한 바로는
이게 맞을까요?
behavior 명령어는 현재 행위 프로파일의 버전에 따라 분석 서버의 sonar_behavior_profile_NNNNN_0
또는 sonar_behavior_profile_NNNNN_1
시스템 테이블 데이터를 조회합니다.
NNNNN
은 행위 프로파일의 고유 ID를 0으로 패딩한 값이고, 행위 프로파일이 다음 버전을 빌드하는 동안에도 기존 데이터를 문제 없이 읽도록 _0
, _1
접미사가 붙은 2개의 테이블을 번갈아서 사용합니다.
행위 프로파일 데이터를 대시보드에서 활용하는 경우에는 behavior
명령어를 사용합니다. 단, 현재 behavior
명령어는 행위 프로파일의 공유 계정/그룹 권한을 점검하기 위하여 명시적인 사용자 세션 정보를 요구하는데, 배치 탐지 시나리오는 소유자가 지정되어 있지 않고 시스템 권한으로 실행되기 때문에 실패하는 이슈가 있어서 이 경우 node-behavior
명령어를 대체하여 사용합니다.
node-behavior 명령어는 본래 matchbehavior의 결과가 기대한 결과와 다를 때 각 분석 및 수집 서버에 동기화된 데이터를 조회하여 차이가 발생하는 원인을 진단하기 위한 용도로 개발되었습니다.
분석 서버가 예약된 주기마다 쿼리를 다시 실행하여 행위 프로파일 데이터를 변경하면, 각 분석 및 수집 서버는 일정 시간 내에 행위 프로파일 데이터를 분석 서버에서 다운로드하여 동기화합니다.
즉, 각 분석 및 수집 서버에 실제로 동기화된 행위 프로파일의 데이터는 시점에 따라 분석 서버의 행위 프로파일 원본과 차이가 있을 수 있습니다. (직전 버전의 쿼리 결과 데이터)
node-behavior
명령어는 분석 서버 및 수집 서버에 동기화된 데이터를 조회합니다. behavior
명령어처럼 로그프레소 테이블이 아니라 data/sonar-node/behavior_profile/프로파일GUID/버전
디렉터리 이하에 저장된 데이터를 읽어옵니다.
matchbehavior
명령어는 node-behavior
명령어와 마찬가지로 data/sonar-node/behavior_profile/프로파일GUID/버전
디렉터리 이하에 저장된 데이터를 이용하여 실시간 검색을 수행합니다.
matchbehavior
명령어는 분석 및 수집 서버에서 동작합니다. 행위 프로파일 생성 시 정의된 키 필드를 기준으로 입력 레코드에서 키 필드 값을 추출하고, 해당 값으로 행위 프로파일을 검색하여 behavior_guid, behavior_invert 필드를 출력합니다.
matchbehavior 명령어는 실시간 시나리오에서 사용할 수 있도록 스트리밍 가능한 명령어로 설계되어 있습니다. 즉, 변경 주기에 따라 행위 프로파일 데이터가 다시 동기화되는 중에도 실시간 매칭이 멈추지 않는다는 의미입니다.
streamjoin 명령어를 이용하여 node-behavior 결과를 조인하는 방식도 가능하기는 하지만, streamjoin은 서브 쿼리가 완료될 때까지 스트림을 잠시 중단시키기 때문에 스트림 새로 고침 주기마다 짧은 시간 동안 일시적으로 수집이 중단되는 것처럼 보일 수 있습니다.
즉, 실시간 탐지 시 행위 프로파일 데이터에 포함되느냐, 그렇지 않으냐에 대해서만 판단하고자 할 때에는 matchbehavior 명령어를 이용하는 것이 좋습니다.