비디오: 박승철의정보보호론제32-19강 접근제어 2024
유용한 보안 패턴은 레코드에 별도로 사용 권한을 할당하는 대신 레코드 내의 데이터를 기반으로 사용 권한을 적용하는 것입니다. 메타 데이터, 개별 열 (Bigtable 클론) 또는 요소 (누적 NoSQL 데이터베이스) 값을 기반으로 할 수 있습니다.
좋은 예는 문서 내에 언급 된 고객 이름입니다. 해당 고객을 언급하는 모든 문서에 대한 액세스를이 고객의 정보에 액세스 할 수있는 사용자로만 제한하려고 할 수 있습니다. 문서 내의 데이터를 처리하고 해당 데이터의 값을 기반으로 관련 보안 권한을 적용하여 이러한 문서에 대한 액세스를 제한 할 수 있습니다.
No NoSQL 데이터베이스는 즉시이 기능을 제공합니다. 데이터가 응용 프로그램에 의해 저장되었지만 다른 응용 프로그램이나 사용자가 검색 할 수있게되기 전에 사용 권한을 레코드에 할당해야하기 때문입니다. 따라서이 권한 할당은 트랜잭션 경계 내에서 발생해야합니다.
또한 ACID 준수 트랜잭션 (예: MarkLogic, FoundationDB 및 Neo4j)을 지원하는 NoSQL 데이터베이스는 거의 없습니다. 데이터베이스가 문서 내의 데이터를 기반으로 권한을 즉시 할당하는 것을 지원하지 않지만 ACID 트랜잭션을 지원하고 사전 커밋 트리거를 지원하면 쉬운 해결 방법이 가능합니다.
예를 들어, MarkLogic Server는 완전히 직렬화 가능한 ACID 트랜잭션과 사전 커밋 트리거를 지원합니다. 다음은 속성 기반 액세스 제어를 지원하려는 간단한 XML 문서입니다.MarkLogic Server의 트리거는 W3C XQuery 언어를 사용합니다. 다음 XQuery 예제는 MarkLogic에 설치 될 때 읽기 및 쓰기 권한을 할당하는 간단한 트리거입니다.
xquery version "1.0-ml"; 가져 오기 모듈 네임 스페이스 trgr = 'http: // marklogic. com / xdmp / at '/ MarkLogic / triggers'를 트리거합니다. xqy '; 변수 $ trgr 선언: uri as xs: string external; 변수 선언 $ trgr: node () external; xdmp: document-set-permissions ($ trgr-uri, (xdmp: permission ("seniorsales", "update"), xdmp: permission ("sales", "read"))) else ()
트리거가 setperms 파일에 일단 설치됩니다.MarkLogic 서버 모듈 데이터베이스에서 xqy를 실행하려면 MarkLogic - Query Console 용 웹 코딩 응용 프로그램에서 다음 코드를 실행하여 트리거를 활성화합니다. 기본 MarkLogic Server 설치에서 URL (http: // localhost: 8000 / qconsole)에서 쿼리 콘솔을 찾을 수 있습니다.
다음은 Query Console을 사용하여 트리거를 설치하는 방법을 보여주는 코드입니다:
xquery version "1. 0-ml"; import module namespace trgr = "http: // marklogic. com / xdmp / triggers"at / MarkLogic / triggers. xqy '; trgr: create-trigger ("setperms", "Set Sales Doc Permissions", trgr: 트리거 데이터 이벤트 (trgr: 수집 범위 ("meetingreports"), trgr: 문서 내용 ("modify"), trgr: pre (), fn: true (), xdmp: default-permissions (), fn: 트리거 (예: -commit ()), trgr: 트리거 모듈 (xdmp: 데이터베이스 ("모듈"), "/ 트리거 /", "setperms.xqy" 거짓 ())