목록 보기
Open Policy Agent(OPA)로 JIRA 권한 구현하기
백엔드

Open Policy Agent(OPA)로 JIRA 권한 구현하기

SK플래닛
SK플래닛
2024년 9월 26일

두줄요약

OPA로 JIRA 권한을 Rego 정책과 JSON 데이터로 구현하고, Spring Security와 연동해 백엔드 권한 체크를 구성했습니다. 쿠버네티스에서는 OPA를 사이드카로 배포해 지연을 줄였지만, 데이터 동기화 방안이 추가로 필요했습니다.

핵심 내용

  • OPA(Open Policy Agent)를 이용해 사내 JIRA 권한을 구현한 사례
  • JIRA의 프로젝트 롤, 그룹, 사용자, 퍼미션 데이터를 JSON 형태로 두고 Rego 정책으로 권한 판정
  • Spring Security의 PreAuthorize와 OPA data API를 연동해 백엔드에서 권한 체크
  • 쿠버네티스에서 백엔드와 OPA를 사이드카로 배포해 localhost 기반 권한 확인과 동시 스케일링 구성

구조와 흐름

  • 사용자 아이디, 그룹, 프로젝트 키, 퍼미션 키를 input으로 전달
  • Rego에서 사용자/그룹이 속한 롤과 grants를 교차 확인해 allow 여부 계산
  • OPA 정책 파일을 ConfigMap으로 마운트하고 /policies 경로로 서버 실행

선택 이유

  • Java로 직접 권한 테이블과 관계를 설계하는 부담 감소
  • 정책과 데이터를 메모리 기반으로 다뤄 빠른 동작 기대
  • 사이드카 구성으로 네트워크 지연 제거와 운영 단순화 기대

주의할 점

  • 데이터 변경 시 각 OPA 인스턴스에 정책/데이터 동기화 필요
  • 메시지 브로커나 OPAL 같은 동기화 수단 고려 필요

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...