이 페이지의 구성
권한관리
권한관리
개요
시스템 구축시 스프링의 보안 메커니즘을 적용하기 위해 Spring Security 에서 관리하는 권한(Authority) 을 정의하는 컴포넌트이다. 당 컴포넌트를 이용하여 담당자는 시스템 사용자에게 부여하는 권한을 정의하여 관리할 수 있다. 표준프레임워크 3.9부터는 Session 방식 권한처리 기능을 추가하여 Spring Security 를 사용하지 않고도 당 컴포넌트를 이용하여 접근제어가 가능하도록 하였다.
설명
권한관리는 사용자별 권한을 관리하기 위한 목적으로 등록, 수정, 삭제, 조회, 목록조회의 기능을 수반한다.
- ① 권한등록 : 시스템 담당자는 시스템 사용자에게 권한을 부여하기 위해 정의한 권한정보를 등록한다.
- ② 권한수정 : 시스템 담당자는 시스템 사용자에게 권한을 부여하기 위해 정의한 권한정보를 수정한다.
- ③ 권한삭제 : 시스템 담당자는 시스템 사용자에게 권한을 부여하기 위해 정의한 권한정보를 삭제한다.
- ④ 권한조회 : 시스템 담당자는 시스템 사용자에게 권한을 부여하기 위해 정의한 권한정보를 조회한다.
- ⑤ 권한목록 : 시스템 담당자는 시스템 사용자에게 권한을 부여하기 위해 정의한 권한정보의 목록을 조회한다.
환경설정
권한 기본 설정
* 스프링에서 제공하는 기본 권한(Authority)
| AUTHORITY | DESCRIPTION |
|---|---|
| ROLE_ANONYMOUS | 모든 사용자 |
| IS_AUTHENTICATED_ANONYMOUSLY | 익명 사용자 |
| IS_AUTHENTICATED_FULLY | 인증된 사용자 |
| IS_AUTHENTICATED_REMEMBERED | REMEMBERED 사용자 |
| ROLE_RESTRICTED | 제한된 사용자 |
| ROLE_USER | 일반 사용자 |
| ROLE_ADMIN | 관리자 |
권한 추가 설정
* 업무적으로 필요에 의해 추가한 권한(Authority)
| AUTHORITY | DESCRIPTION |
|---|---|
| ROLE_SYM | 시스템 업무 담당자 |
| ROLE_COP | 협업 담당자 |
| ROLE_USS | 사용자지원 담당자 |
| ROLE_USER_MANAGER | 업무사용자 관리자 |
| ROLE_SEC | 보안 업무 담당자 |
| ROLE_ENTRPRSMBER_MANAGER | 기업회원 관리자 |
| ROLE_MBER_MANAGER | 일반회원 관리자 |
권한(롤) 상속구조 정의(ROLES_HIERARCHY)
* 정의된 하위 권한의 롤을 상속하기 위해 COMTNROLES_HIERARCHY Table에 상속구조를 정의한다.
ROLE_ANONYMOUS → IS_AUTHENTICATED_ANONYMOUSLY → IS_AUTHENTICATED_FULLY → IS_AUTHENTICATED_REMEMBERED → ROLE_USER → ROLE_ADMIN
flowchart TD
subgraph BASE["기본 상속 구조"]
direction TB
A[ROLE_ANONYMOUS] --> B[IS_AUTHENTICATED_ANONYMOUSLY]
B --> C[IS_AUTHENTICATED_FULLY]
C --> D[IS_AUTHENTICATED_REMEMBERED]
D --> E[ROLE_USER]
E --> F[ROLE_ADMIN]
end
subgraph CUSTOM["커스텀 업무 롤 삽입 예시"]
direction TB
R[ROLE_RESTRICTED] -->|PARNTS_ROLE| G[ROLE_COP]
end
G -->|PARNTS_ROLE| F
classDef base fill:#eef3ff,stroke:#3b5bdb,color:#1b1f27,stroke-width:1px;
classDef custom fill:#fff4e0,stroke:#e8890c,color:#1b1f27,stroke-width:1px;
class A,B,C,D,E,F base;
class R,G custom;
위 다이어그램과 같이 기본 상속구조(파란색)는 ROLE_ANONYMOUS 부터 ROLE_ADMIN 까지 순차적으로 상위 권한을 상속하며, 업무적으로 추가한 커스텀 롤(주황색)인 ROLE_COP 는 기존 상속구조 사이(ROLE_RESTRICTED 와 ROLE_ADMIN 사이)에 삽입되어 상속관계를 확장한다.
* 기초 데이터 생성
권한관련 기초데이터를 먼저 생성한다.
* 추가적으로 설정하는 권한은 기존에 정의된 권한 사이에 삽입한다.
- 상위 권한 정의
-- ROLE_COP 를 ROLE_ADMIN 의 상위(PARENT) 권한으로 등록한다.
INSERT INTO COMTNROLES_HIERARCHY (PARNTS_ROLE, CHLDRN_ROLE) VALUES('ROLE_COP','ROLE_ADMIN');
- 하위 권한 정의
-- ROLE_RESTRICTED 를 ROLE_COP 의 상위(PARENT) 권한으로 등록한다.
INSERT INTO COMTNROLES_HIERARCHY (PARNTS_ROLE, CHLDRN_ROLE) VALUES('ROLE_RESTRICTED','ROLE_COP');
- 권한의 HIERARCHY 구조
-- COMTNROLES_HIERARCHY Table 을 자기 조인(Self Join)하여 등록된 권한의 상속(계층) 구조를 조회한다.
SELECT A.CHLDRN_ROLE CHILD, -- 하위 권한
A.PARNTS_ROLE PARENT -- 상위 권한
FROM COMTNROLES_HIERARCHY A LEFT JOIN COMTNROLES_HIERARCHY B ON (A.CHLDRN_ROLE = B.PARNTS_ROLE);