Spring

[Spring Security] Spring Security

codificacion 2023. 5. 11. 17:45

앱을 개발을 할때 또는 웹을 개발할 때 가장 중요한 것은 보안이다.

 

만약 실제로 카페의 고객용 애플리케이션을 개발했지만 보안을 고려 하지 않았다면 어떤 일이 발생할까?

1. 로그인 없이 모든 회원들이 회원을 검색, 추가, 제거 등을 할 수가 있다. 

2. API 대한 권한 부여(인가, authorization): 위의 로그인의 문제와 같이 회원들이 커피 메뉴를 알아서 수정 할 수 있다. 

3. 웹 보안이 취약: 세션, 클릭재킹 공격과 CSFR 등의 보안 취약점이 노출 되어 있다. 

 

이런한 보안 관리 관련해서 Spring 에서는 Spring Security 라는 보안 프레임워크를 제공한다.

Spring Security는 Spring MVC 기반 애플리케이션에 인증(Authentication)과 인가(Authorization) 기능을 지원하는 보안 프레임워크이다.

보안 기능을 직접 구현하는 Interceptor 또는 Servlet Filter가 있지만 보안 기능을 안정적이고 구조적을 잘 만들어진 Spring Security 를 사용하는것이 좋다. 

 

Spring Security 가 필요한 이유:

1. 인증과 인가(권한부여) 관리

2. 보안 설정

3. 애플리케이션 사용자의 역할에 따른 권한 레벨 적용

4. 민감한 정보의 데이터 암호화

5. SSL 적용

6. 일반적으로 알려진 웹 보안 공격 차단

 

Spring Security에서 사용하는 용어:

1. Principal(주체): 애플리케이션에서 작업을 수행 할 수 있는 사용자, 디바이스 또는 시스템. 

2. Authentication(인증): 사용자가 본인인지 증명하는 절차이고 여기서 Credential 으로  증명함(주민번호, 패스워드 등) .

3. Authorization(권한부여): 인증된 사용자에게 특정 리소스에 접근 할 수 있도록 허가해주는 과정.

4. Access control(접근제어): 사용자가 특정 리소스에 접근하는 행위 제어하는 것.