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에 대한 정보를 볼 수 있는 권한이 있기 때문입니다. 유저가 속해 있는 권한들을 모두 가지고 있는 셈입니다.
'웹 > 장고' 카테고리의 다른 글
django null true 옵션과 blank true 옵션을 알아봅시다. (0) | 2022.07.16 |
---|---|
django form에 파일을 넘겼을 때 어떤 경우에는 왜 파일 이름이 바뀔까요? (2) | 2022.06.04 |
django app config ready 한 번만 실행되게 하려면 어떻게 할까요? (0) | 2022.05.08 |
django_session 테이블에 저장되어 있는 세션은 어떤 값들을 가지고 있을까요? (0) | 2022.04.30 |
django에서 migrate 를 할 때 postgresql relispartition 관련 문제는 왜 생긴 걸까요? (0) | 2022.04.23 |
최근댓글