roles 별 접근 제한 path / url 을 지정하고 싶은 경우

roles 별 접근 제한 path / url 을 지정하고 싶은 경우.

드루팔로 개발을 하다 보면 접근권한 제어가 워낙
노드별 패스별 유저별로 다양하다 보니 쉽지 않은
경우가 있다.
이를 해결하는데 Path Access 라는 모듈이 한몫
했기에 소개코자 한다.

[현상]

어떤 고객사 홈페이지의 요구 조건 중 하나는,
유저들이 새 글을 쓰면서 댓글 여부를 선택할 수
있게 해 달라는 것이었다.
드루팔은 그것이 가능하다. 글을 작성/편집할 때
댓글을 읽기만 가능한지, 읽기/쓰기 동시에 가능한지,
아예 댓글을 달지 못하게(댓글로 인한 상처가 싫어서)
할 수도 있다.

하지만 이 경우에 admin/user/access 접근 제어화면에서
authenticated user 라고 하는 가입자 유저들에게
Comment의 관리권한을 주지 않으면 안된다.
일반유저에게 댓글 관리권한을 부여하면 여러 문제가
생길 수 있다(관리화면의 특정 부분이 보안에 취약해 진다).

그래서 우리는 고민에 빠진다. 어떻게 하면,
댓글 관리권한을 유저들에게 주면서, 동시에
일반 유저들은 절대로 관리자 화면을 볼 수 없도록 할까.

******* 중요 수정 ********
관리자 이외의 그룹에 "댓글 관리"에 관한 권한을 주게 되면 여러 가지 보안 문제가 발생하는 것으로 보입니다. 윗 글과 같은 특별한 상황에 대해, "댓글 관리" 권한을 일반 유저들에게 부여하지 않는 것을 권합니다!

[원인]

드루팔은 상당히 ACL이 우수한 CMS임에도 불구하고
그 복잡함과 모듈간의 상호 접근성 때문에 간혹 이러한
어려운 조건이 생긴다. 하지만 이것도 거의 해결책이
나와있다. 검색하느라 조금 고생은 했다.

[해결]

Path Access 모듈이 아주 좋았다.
이 모듈을 설치/활성화하고 나면 admin/user/pathaccess를
통해서 각 유저그룹별(Roles)로 접근이 가능/불가능한
패스를 지정할 수 있다.

예를 들어 authenticated user의 편집 링크를 누른 다음,
Access every page except the listed pages. 를 선택,
페이지 항목에는 admin/* 을 입력하면,
일반 유저들은 관리자 화면의 어떤 영역으로도 접근이
불가능해 진다.

[참고]

- Path Access 모듈은 role_weights 라는 모듈도 동시에
요구한다. 다운로드해서 미리 설치/활성화해 두자.

- Path Access 모듈과 비슷한 느낌의 URL Access라는
모듈은 이번 문제 현상을 해결할 수 없었다.
URL Access는 노드의 URL 별명에 따른 권한 제어를
담당하는 것이었다.

;이상입니다.

Your rating: None 평균 : 5 (3 votes)

댓글

주의 : 관리자 이외의 그룹에 "댓글 관리" 권한을

주의 : 관리자 이외의 그룹에 "댓글 관리" 권한을 주게 되면 여러 가지 보안문제가 생길 수 있습니다. 너무나도 당연한 말이지만, 행여나 설정 조심합시다.