티스토리 뷰

 

보안 정책 설정하는 법

 

1. 자원 및 권한 설정

- 마이페이지

    자원 설정 - /mypage

    권한 매핑 - ROLE_USER

- 메시지

    자원 설정 - /message

    권한 매핑 - ROLE_MANAGER

- 환경설정

    자원 설정 - /config

    권한 매핑 - ROLE_ADMIN

- 관리자

    자원 설정 - /admin/**

    권한 매핑 - ROLE_ADMIN

 

2. 사용자 등록 및 권한부여

 

3. 권한계층적용

    ROLE_ADMIN > ROLE_MANAGER > ROLE_USER

 

4. 메소드 보안 설정

    메소드 보안 - 서비스 계층 메소드 접근 제어

        io.security.corespringsecurity.aopsecurity.AopMethodService.methodSecured

    포인트컷 보안 - 포인트컷 표현식에 따른 메소드 접근 제어

        execution(public * io.security.corespringsecurity.aopsecurity.*Service.pointcut*(..))

 

5. IP제한하기

 

 

 

리소스관리 - 인가처리 (각 자원에 해당하는 권한)

매핑된 데이터가 DB에 저장되며, 인가처리가 DB와 연동되서 스프링시큐리티가 처리를 하게 된다.

 

 

각각의 메뉴에 접근할 수 있는 사용자를 등록하도록 한다.

user계정, manager계정을 만든다.

 

총 3명의 사용자가 있다. admin, user, manager

기본적으로 회원가입시 ROLE_USER라는 권한으로 부여가 되며, manager에게는 ROLE_MANAGER권한을 부여할것이다.

 

먼저 user계정으로 로그인하게 되면, user는 ROLE_USER라는 권한을 가지고 있기 때문에, 마이페이지 에 접근이 가능하다. 마이페이지는 ROLE_USER 권한으로 자원이 매핑되어있기 때문이다.

메시지에는 접근이 되지 않는다. 메시지는 ROLE_MANAGER 권한으로 자원이 매핑되어있기 때문에,  ROLE_MANAGER라는 권한을 가진 사용자가 접근이 가능하다.

manager로 인증을 하고 메시지에 접근을 하면 접근이 가능하다. 하지만 마이페이지나 환경설정에는 접근할 수 없다.

 

admin인으로 인증을 한 상태에서 환경설정은 ROLE_ADMIN 권한과 매핑이 되어있기 때문에 접근 이 가능하지만, 마이페이지나 메시지에는 접근이 되지 않는다.

 

 

ROLE_ADMIN 권한을 가진 사용자(admin)가 마이페이지나 메시지에 접근이 가능하려고 하면

사용자관리탭에 가서 admin 계정 권한에 ROLE_MANAGER, ROLE_USER 이렇게 권한을 모두 부여해야 각각의 자원에 접근이 가능하게 된다.

 

 

인증처리와 각각의 자원에 접근이 될 수 있도록 처리하는  인가처리 모두가 스프링 시큐리티에서 데이터베이스와 연동해서 처리가 되고 있다.

 

 

우리가 이렇게 admin계정에 각각의 권한들을 모두(ROLE_ADMIN, ROLE_MANAGER, ROLE_USER) 부여를 하면,

각각의 권한에 매핑된 자원에 접근이 가능하지만

 

예를들어, ROLE_ADMIN권한만 부여를 하더라도 ROLE_MANAGER, ROLE_USER 권한과 매핑된 자원에도 접근이 가능하도록 처리를 해보도록 할 것이다.

=> 권한계층 적용 (ROLE_ADMIN > ROLE_MANAGER > ROLE_USER) - 이렇게 RoleHierarchy와 같은 개념으로 구성하게 되면, ROLE_ADMIN 권한을 가진 사용자는 ROLE_MANAGER, ROLE_USER 권한과 매핑된 자원이도 접근이 가능하게 된다.

admin 은 manager, user 의 권한과 매핑된 자원 모두에게 접근 가능.

manager는 user의 권한과 매핑된 자원에도 접근 가능.

 

IP제한하기

허가된 ip만 접근 가능하도록 설정을 했다. 내 아이피가 아닌 다른 ip로 접근하면 어떤 자원에도 접근이 되지 않는다.

권한매핑이 된 자원에는 접근이 되지 않으며, 아무 매핑이 되지 않은 자원에만 접근이 가능하다.

 

ip어드레스도 ip클래스를 추가해 데이터베이스와 연동되서 인가처리가 되고있다.

 

 

 

메소드보안?

가령 현재 client가 어떤 자원을 요청하게 되면 그 자원에 접속이 된 상태에서 메서드보안은 해당 서비스의 메소드를 호출해서 이 메서드 안으로 접근이 가능한지 가능하지 않은지 그 인가처리를 하는 것을 말한다.

 

지금은 인증을 받지 않아도 메소드보안에 접근이 가능하다. 이것을 변경해보도록 하려면

 

리소스 관리에 가서 리소스명에 패키지 이름+클래스이름+메서드 까지 해서 리소스명을 적어주고

리소스타입은 method 이고,

이 메서드 안으로 접근하기 위해서는 ROLE_USER 권한을 가진 사용자가 접근 가능하도록 매핑을 해서 설정하도록 한다.

 

메소드 보안도 실시간적으로 DB와 연동해서 인가처리가 되고 있다.

메소드(소스코드) 에서는 어떠한 권한도, 설정도 되어있지 않고 있고,  모든 인가, 보안처리는 그 정보를 저장하고 저장된 정보를 읽어 그 데이터를 가지고 Spring security가 인가처리를 해준다.  

 

포인트컷 보안은 포인트컷 표현식을 사용해 메서드 위에서 메서드 보안 세팅을 할 수 있도록 처리를 하는 것이다.

포인트컷 표현식 자원을 리소스에 등록한다. 타입은 pointcut이고

리소스명을 보면 해당패키지+클래스가 가지고 있는 메서드 들 중 pointcut으로 시작하는 모든 메서드에는 인가처리가 될 수 있도록 (ROLE_ADMIN) 권한을 가진 사용자만 접근 할 수 있도록 설정을 한다.

 

 

 

인증처리 시스템을 가지고 있고 각각의 사용자를 등록하고 관리자시스템에서 그 사용자들에게 각각의 권한을 설정하게 되고, 각 자원에 설정된 그 자원에 접근하기 위해서는 해당 자원에 설정된 권한을 가진사용자만 접근 가능하도록 하였고,

admin권한을 가진 사용자가 roleHierachy 기능이 활성화 되면 그 하위레벨에 있는 권한이 접근할수 있는 자원에도 접근이 가능한 기능도 확인하였다.

메서드보안과 포인트컷 보안은 직접 관리자시스템에서 그 자원을 등록하고, 서비스계층에 해당 메서드에 접근이 가능한지/가능하지 않은지 그 처리과정을 처리해보았다.

 

메서드보안은 일반적으로 aop기반으로 동작하고, url방식의 자원접근은 filter기반으로 인가처리가 이루어진다.

인가처리와 인증처리 모든 시스템이 외부와 DB와 연동하여 동적인 인증처리와 동적인 인가처리가 이루어지도록 구성하여볼 것이다.

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함