로그
{
"_id" : ObjectId("63526ff1ea3bbfc62bff9f10"),
"historyId" : "635237545b323455e1b42dc2",
"nrn" : "nrn:PUB:IAM::2919688:SubAccount/47a8c370-5033-11ed-80c0-246e96591594",
"eventTime" : NumberLong("1666332500824"),
"platformType" : "BOTH",
"productName" : "IAM",
"productDisplayName" : "Sub Account",
"regionCode" : "",
"regionDisplayName" : "Global",
"resourceType" : "SubAccount",
"resourceId" : "47a8c370-5033-11ed-80c0-246e96591594",
"actionDisplayName" : "Login",
"actionResultType" : "FAIL",
"actionUserType" : "Sub",
"actionSubAccountNo" : 58826,
"sourceType" : "PORTAL",
"sourceIp" : "211.108.30.234",
"productData" : {
"clientIpCountry" : "KR",
"userAgent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
"userName" : "ncp-log-collector",
"loginAlias" : "sadacktion",
"subAccountId" : "47a8c370-5033-11ed-80c0-246e96591594",
"subAccountNo" : "58826",
"memberNo" : "2919688",
"isTwoSetFactorLogin" : "false",
"clientIp" : "211.108.30.234",
"loginLevel" : "1",
"userType" : "SUBACCOUNT"
}
}
명령어
Create 생성
//root, subaccount 노드 생성
//create account 시 해당 로그 생성
CREATE (liz09045:Account{name:"liz09045@naver.com"})
CREATE (liz0904:SubAccount{name:'liz0904', no:'12345'})
CREATE (liz09045)-[:SubAccount]->(liz0904)
create(chosomang:SubAccount{name:'chosomang', no:'11111'})
CREATE (liz09045)-[:SubAccount]->(chosomang)
create(lee:SubAccount{name:'lee', no:'22222'})
//로그 노드 생성
create(log1:Log{name:'635237545b323455e1b42dc2', productName:'BOTH', productDisplayName:'Sub Account', actionDisplayName:'Login', actionDisplayName:'Login', actionSubAccountNo:'11111', sourceIp:'211.108.30.234'})
Relation 연결
//계정 노드 relation 연결
MATCH
(lee:SubAccount),
(liz09045:Account)
WHERE lee.name='lee' and liz09045.name='liz09045@naver.com'
create (lee)-[r:SubAccount]->(liz09045)
return type(r)
//로그 노드와 사용자 계정 노드 연결
MATCH
(a:SubAccount),
(b:Log)
WHERE a.name='chosomang' and b.name='635237545b323455e1b42dc'
create (a)-[r:LoginSuccess]->(b)
return type(r)
//새 로그 삽입 시 이전 로그와 새 로그 연결
MATCH (a:Log{name:'635237545b323455e1b42dcd'})
CREATE (a)-[r:Next]->(b:Log{name:'635237545b323455e1b42dce', actionDisplayName:'Login', actionResultType:'SUCCESS'})
RETURN type(r)
Delete 삭제
//relation delete 관계 삭제
MATCH (a:Log{name: '635237545b323455e1b42dc2'})-[r:Next]->(b:Log{name:'635237545b323455e1b42dcd'})
DELETE r
Match 출력 및 검색
//Next relation을 갖고 있는 relation의 정보 출력
MATCH (a)-[r:Next]->(b) RETURN r
//Log의 전체 개수 출력
MATCH (n:Log) RETURN count(*)
// Person 중 Tom으로 시작하는 모든 사람 이름을 찾는 명령어
MATCH (n:Person)
WHERE n.name STARTS WITH "Tom"
RETURN n.name
//id별로 찾기
MATCH (n) WHERE id(n) = 0 RETURN n
//로그 간의 최단 경로 찾기
MATCH
(account:SubAccount {name: 'liz0904'}),
(log:Log {name: '635237545b323455e1b42dcd'}),
p = shortestPath((account)-[*..15]->(log))
RETURN p
Set 수정
//Next로 되어 있던 모든 Relation 명을 Parent로 변경
MATCH (a:Log)-[r:Next]->(b:Log)
SET r.name='Parent'
RETURN r.name
Neo4j 함수 목록
https://neo4j.com/docs/cypher-manual/current/functions/scalar/
Scalar functions - Neo4j Cypher Manual
Scalar functions return a single value.
neo4j.com
'Cloud SIEM 제작 > Graph DB(Neo4j)' 카테고리의 다른 글
Neo4j Graph Data Science(GDS) 개요 (0) | 2023.01.04 |
---|---|
Neo4j 사이퍼 쿼리 (0) | 2023.01.03 |
Neo4j 기본 사용법 (0) | 2022.09.16 |
Neo4j에 대해서 (개념/순위/특징/기능) (1) | 2022.09.16 |
그래프디비(Graph DB)란? (1) | 2022.09.16 |
댓글