source

최적의 사용자 역할 권한 데이터베이스 설계 프랙티스

bestscript 2023. 2. 16. 22:00

최적의 사용자 역할 권한 데이터베이스 설계 프랙티스

역할에 부여된 권한에 따라 사용자가 특정 탭에 액세스할 수 있는 웹 앱 데이터베이스를 설계하고 싶습니다.

지금까지 2개의 테이블을 작성했습니다.USER_테이블 USER_ROLES

사용자_탭LE에는 다음 필드가 있습니다.

  • id(프라이머리 키)
  • user_name
  • 패스워드
  • 이름
  • 성_이름
  • created_date
  • role_id_fk(외부 키)

USER_ROLES에는 다음 필드가 있습니다.

  • id(프라이머리 키)

  • role_name(ADMIN, TAB1_USER, TAB2_USER 등)

  • created_date

여기서 role_name "ADMIN"을 가진 사용자는 모든 탭을 볼 수 있으며 다른 사용자는 특정 탭에만 액세스할 수 있습니다.

질문입니다. USER_ROLES 테이블에 외부 키가 있는 USER_PERMISS 테이블을 만들고 다음 필드를 입력해야 합니까?

  • id(프라이머리 키)
  • permission_type(ALL, TAB1, TAB2....)

아니면 코드레벨로 관리해야 하나요?두 접근법의 단점과 장점은 무엇입니까?

Krokodilko씨가 코멘트한 것처럼, 그것은 당신이 필요로 하는 유연성의 수준에 달려 있습니다.
클라이언트 중 하나에 대해 다음과 같이 역할 기반 권한을 구현했습니다.

  1. 사용자(사용자 ID(PK), 사용자 이름(고유), 비밀번호(솔레이트해시!), 이름, 성, 전화 등)
  2. 역할(역할 ID(PK), 역할 이름(고유), 역할 설명)
  3. 권한(PK), 권한 이름(고유) - 탭/화면/작업이 여기에 표시됩니다.
  4. User To Role(사용자 ID, 역할 ID) - PK가 두 열 모두 결합되어 있습니다.
  5. 권한에 대한 역할(역할 ID, 권한 ID) - PK가 두 열 모두 결합되었습니다.

다만, 가능한 한 유연하게 하는 것이 요구되어, 아직 성장하고 있는 시스템입니다(6년, 계상).

많은 어플리케이션에서 제 경우와 같이 다수의 어플리케이션이 아닌 1대 다의 관계로서 역할을 할 수 있다고 생각합니다만, 저는 어떠한 어플리케이션에서도 권한을 하드 코딩하거나 권한을 롤하지 않습니다.

상세설명:역할 기반 보안 데이터베이스 설계(What do I know?)

언급URL : https://stackoverflow.com/questions/46016139/best-user-role-permissions-database-design-practice