Java Framework/Spring Security

[Spring Security] 역할 기반 접근 제어 (RBAC) feat. Role

annovation 2025. 2. 16. 10:13

역할 기반 접근 제어 (RBAC)

애플리케이션에서는 사용자마다 다른 권한을 가지는 경우가 많습니다. 예를 들어, 관리자는 시스템을 관리할 수 있지만, 일반 사용자는 자신의 데이터만 접근하도록 제한해야 합니다. 이런 차이를 구현하려면 역할 기반 접근 제어(Role-Based Access Control, RBAC)가 필요합니다.

  • 역할(Role) : 사용자의 직무나 그룹을 나타냅니다. ex. ADMIN, USER
  • 권한(Authority):  Spring Security가 사용하는 실제 권한 이름으로, 보통 ROLE_ 접두사를 사용합니다. ex. ROLE_ADMIN, ROLE_USER

Spring Security 역할 기반 접근 제어

package com.example.security.roles;

import lombok.Getter;

@Getter
public enum UserRole {
    MANAGER("ROLE_MANAGER"),
    EMPLOYEE("ROLE_EMPLOYEE");

    private final String authority;

    UserRole(String authority) {
        this.authority = authority;
    }
}

 

1. UserRole 열거형 (enum)

  • 사용자 역할(권한)을 정의합니다.
  • MANAGER과 EMPLOYEE는 각각 열거형의 상수로, 시스템에서 사용되는 역할을 의미합니다.

2. ROLE_ 접두사

  • Spring Security는 권한을 확인할 때 ROLE_ 접두사를 기본적으로 요구합니다.
  • ROLE_MANAGER이나 ROLE_EMPLOYEE와 같이 Spring Security에서 인식할 수 있는 실제 권한 이름을 저장합니다.
  • Spring Security는 내부적으로 이 값을 사용하여 인증된 사용자가 특정 작업을 수행할 수 있는지 확인합니다.
    • ROLE_MANAGER : 관리자의 권한 이름
    • ROLE_EMPLOYEE : 직원의 권한 이름

3. authority 필드와 Getter 메서드

  • authority 필드는 역할에 대응하는 권한 이름을 저장합니다.
  • @Getter를 사용하여 Lombok이 getter 메서드를 자동 생성합니다. ex. userRole.getAuthority()로 값을 가져옵니다.

4. 생성자

  • UserRole의 생성자를 사용해 열거형 값과 권한 이름을 연결합니다.

출처

OpenAI ChatGPT (https://openai.com)

반응형

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

@AuthenticationPrincipal  (0) 2025.04.11
[Spring Security] 보안  (0) 2025.02.15
[Spring Security] 스프링 세큐리티 (Spring Security)  (1) 2025.02.11