권한 개념 모델링

6674 단어 모델링타입idea

개요


사용자에게 권한을 주는 모델을 총결하였다.
어떤 시스템의 편집, 열람 권한을 예로 들다.

개인에게 직접 수여하다


이것은 사용자 개인과 직접 관련된 모델이다.

분류도


image
plantuml

@startuml

hide class circle
hide class methods
skinparam shadowing false

ユーザー "*"-"*" 権限

@enduml

구부러진 그림


image
plantuml

@startuml

skinparam shadowing false
left to right direction

storage ユーザー {
  rectangle Alice
  rectangle Bob
}

storage 権限 {
  rectangle 編集権限
  rectangle 閲覧権限
}

Alice -- 編集権限 #red
Alice -- 閲覧権限 #red
Bob -- 閲覧権限 #red

@enduml

위에 있는 구부러진 그림은요.
  • Alice는 편집, 열람 권한이 있음
  • Bob은 열람 권한만 있음
  • 일 1하지만 이렇게 개인과 직접 연결되는 경우는 많지 않다고 생각한다.

    역할 부여


    사용자 링크의 역할을 승인하여 사용자의 역할을 내보낼 수 있습니다.

    분류도


    image
    plantuml
    
    @startuml
    
    hide class circle
    hide class methods
    skinparam shadowing false
    
    ユーザー "*"-"*" 役割
    役割 "*"-"*" 権限
    ユーザー "*"-"*" 権限 #green: /導出1
    note "[導出1] ユーザーが紐付く役割に紐付く権限全て" as N1
    
    @enduml
    
    

    구부러진 그림


    image
    plantuml
    
    @startuml
    
    skinparam shadowing false
    left to right direction
    
    storage 役割 {
      rectangle 管理者
      rectangle 一般
    }
    
    storage 権限 {
      rectangle 閲覧権限
      rectangle 編集権限
    }
    
    storage ユーザー {
      rectangle Alice
      rectangle Bob
      rectangle Carol
    }
    
    
    Alice -- 管理者 #red
    Bob -- 一般 #red
    Carol -- 一般 #red
    
    管理者 -- 閲覧権限 #green
    管理者 -- 編集権限 #green
    一般 -- 閲覧権限 #green
    
    @enduml
    
    
    위에 있는 구부러진 그림은요.
  • 관리자는 편집/열람 권한이 있음
  • 일반 사용자는 열람 권한이 있음
  • Alice는 관리자이므로 편집, 열람 권한이 있음
  • Bob, Carl은 일반 사용자이므로 열람 권한만 있음
  • 동작개인에게 직접 부여하는 것보다 권한을 가진 이유가'역할'이라는 점을 명확히 한 것으로, 사용자 변화에 유연하게 대응하는 모델이다.

    작용의 구조화


    캐릭터를 구성함으로써 권한을 부여하는 이유를 명확히 한다.

    분류도


    image
    plantuml
    
    @startuml
    
    hide class circle
    hide class methods
    skinparam shadowing false
    
    ユーザー "*"-"*" 役割
    権限 "*"--"*" ユーザー #green: /導出2
    役割 "0..1 親"-"* 子" 役割: [階層]
    権限 "*"--"*" 役割
    権限 "*"--"*" 役割 #green: /導出1
    note "[導出1] 紐づく上位の階層の役割に紐づく権限全て\n[導出2] ユーザーが紐付く役割に紐付く権限全て" as N1
    
    @enduml
    
    

    구부러진 그림


    image
    plantuml
    
    @startuml
    
    skinparam shadowing false
    
    storage 役割 {
      rectangle プロジェクトメンバー
      rectangle 一般
      rectangle 管理者
      一般 -[hidden] 管理者
    }
    
    storage 権限 {
      rectangle 閲覧権限
      rectangle 編集権限
      閲覧権限 -[hidden]- 編集権限
    }
    
    storage ユーザー {
      rectangle Bob
      rectangle Alice
      rectangle Carol
    }
    
    プロジェクトメンバー "親"--"子" 一般 #blue
    プロジェクトメンバー "親"--"子" 管理者 #blue
    
    プロジェクトメンバー - 閲覧権限 #green
    管理者 - 編集権限 #green
    
    一般 -- Bob #red
    一般 -- Carol #red
    管理者 -- Alice #red
    
    @enduml
    
    
    위에 있는 구부러진 그림은요.
  • 관리자는 편집 권한이 있고 프로젝트 구성원이기 때문에 열람 권한도 있다
  • 일반 사용자는 프로젝트 구성원이기 때문에 열람 권한도 있다
  • Alice는 관리자이므로 편집, 열람 권한이 있음
  • Bob, Carl은 일반 사용자이므로 열람 권한만 있음
  • 동작열람 권한이 있는 이유를'프로젝트 구성원'이라고 명시했다.

    작용은 지방의 구조화를 유지한다


    사용자가 작용하는 이유를 기술함으로써 더욱 명확해지려고 한다.

    분류도


    image
    plantuml
    
    @startuml
    
    hide class circle
    hide class methods
    skinparam shadowing false
    
    ユーザー "1"-"*" アサイン
    アサイン "*"-"1" 役割
    アサイン "*"--"1" プロジェクト
    
    権限 "*"--"*" ユーザー #green: /導出2
    役割 "0..1 親"-"* 子" 役割: [階層]
    権限 "*"--"*" 役割
    権限 "*"--"*" 役割 #green: /導出1
    note "[導出1] 紐づく上位の階層の役割に紐づく権限全て\n[導出2] ユーザーがアサインによって紐付けられた役割に紐付く権限全てを\nそのアサインに紐づくプロジェクト内で持つ" as N1
    
    @enduml
    
    

    구부러진 그림


    image
    plantuml
    
    @startuml
    
    skinparam shadowing false
    
    storage 役割 {
      rectangle プロジェクトメンバー
      rectangle 一般
      rectangle 管理者
      一般 -[hidden] 管理者
    }
    
    storage 権限 {
      rectangle 閲覧権限
      rectangle 編集権限
      閲覧権限 -[hidden]- 編集権限
    }
    
    storage ユーザー {
      rectangle Bob
      rectangle Alice
      rectangle Carol
    }
    
    storage アサイン {
      rectangle "(1)" as A
      rectangle "(2)" as B
      rectangle "(3)" as C
      rectangle "(4)" as D
    }
    
    storage プロジェクト {
      rectangle Aプロジェクト
      rectangle Bプロジェクト
    }
    
    プロジェクトメンバー "親"--"子" 一般 #blue
    プロジェクトメンバー "親"--"子" 管理者 #blue
    
    プロジェクトメンバー - 閲覧権限 #green
    管理者 - 編集権限 #green
    
    管理者 -- A #red
    一般 -- B #darkgreen
    管理者 -- C #darkblue
    一般 -- D #purple
    
    A -- Aプロジェクト #red
    B -- Aプロジェクト #darkgreen
    C -- Bプロジェクト #darkblue
    D -- Bプロジェクト #purple
    
    A -- Alice #red
    B -- Bob #darkgreen
    C -- Bob #darkblue
    D -- Carol #purple
    
    @enduml
    
    
    위에 있는 구부러진 그림은요.
  • 관리자는 편집 권한이 있고 프로젝트 구성원이기 때문에 열람 권한도 있다
  • 일반 사용자는 프로젝트 구성원이기 때문에 열람 권한도 있다
  • (1) Alice를 관리자로 A항목에 할당하므로 A항목의 열람, 편집 권한이 있음
  • (2) Bob을 일반 사용자로 A항목에 할당하므로 A항목의 열람 권한이 있음
  • (3) Bob을 관리자로 B항목에 할당하므로 B항목의 열람·편집 권한이 있음
  • (4) 캐럴이 일반 사용자로서 B항목에 배정되었기 때문에 B항목의 열람 권한이 있음동작

    진일보 모델링


    권한을 가지는 방법의 모델링을 했지만 사용자가 권한이 있다면 그 이유와 세트로 모델링하는 일을 명확히 할 수 있다.
    역할의 모델링에 대해 분석 모델[1]의 제2장'책임 관계'를 참고했다.내가 진일보한 모델링을 진행하고 싶을 때 이쪽을 참고하면 된다.
    단, 분석 모델의 p.13
    모델링의 원칙은 모델링이 정확한지 틀린 것이 아니라 사용하기 쉽고 사용하기 어렵다는 것이다.
    이처럼 사실을 세부적으로 완전히 표현하는 것이 아니라 사용하기에 적합한 모델을 선택하는 것이 중요하다.
    각주
    Martin Fowler(2002) 분석 모델: 재사용 가능한 객체 모델, 피어 편집↩︎

    좋은 웹페이지 즐겨찾기