JAVA/Spring Security

Spring Security (스프링 시큐리티) Ch.1

min민 2023. 3. 15.

 

 

 

Spring Security (스프링 시큐리티) Ch.1

 

 

 

Spring Security DAY1 CH.1

 

학습 목표

  • Spring Security가 무엇인지 알아보기.
  • Spring Security 사용하는 용어정리 하기.
  • Spring Security를 사용해야 하는 이유를 알 수 있다.
  • Spring Security의 기본구조

 

 

 

1️⃣ Spring Security 란?

Spring Security는 Spring 기반의 프레임워크에서 보안을 다루기 위한 프레임워크다. 이전에는 Spring Security가

Acegi Security로 불렸었다. Spring Security는 인증(Authentication)과 인가(Authorization) 기능을 포함하며, 웹, 서비스, 메시지 기반 애플리케이션 등 다양한 환경에서 보안을 다루기 위한 기능을 제공 하고있다.

 

 

 

 

사용하는 용어 정리

 

주체(Principal)

Spring Security에서 사용되는 주체(Principal)은 애플리케이션에서 작업을 수행할 수 있는 사용자, 디바이스 또는 시스템 등이 될 수 있으며, 일반적으로 인증 프로세스가 성공적으로 수행된 사용자의 계정 정보를 의미gks다.

 

 

접근 제어(Access Control)

접근제어(Access Control)은 사용자가 애플리케이션의 리소스에 접근하는 행위를 제어하는 것을 의미한다.

 

 

인증(Authentication)

사용자가 자신의 신원을 증명하는 것으로, 대개 ID와 비밀번호를 사용한다.

인증된 사용자는 인증 정보를 제출하고 인증이 수락되면, 애플리케이션에서 제공하는 서비스와 리소스에 접근할 수 있게된다.

일반적으로 인증(Authentication)은 애플리케이션을 사용하는 사용자가 본인이 맞음을 증명하는 절차를 의미한다.

인증(Authentication)을 정상적으로 수행하기 위해서는 사용자를 식별하기 위한 정보가 필요한데 이를 Credential(신원 증명 정보)이라고 한다.

 

 

ex) 특정 사이트에서 로그인을 위해 입력하는 패스워드 역시 로그인 아이디를 증명하기 위한 Credential이다.

 

 

 

인가(Authorization)

인증된 사용자가 액세스할 수 있는 서비스와 리소스를 결정하는 것이다.

인증된 사용자의 역할이나 권한에 따라 리소스에 대한 액세스 권한이 부여된다.

 

인가(Authorization)은 인가가 정상적으로 수행된 사용자에게 하나 이상의 권한(authority)을 부여하여 특정 애플리케이션의 특정 리소스에 접근할 수 있게 허가하는 과정을 의미한다.

인가(Authorization)은 반드시 Authentication 과정 이후 수행되어야 하며 권한은 일반적으로 역할(Role) 형태로 부여된다.

 

 

ex) API에 대한 권한 부여(인가) 기능이 없다면,

카페에 방문한 고객이 매장에서 판매하는 커피 정보를 마음대로 변경할 수 있게 된다.

 

 

보안 컨텍스트(Security Context)

인증 및 인가 정보를 보유하는 객체다.

애플리케이션에서는 현재 사용자와 사용자의 인증 및 인가 정보를 Security Context 객체에서 추적한다.

 

 

인증 프로바이더(Authentication Provider)

인증을 처리하는 데 사용되는 객체다.

사용자가 제공한 인증 정보를 검증하고 인증 결과를 Security Context에 저장한다.

 

 

 

필터(Filter)

HTTP 요청을 처리하고 응답을 생성하는 데 사용되는 객체다.

Spring Security에서는 보안 필터 체인(Security Filter Chain)을 통해 HTTP 요청을 처리하며, 각 필터는 특정 보안 기능을 처리하게 된다.

 

 

 

 

2️⃣ Spring Security로 할 수 있는 보안 강화 기능

1. 사용자 인증

Spring Security는 간단한 사용자 이름과 비밀번호 인증에서부터 복잡한 인증 방식까지 다양한 인증 방식을 지원한다.

이를 통해서 사용자 인증을 강화하고 보안성을 높일 수 있다.

 

 

2. 사용자 인가

Spring Security는 각 사용자에 대한 역할(Role)과 권한(Authority)을 관리할 수 있다. 각 역할과 권한에 대해 접근 제어를 구현할 수 있다는 얘기이다. 이를 통해서 사용자가 자신의 권한을 벗어나는 리소스에 접근하는 것을 막을 수 있게 된다.

 

3. 세션 관리

Spring Security는 세션 관리를 통해 사용자 인증 정보를 유지하고 관리한다. 사용자가 인증 된 후에 세션 관리를 통해 사용자가 로그인 상태를 유지하는 동안 인증 정보가 유지된다. 또한, 세션 관리를 통해 다양한 공격에 대한 보안을 강화할 수 있다.

 

4. 보안 필터 체인

Spring Security는 보안 필터 체인을 통해 HTTP 요청에 대한 보안을 제공한다. 각 필터는 특정 보안 기능을 처리하며, 필터 체인은 여러 개의 필터를 순차적으로 실행하여 보안 기능을 제공 하고있다.

 

5. 암호화

Spring Security는 다양한 암호화 기능을 제공한다. 비밀번호를 안전하게 저장하기 위한 암호화 기능이나 데이터의 무결성을 보호하기 위한 디지털 서명 기능 등을 제공한다.

 

6. LDAP 지원

Spring Security는 Lightweight Directory Access Protocol(LDAP)을 지원한다.

LDAP은 사용자 인증과 권한 부여를 위한 경량 디렉터리 액세스 프로토콜로, 기업 내에서 중앙 집중적으로 사용자 인증과 권한 부여를 관리할 때 많이 사용된다.

 

 

3️⃣ Spring Security를 사용하는 이유

1. 보안강화

Spring Security는 인증, 인가, 보안 필터 체인, 암호화, LDAP 지원 등 다양한 보안 강화 기능을 제공한다. 이를 사용하여 애플리케이션의 보안성을 높일 수 있다. Spring Security를 사용하면 개발자는 보안에 대한 복잡한 작업을 직접 구현하지 않아도 되므로 시간과 비용을 절약할 수 있다.

 

 

 

2. 사용하고 간편하고 확장성이 높음

Spring Security는 Spring 프레임워크와 함께 사용할 수 있으며, Spring의 컨벤션에 따라 개발되어 있다. 또한, 다양한 인증 방식과 인가 방식을 제공하므로 개발자는 적절한 방식을 선택하여 사용할 수 있다. 또한, 필요한 보안 기능을 직접 구현하거나 커스터마이징하여 사용할 수 있다.

 

 

 

3. 지속적인 업데이트와 지원

Spring Security는 Spring 프레임워크와 함께 개발되는 보안 프레임워크이므로, 지속적인 업데이트와 지원이 이루어진다. 이를 통해 보안 취약점에 대한 대응이 빠르게 이루어지며, 안정적으로 사용할 수 있다.

 

 

 

 

 

핵심 point

  • Spring Security는 Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크로써, Spring MVC 기반 애플리케이션에 보안을 적용하기 위한 사실상의 표준이다.
  • Principal(주체)은 일반적으로 인증 프로세스가 성공적으로 수행된 사용자의 계정 정보를 의미한다.
  • Authentication(인증)은 애플리케이션을 사용하는 사용자가 본인이 맞음을 증명하는 절차를 의미한다.
  • Authorization(인가 또는 권한 부여)은 Authentication이 정상적으로 수행된 사용자에게 하나 이상의 권한(authority)을 부여하여 특정 애플리케이션의 특정 리소스에 접근할 수 있게 허가하는 과정을 의미한다.
  • Credential(신원 증명 정보)은 Authentication을 정상적으로 수행하기 위해서는 사용자를 식별하기 위한 정보를 의미한다.
  • Access Control(접근 제어)은 사용자가 애플리케이션의 리소스에 접근하는 행위를 제어하는 것을 의미한다.
  • 보안 기능을 밑바닥부터 직접 구현하는 것보다 잘 검증되어 신뢰할 만한 Spring Security를 사용하는 것이 더 나은 선택이다.
  • Spring Security는 특정 보안 요구 사항을 만족하기 위한 커스터마이징이 용이하고, 유연한 확장이 가능하다.

 

 

 

결론*

Spring Security는 Spring 기반의 애플리케이션에서 보안을 다루기 위한 프레임워크다. 인증, 인가, 보안 필터 체인, 암호화, LDAP 지원 등 다양한 보안 강화 기능을 제공하여 애플리케이션의 보안성을 높일 수 있다. 개발자는 Spring Security를 사용하여 애플리케이션에서 보안을 강화하고, 사용자의 개인정보와 리소스를 안전하게 보호할 수 있게 된다.

 

 

 

 

**

  • Spring Security의 기본구조 는 바로 다음 포스팅으로 이어가겠다.

'JAVA > Spring Security' 카테고리의 다른 글

OAuth2 인증 및 JWT 관련 트러블슈팅 정리  (0) 2025.02.20

댓글