2010-06-22 5 views
6

HTTP 액세스를 통해 REST 스타일 JSON을 지원하는 문서 데이터베이스는 브라우저가 데이터베이스를 직접 호출하는 AJAX가 풍부한 응용 프로그램을 지원하는 데 이상적입니다. 전통적인 웹 서버/응용 프로그램 로직 구성 요소를 우회합니다. 예를 들어 사용자가 인증되면 사용자 기본 설정을 검색하는 것일 수 있습니다. (BBC 홈페이지가 부하 상황에서 충돌하기 전에 좋은 예가 될 수 있습니다!)클라이언트 (브라우저) 액세스 용 문서 스타일 데이터베이스 (MongoDb, CouchDb, RavenDb) 보안

이 시나리오의 문제점은 보안 문제입니다. 사용자가 웹 서버 (예 : 기본 양식 인증)를 사용하여 인증 된 경우, 이 ID는 문서 DB로 옮겨집니다. 웹 서버를 통해 DB에 대한 모든 요청을 프록시 처리하는 유일한 해결책입니까? 즉, 직접 외부 액세스가 없도록 문서 DB 보안을 설정하는 것입니다.

이것은 가장 이해하기 쉬운 것으로 보이며 구현하기가 쉽지만 이질적인 환경에서 문서 DB를 사용하는 데 대한 경험이나 조언이 있는지 궁금합니다.

답변

1

아마도 이것은 언급 한 모든 데이터베이스마다 다릅니다. 다음은 CouchDB에서 작동하는 방법입니다.

사용자와 역할을 관리 할 수 ​​있습니다.

디자인 문서에서 validate_doc_update 기능을 사용하여 문서 작성/업데이트를 제한 할 수 있습니다. 예를 들어 저자를 제외한 모든 사람에게 문서 업데이트를 거부하는 유효성 검사를 작성할 수 있습니다.

데이터베이스에서 문서를 읽을 수있는 사용자를 제한하려면 /db_name/_security 문서를 편집하고 사용자 또는 역할을 나열하십시오.

그러나 읽기 권한을 좀 더 세부적으로 설정할 수 있다고 생각하지 않습니다. 즉, 사용자가 작성한 문서 만 읽을 수 있도록 허용 할 수는 없습니다.

이를 위해서는 CouchDB를 프록시 뒤에두고 뷰를 사용하여 인증 된 사용자에게 문서를 제공해야합니다. 이 방법으로 CouchDB 사용자 관리를 계속 사용할 수 있습니다. 프록시는 데이터베이스에 대한 직접 액세스를 숨 깁니다.

자세한 내용은 security overview on CouchDB wiki, security chapter of the Relax bookshort screencast을 확인하십시오.

+0

향후 릴리스에 대한 읽기 액세스 제한이 목록에 있다고 생각합니다. – stwissel

+0

키가 프록시 인 것 같습니다. CouchDB 상단에 전체 웹 스택을 만들려고 시도하는 것이이 단계에서는 너무 야심적입니다 (매우 간단한 앱이 아니라면). 프록시 뒤에서 실행하는 것이 가장 적합합니다. 우리를 위해. 우리는 MongoDB를 실행하고 있지만 모든 HTTP 액세스는 IIS를 통해 프록시 처리됩니다. –

1

글쎄, 나는 CouchDB에 대한 경험이 있지만, 그럼에도 불구하고 당신을 도울 수 있기를 바랍니다.

CouchDB에는 유효성 검사 프로세스가 내장되어 있습니다. 유효성 검사 규칙은 javascript로 작성하고 현재 사용자가 속한 그룹에 액세스 할 수 있습니다. 기본적으로 CouchDB 자체에서 처리되므로 정보 로그인 방법에 신경을 쓸 필요가 없습니다.

+0

문서에 대한 링크를 추가하는 방법을 알려주세요. –