2016-11-08 2 views
1

멀티 테넌트 응용 프로그램을 만들 계획이므로 Azure 문서 DB를 가지고 놀고 있습니다.Azure DocumentDB 멀티 테넌트 응용 프로그램 사용자

멀티 테넌트 애플리케이션의 경우 내 생각에 입주자 당 1 db 사용자를 생성하는 것이 좋습니다. 그러면 세입자 데이터가 완전히 분리된다는 이점이 있습니다. 문서를 만들 때 세입자 사용자에게 사용 권한이 추가됩니다. (읽기/쓰기) 쿼리 할 때 데이터는 항상 현재 세입자의 범위가됩니다.

나는 또한 최종 사용자 당 1 DB 사용자와 함께 놀고있었습니다. 그러나 이것은 문서의 보안을 관리하는 데 많은 오버 헤드를줍니다. 테넌트 z의 사용자 x가 문서를 추가하면 세입자 z의 모든 사용자가 해당 문서에 대한 추가 사용 권한으로 업데이트해야합니다. 이것은 실현 불가능한 것 같습니다.

내 가정이 맞습니까? 아니면 이것에 대한 또 다른 접근 방식을 제안 하시겠습니까? 이 접근 방식에 단점이 있습니까?

답변

2

멀티 테넌트 솔루션에 대해 우리는 DocumentDB의 컨트롤을 전혀 사용하지 않기로 결정했으며, 중간 계층에서 우리의 모든 권한 부여는 대부분 테넌트별로 다른 술어 기반이되기를 원했기 때문에 수행했습니다. 즉, 세입자 레벨에서 DocumentDB의 권한 부여 기능을 사용하는 접근 방식이 합리적입니다. 그것은 당신의 세입자들에게 다른 세입자들이 그들의 데이터를 볼 수 없다는 보증을 추가 할 것입니다.

필자가 생각한 한 가지 크로스 세입자 기능 (세입자 그룹의 형태 일 수도 있음)이 있다면 모델을 손상시킬 수 있으므로 고려해 볼 수 있습니다.

세입자가 수백 명이고 사용자가 수천이지만 문서 DB 승인 기능이 해당 수준으로 확장되는지 확인해야합니다. 어쩌면 이것을 모니터하는 DocumentDB 제품 관리자 중 한 명이 차임 할 수 있습니까?

+1

DocumentDB의 사용자 및 권한 기능은 세분화 된 리소스 집합에 대한 데이터베이스에 대한 직접 액세스 권한을 부여하기위한 것입니다. 사용 권한을 생성하여 생성 된 리소스 토큰은 일시적으로 OATH 토큰이 작동하는 방식과 유사합니다. 사용자에게 자원 세트에 대한 데이터베이스 엔드 포인트에 대한 직접 액세스 권한을 부여하려는 경우, 이는 사용자에게 가장 적합합니다. 단순히 응용 프로그램에 대한 입주자를 격리하려는 경우 - 중간 계층에서이를 수행하는 것이 훨씬 쉽습니다. –

관련 문제