django에서 유저 권한에 대해서 알아보겠습니다. 그리고 superuser와 staff에 대해서도 간단히 알아보겠습니다.

 


 먼저, createsuperuser로 슈퍼 유저를 생성합니다. 그 다음에 superuser로 로그인 해 보겠습니다.

 

 

 Permission만 보겠습니다. Active는 건너 뛰기로 하고, Staff와 Superuser가 있습니다. Staff는 어드민 사이트에 로그인 할 수 있는 계정입니다. 그리고, Superuser는, 모든 권한을 가지고 있는 유저입니다. 리눅스로 치면 root user 정도라고 생각하시면 편합니다. 그만큼 책임이 매우 많이 따른다는 의미입니다.

 

 

 이제, chokw2 계정을 하나 생성하겠습니다. Staff 계정으로 생성한 다음에 CHOKW2로 로그인 해 보겠습니다.

 

 

 그러면, 로그인은 되는데, 어떤 작업도 할 수 없습니다. 어떤 권한도 주어지지 않았기 때문입니다.

 


 이제, superuser로 로그인 해서, CHOKW2에게 권한을 부여해 보겠습니다. User permission:에는 유저가 가질 수 있는 권한들이 나열되어 있는데요. 저는 이 중, auth | user | Can change user 권한을 chokw2에게 주겠습니다. 그리고 다시 chokw2로 로그인 해 보겠습니다.

 

 

 그러면, chokw3의 계정 정보를 바꿀 수 있습니다. 이 말인 즉슨, 내 계정의 정보도 바꿔 버릴 수 있다는 이야기인데요.

 

 

 Superuser status에 체크할 수도 있습니다? 이 말은, auth user의 상태를 변경할 수 있는 chokw2가 superuser가 될 수 있다는 의미입니다. 그러니, auth_user 관련 권한은 신중하게 주는 게 좋아 보입니다.

 


 보기 권한만 가져야 하는 유저에게, auth user의 상태를 변경할 수 있는 권한까지 준다면, 접근 통제가 되지 않으면, 매우 치명적일 것입니다. 권한이 많아지면 할 수 있는 일이 많아집니다. 이 말은, 권한이 제한되면 그만큼 할 수 있는 일이 적어진다는 의미입니다. 모든 데이터에 대해 view 권한만 주려면 어떻게 하면 될까요?

 

 

 그냥 view가 적혀진 것만 주면 됩니다.

 

 

 그리고 나서, chokw2 계정에 접속해 보면, 계정에 대한 정보만 볼 수 있습니다. 계정 생성, 삭제, 수정과 같은 작업은 할 수 없습니다. 이를 응용하면, 댓글에 대해 정보를 삭제, 수정할 수 있는 권한을 가진 staff 계정 등을 만들 수도 있습니다.

 


 그런데, staff가 여러명이면 어떨까요? 각각의 계정에 대해 권한을 일일히 설정 할 수 없습니다. 그룹을 생성해 보겠습니다.

 

 그룹 이름은 viewer로 설정하였습니다. 이 권한은 오로지 view만 할 수 있습니다. 수정, 추가, 삭제 등은 할 수 없습니다.

 

 

 그리고 chokw2 계정을 viewer 그룹에 넣은 후, chokw2 계정으로 로그인 해 보겠습니다.

 

 

 auth user에 대한 정보를 볼 수 있습니다. 이는, viewer라는 그룹이 auth user에 대한 정보를 볼 수 있는 권한이 있기 때문입니다. 유저가 속해 있는 권한들을 모두 가지고 있는 셈입니다.