Deploy-gate-2

이지예·2026년 8월 7일

개발

목록 보기
13/58

Claims 기반 권한 관리 이해하기

오늘은 Deploy-gate의 핵심 기능 중 하나인 Claims 기반 인가를 살펴보았다.

인증과 인가

먼저 인증(Authentication)과 인가(Authorization)의 차이를 다시 정리했다.

인증(Authentication)
→ "너 누구야?"

인가(Authorization)
→ "네가 이 작업을 할 수 있어?"

Deploy-gate에서 중요한 것은 두 번째인 인가다.

Deployer와 Claim

Deployer Entity를 살펴보면 사용자 이름과 여러 개의 Claim을 가지고 있다.

@ElementCollection(fetch = FetchType.EAGER)
private Set<String> claims = new HashSet<>();

Claim은 문자열 형태로 관리되며, 프로젝트에서는 Stack과 행동을 조합해 권한을 표현한다.

예를 들어,

stack:SmallAppStack:deploy
stack:ProdAlbStack:deploy
stack:ProdAlbStack:approve

와 같이 표현할 수 있다.

이를 통해 단순히 "배포자"라는 역할만 부여하는 것이 아니라,

어떤 Stack에
어떤 작업을
할 수 있는가

를 구체적으로 표현할 수 있다.

StackPolicy와 Claim

StackPolicy에는 다음과 같은 값이 존재한다.

stackName
requiredClaim
approvalLevel

예를 들어,

stackName = SmallAppStack
requiredClaim = stack:SmallAppStack:deploy
approvalLevel = NONE

이라면 해당 사용자가 stack:SmallAppStack:deploy Claim을 가지고 있는지를 확인하게 된다.

오늘 배운 점

이번 코드를 통해 권한을 단순한 Role이 아니라 작업 단위의 Claim으로 세분화할 수 있다는 것을 이해했다.

특히 배포 권한과 승인 권한을 별도의 Claim으로 관리하는 구조가 이후 승인 시스템과 연결된다는 점도 확인했다.

profile
github: @dlwldP

0개의 댓글