빙응의 공부 블로그

[Spring]스프링 시큐리티 - 개요 본문

Spring/개인공부_이론

[Spring]스프링 시큐리티 - 개요

빙응이 2024. 3. 21. 18:32

📝Spring Security

Spring Security란 일반적인 공격에 대한 인증, 권한 부여 및 보호를 제공하는 프레임워크이다.

 

스프링 시큐리티의 기능은 크게 4가지로 나눈다.

  • 인증(Authentication)
  • 권한 부여(인가 : Authorization)
  • 악용으로부터 보호
  • 통합 

 

 

인증(Authentication)

인증이란 특정 리소스에 엑서스하려는 사용자의 ID를 확인하는 방법이다. 

  • 인증에 사용되는 일반적인 방법은 사용자에게 사용자 이름과 암호를 입력하도록 요구하는 것이다. 
  • 이것을 지식 기반 인증이라고 한다. 
  • 기본적으로 Servlet 환경과 WebFlux 환경에서 모두 적용된다.
권한 부여(Authorization)

권한 부여는 특정 리소스에 액세스할 수 잇는 사용자를 결정하는 것이다. 

  • 스프링 시큐리티는 요청 기반 권한 부여 및 메서드 기반 권한 부여를 허용하는 심층 방어를 제공한다.

🚩요청 기반 권한 부여 

  • 사용자가 특정 작업을 수행하기 위해 필요한 권한이나 권한 그룹을 기반으로 권한을 부여한다. 
  • 예를 들어, 사용자 A가 (작성, 수정, 삭제) 권한을 부여하고, 요청이 들어올 때 해당 작업에 필요한 권한을 가진지 확인하여 허용 또는 거부를 한다. 

🚩방법 기반 권한 부여 

  • 특정 메서드 또는 기능에 대한 권한을 부여하는 것
악용으로부터 보호

스프링 시큐리티는 일반적인 악용에 대한 보호 또한 제공한다. CSRF와 같은 웹 공격을 방지하고, HTTP 헤더 및 요청에 대ㅎ한 보안을 강화한다. 

  • CSRF
    • 웹 응용프로그램에서 발생하는 보안 취약점 중 하나이다. 
    • 공격자가 사용자의 신뢰를 이용하여 인증된 사용자의 권한으로 악의적인 요청을 하는 것 
    • 스프링 시큐리티는 사용자가 요청할 때마다 무작위로 생성된 CSRF 토큰을 함께 제공하고 검증함으로 써 공격을 차단한다.
  • HTTP Headers
    • HTTP 응답 헤더에 대해 여러가지 방법으로 보안을 강화하는 것을 제공한다. 
  • HTTP Requests
    • 스프링 시큐리티는 모든 요청에 대해 TLS(네트워크 보안 프로토콜)을 이용해 보호한다.
통합

스프링 시큐리티는 다양한 프레임워크 및 API와의 통합을 제공한다.

  • 암호화
    • 스프링 시큐리티는 대칭 암호화, 키 생성 및 암호 인코딩을 지원한다. 
  • 스프링 데이터
  • JAVA의 동시성 API
  • Jackson
  • Localization

자세한 설명은 공식문서에서 확인하자

Spring Security :: Spring Security

 

Spring Security :: Spring Security

If you are ready to start securing an application see the Getting Started sections for servlet and reactive. These sections will walk you through creating your first Spring Security applications. If you want to understand how Spring Security works, you can

docs.spring.io

🚩Spring Security 특징 

Filter 기반 동작 
  • Spring MVC와 분리되어 관리하고 동작할 수 있으며 과정 추가도 쉽게 가능하다.

필터에 대한 자세한 설명은 밑의 포스팅을 참고하자! 

[Spring]스프링 MVC 2편 - 로그인 처리(필터, 인터셉터) (tistory.com)

 

[Spring]스프링 MVC 2편 - 로그인 처리(필터, 인터셉터)

📝필터와 인터셉터 우리가 바로 전 포스팅에서 보안에 신경쓴 웹 사이트는 한가지 큰 문제가 있다. 그것은 바로 로그인을 안해도 URL을 통해 사이트에 접근이 가능하다. 상품 관리 컨트롤러에서

quddnd.tistory.com

@Bean으로 설정하여 관리한다.
  • Spring Security 3.2부터 빈으로 관리할 수 있게 되었다.