2009-08-26 5 views
4

이 질문은 RBAC 시스템 자체의 데이터베이스 설계에 관한 것이 아니라 웹 응용 프로그램에서 사용자가 컨텐츠를 제출할 수있게 할 때 응용 프로그램 특정 데이터베이스와 함께이 데이터베이스를 사용하는 방법에 관한 것입니다.역할 기반 액세스 제어 DB 설계

내 RBAC는 직원이 레코드를 추가하고 업데이트 할 수있는 간단한 백엔드 관리 응용 프로그램에서 쉽게 작동해야합니다. 예를 들어 온라인 저장소는 일반적으로 사용자 제출 콘텐츠가 없습니다. 두 데이터베이스는 분리되어있을 수 있습니다. 그러나 사용자가 콘텐츠를 제출할 수있는 웹 사이트/응용 프로그램으로 RBAC 디자인을 어떻게 재사용 할 수 있는지 잘 모르겠습니다. 레코드 추가/업데이트 권한이 필요한 두 개의 데이터베이스에 두 개의 User 테이블이 있습니다.

  1. 내 RBAC 데이터베이스를 웹 사이트 데이터베이스에 통합하고 users 테이블을 공유합니까?

  2. 두 개의 별도로 보관 하시겠습니까?

  3. 다른 작업을 수행 하시겠습니까?

옵션 2 할 경우 I :

  • (A)

  • (B)가 RBAC 사용자 테이블에 웹 사이트 데이터베이스에서 사용자를 복제 사용자 테이블에 관계를 만들

  • (C) 웹 사이트 사용자의 웹 사이트 데이터베이스에 새 RBAC 시스템을 만들고 관리자 사용자를 위해 별도의 RBAC를 만드시겠습니까?

데이터를 복제하는 중이지만 구현하기가 쉽지 않은 것처럼 보입니다. B는 두 개의 분리 된 사용자 테이블에 대한 관계를 생성하는 것이 어려워 보이는 것 같습니다. C도 중복되지만 "admin"RBAC에 영향을주지 않으면 서이 RBAC를 많이 사용자 지정할 수 있습니다.

기본적으로 RBAC 시스템을 가능한 한 재사용 가능하게 만들고 응용 프로그램 특정 사용자가 컨텐츠를 제출할 수있게함으로써 내 머리를 얻는 것이 약간 어려워지고 있습니다.

이 작은 RBAC 시스템은 대부분 내가 배울 수있는 방법이므로 "일반적인 프레임 워크 x/y/z를 사용해야합니다." 최근에 발견 한 용어를 사용하여, 나는 휠 얼간이가되어 호기심이 생길 때마다 재발 명하고 싶습니다! :)

내 사이트에 MySQL과 PHP를 사용할 예정이지만, 여기에 대해 묻는 데이터베이스 디자인이 중요하지 않습니다.

제 질문이 명확하지 않은 경우 알려 주시면 자세히 설명 드리겠습니다. 시간 내 주셔서 감사합니다.

답변

0

완전한 구현을 알지 못해서 나는 첫 번째 해결책을 찾고 사용자 테이블을 하나만 사용하고 있습니다. 그런 다음 온라인 응용 프로그램은 RBAC를 쿼리하여 사용자가 권한을 부여하는지 여부를 결정할 수 있습니다. 나에게 명확하지 않은 점은 얼마나 많은 신청서를 제출해야하는지 그리고 어디에 보관해야하는지입니다. 데이터베이스에 사용자 정보를 저장해야하는 경우 RBAC에 대한 외래 키 참조를 사용하여 응용 프로그램에 사용자 테이블을 만들어 해당 데이터를 두 위치에 저장하지 않고 액세스 권한을 결정할 수 있습니다. 이것이 얼마나 복잡한지는 사용자와 속성을 추가하고 업데이트 할 수있는 장소의 수에 달려 있습니다.실제 데이터베이스 구조는 비즈니스 규칙 및 아키텍처에 크게 의존하지만 논리 설계는 데이터를 하나의 테이블로 유지하는 것입니다.