LEVEL 84 QUEST
역할 기반 접근 제어(RBAC)
역할 기반 접근 제어(RBAC) — DevFoil 바이브코딩 Stage 18, Lv.84
RBAC(역할 기반 접근 제어)란?
사용자가 아닌 "역할"에 권한을 부여하는 시스템
RBAC(Role-Based Access Control)은 사용자 개개인에게 권한을 주는 대신,
"역할(Role)"이라는 그룹에 권한을 부여하고, 사용자에게 역할을 할당하는 방식입니다.
회사에서 신입사원이 들어오면 일일이 "이 폴더 접근 가능, 저 시스템 접근 불가"를 설정하지 않습니다. 대신 "마케팅팀 인턴"이라는 역할을 주면, 해당 역할에 맞는 모든 권한이 자동으로 적용됩니다.
RBAC가 필요한 이유:
회사에서 신입사원이 들어오면 일일이 "이 폴더 접근 가능, 저 시스템 접근 불가"를 설정하지 않습니다. 대신 "마케팅팀 인턴"이라는 역할을 주면, 해당 역할에 맞는 모든 권한이 자동으로 적용됩니다.
RBAC가 필요한 이유:
- 사용자가 100명이면 100번 권한 설정 vs 역할 3개만 관리
- 퇴사자 처리: 역할만 제거하면 모든 권한이 즉시 해제
- 감사(Audit): "누가 무엇을 할 수 있는지" 한눈에 파악 가능
- 엔터프라이즈 고객의 필수 요구사항
역할과 권한 테이블 설계
데이터베이스 스키마 설계
RBAC 시스템은 최소 4개의 핵심 테이블이 필요합니다.
사용자(User) - 역할(Role) - 권한(Permission)의 관계를 다대다(N:M)로 연결합니다.
-- 1. 역할 테이블
CREATE TABLE roles (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
tenant_id BIGINT NOT NULL,
name VARCHAR(50) NOT NULL, -- 'admin', 'editor', 'viewer'
display_name VARCHAR(100), -- '관리자', '편집자', '뷰어'
description TEXT,
is_default BOOLEAN DEFAULT false, -- 새 멤버 기본 역할
created_at TIMESTAMP DEFAULT NOW(),
UNIQUE(tenant_id, name)
);
-- 2. 권한 테이블
CREATE TABLE permissions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
resource VARCHAR(50) NOT NULL, -- 'project', 'member', 'billing'
action VARCHAR(50) NOT NULL, -- 'create', 'read', 'update', 'delete'
description VARCHAR(200),
UNIQUE(resource, action)
);
-- 3. 역할-권한 매핑 (N:M)
CREATE TABLE role_permissions (
role_id BIGINT REFERENCES roles(id),
permission_id BIGINT REFERENCES permissions(id),
PRIMARY KEY (role_id, permission_id)
);
-- 4. 사용자-역할 매핑 (N:M)
CREATE TABLE user_roles (
user_id BIGINT REFERENCES users(id),
role_id BIGINT REFERENCES roles(id),
tenant_id BIGINT NOT NULL,
assigned_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (user_id, role_id, tenant_id)
);
🔒
여기까지는 미리보기입니다
역할 기반 접근 제어(RBAC)
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.