객체에 대한 사용자 권한에있어 이상적인 구조는 무엇입니까?MySQL - 객체에 대한 권한을위한 구조
일반 권한 또는 사용자가 액세스 할 수있는 섹션에 대한 많은 관련 게시물을 보았습니다.이 섹션은 users
, userGroups
및 userGroupRelations
또는 이와 유사한 것으로 구성되어 있습니다.
내 시스템에는 여러 가지 다양한 개체가 생성 될 수 있으며 각 개체는 켜거나 끌 수 있어야합니다. 예를 들어 그룹 및 하위 그룹이있는 암호 관리자를 생각해보십시오.
Group 1
Group 2
Group 3
Group 4
Group 5
Group 6
Group 7
Group 8
Group 9
Group 10
각 그룹에는 일련의 암호가 포함될 수 있습니다. 사용자는 모든 그룹에 대해 읽기, 쓰기, 편집 및 삭제 권한을 부여받을 수 있습니다. 어떤 시점에서 더 많은 그룹을 만들 수 있습니다.
그룹에 대한 권한이있는 사용자는 모든 하위 그룹에 권한을 부여하거나 해당 그룹으로만 제한 할 수 있어야합니다.
내 현재의 생각은 다음과 같은 열이있는 권한 표 A 사용자 테이블을 가지고 있으며,이 과거에 근무하고있다,하지만 난 건물에있어 새로운 시스템은 할 수 있어야
permission_id (int) PRIMARY_KEY
user_id (int) INDEX
object_id (int) INDEX
type (varchar) INDEX
admin (bool)
read (bool)
write (bool)
edit (bool)
delete (bool)
규모가 빠르며, 이것이 최고의 구조인지 확신 할 수 없습니다. 또한 그룹의 모든 하위 그룹 권한을 가진 사람을 더 어렵게 만드는 아이디어를 만듭니다.
사용자/관리자 역할에 대한 별도의 테이블이 있습니다. 즉, 제어 할 수있는 그룹 아래의 사용자에 대한 사용 권한을 변경할 수 있습니다.
그럼, 질문으로, 위의 구조를 사용해야합니까? 아니면 누군가가 더 나은 방향으로 나를 가리킬 수 있습니까?
편집
대안은 객체의 모든 유형에 대한 권한 테이블을 만드는 것입니다.
@ Ollie - 정말 고마워요. 'type' 컬럼은 오브젝트 타입을 결정하며, 'object_id'를 별도의 테이블에있는 primary_key와 비교하는데 도움이 될 것입니다. 'admin' 권한 유형은'grant'와 동일합니다. 나는 또한 당신이 동일한 primary_key (정식 교육이 부족하여 여러 개의 컬럼을 만들 수 있음)을 알지 못했지만 훨씬 좋은 생각이라고 생각합니다. 당신이 말한 모든 것은 첫 번째 것이 더 낫다는 것을 암시합니다. ** 나의 유일한 질문은 다음과 같습니다. ** 여러 사용자가 동일한 객체에 액세스 할 수 있습니다. 새 개체가 만들어지면 사용자를 통해 새 권한을 적용해야합니까? –
예, 객체 생성 분야에서는 각 새 객체에 대해 각 사용자에 대한 권한 행을 추가해야합니다. 이와 같은 많은 시스템에는 전역 기본 권한 설정이 있습니다. 예를 들어 권한 테이블에 ID가 표시되지 않은 사용자에게는 읽기 권한이 있지만 그 이외에는 아무 것도 설정하지 않도록 설정할 수 있습니다. Ditto, 객체를 생성하는 사용자는 READ/EDIT/DELETE 그리고 다른 것은 없다. (WRITE 권한과 CREATE SUBOBJECT가 아니라면 아직 권한이 생성되지 않은 개체는 어렵습니다.) –
하하, 예, CREATE 감사합니다. 다시 한 번 감사드립니다. 나는 당신이 더 많은 것을 의미 할 수 있었으면 좋겠다. 이것은 엄청나게 도움이되었다. –