2017-01-16 1 views
1

(3.1 : http://neo4j.com/docs/operations-manual/current/security/authentication-authorization/subgraph-access-control/) 서브 그래프 공식 문서에 액세스 제어

"예를 들어, 사용자가 직원으로 표시 노드와 형 REPORTS_TO의 관계를 읽을 수 있지만, 쓸 수있다"

을 말한다

하지만이 페이지와 다른 방법으로 작성된 곳은 어디에도 없습니다. "call dbms.procedures()"를 사용하면 엔터프라이즈 에디션에서 더 많은 기능을 볼 수 있지만이 서브 그래프 컨트롤 정의에 대해서는 전혀 알지 못합니다.

엔터프라이즈 에디션을 변경하려고 생각합니다. 그렇게. 누구든지 저를 설명하거나 문서가 모든 권리가

감사

답변

2

나에게 관련 문서의 주소를 제공 할 수 있습니다. 관리자가 그래프의 특정 부분에 대한 사용자의 액세스 및 후속 조치를 제한 할 수 있습니다, 사용자 정의 절차사용자 지정 역할의 사용을 통해

: 첫 번째 문장을합니다.

쓰기 권한이없는 사용자의 경우 적절하게 역할을 만든 다음 사용자 정의 프로 시저를 만들어 사용하거나 기존의 사용자 정의 프로 시저를 사용하여 수행 할 수있는 작업을 수행하는 것으로 보입니다. 그런 다음 프로 시저의 권한을 적절한 수준으로 구성하고 절차의 역할 (dbms.security.procedures.roles 수정)을 이전에 작성한 역할과 연관 시키십시오. 이렇게하면 작성한 프로 시저를 사용자가 연관된 역할에 의해 실행될 수 있습니다.

예를 들어 쓰기 권한이없는 HR 사용자가있는 경우 : REPORTS_TO 관계를 생성하거나 삭제하는 절차를 만들 수 있습니다. 직원 노드. 이 절차는 쓰기 액세스가 필요하므로 mode = WRITE로 설정해야합니다. 일반적으로이 HR 사용자는 쓰기 권한이 없기 때문에이 권한을 사용자가 실행할 수 없습니다.

그러나 역할을 생성하고 'hr'이라고 말한 다음이 역할을이 사용자에 추가하고 hr 역할로 액세스 할 수있는 절차를 dbms.security.procedures.roles으로 설정하면 hr 사용자가이 절차를 실행할 수 있습니다. 필요한 쓰기 작업을 수행하십시오.

요약하면 Neo4j의 서브 그래프 액세스 제어는 노드 또는 레이블 자체에 정의되어 있지 않으며 Cypher에서 쓰기 명령문을 실행할 때도 적용되지 않습니다. 이 액세스 제어는 사용자 정의 프로 시저에만 해당되며 액세스 수준으로 인해 정상적으로 수행 할 수없는 경우에도 해당 역할을 가진 사용자 (해당 역할이 해당 프로 시저와 관련됨)가 해당 프로 시저를 실행할 수있게합니다.

편집

당신을 위해 일할 수있는 마지막 일이 ... Neo4j 진행중인 트랜잭션에 대한 검사 및 로직을 수행하고 몇 가지 기준이 충족되지 않을 경우 거부 할 수 있습니다 transaction event handlers을 등록하는 방법이있다. 여기서 사용자 역할을 할 수 있다고 가정하고 특정 레이블의 작성자 작업에 대한 트랜잭션을 확인합니다. 이상하게도 문서의 부분 그래프 보안 섹션에서 참조되지 않았습니다. 나는이 방법을 나 자신으로 시도하지 않았다. (나는 나 자신의 테스트를 나중에 시도 할 것이다.) 그래서 당신이 필요로하는 것을 충족시킬 지 확신 할 수 없지만, 한 번 볼만한 가치가있다.

+0

답변 해 주셔서 감사합니다.처음에는 그것이이 절차의 다른 기능이라고 생각했습니다. 나는 정말로 우리가 기대했던 것과 전혀 다른 내용으로 나중에 설명하는 내용을 중계했다. 정말 어려운 시스템을 만들어서 (자바 코딩/병 만들기, 배포, 서버 재시작) 이상하게 만들었습니다. 우리는 선사 시대가 아닌 더욱 역동적 인 것을 찾고있었습니다. OrientDB를 사용하여 그래프 레이어를 다시 코딩 할 수 있습니다 BTW , 다시 한 번 감사드립니다! – user954156

+0

트랜잭션 핸들러를 사용하여 가능한 한 가지 대안을 추가했습니다. 이는 트랜잭션 핸들러에서도 유용 할 수 있습니다. – InverseFalcon

관련 문제