spring의 보안 모듈로 웹 애플리케이션의 인증과 인가를 담당한다.
사용자가 누구인지 확인하는 과정
Spring Security는 사용자가 제공한 자격을 확인하고 유효한 사용자인지 판단한다.
인증된 사용자가 수행할 수 있는 작업의 범위를 결정하는 과정
RBAC(Role-Based Access Control)
사용자 역할에 기반하여 접근 권한을 부여한다.
단순화, 보안강화, 최소 권한 원칙 등의 이점을 제공한다.
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@OVerride
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.andMatchers("/admin/**").hasRole("ADMIN")
.andMatchers("/user/**").hasAnyRole("USER", "ADMIN")
.andMatchers("/", "/home", "/public/**").permitAll()
.anyRequest().authenticated();
}
}
ABAC(Attribute-Based Access Control)
사용자, 리소스 환경 등 다양한 속성에 기반하여 접근 권한을 결정하는 더 유연하고 세분화된 접근 방식
정책이 속성과 그 속성들 간의 관계를 기반으로 정의된다.
PBAC(Policy-Based Access Control)
사용자의 행동 패턴이나 시스템의 상태를 기반으로 접근 권하을 부여
| 항목 | 인증 | 인가 |
|---|---|---|
| 목적 | 사용자의 신원을 확인 | 사용자의 접근 권한을 설정 |
| 발생 시점 | 리소스 접근 전에 발생 | 리로스 접근을 시도할 때 발생 |
| 기술적 구현 | 사용자명/비밀번호, 생체 인증, 인증 토큰 등 | 역할기반 접근 제어, 정책 기반 접근 제어 |
| 식별 사항 | 누구인지를 식별 | 권한에 따라 작업 수행 가능 여부 식별 |