pile·
백엔드·flexflex·

사람은 떠났는데 권한은 남았다

퇴사하거나 부서를 옮긴 사람의 권한이 남는 문제를, 지연을 0으로 만드는 대신 지연을 인정하고 추적 가능하게 만드는 쪽으로 푼 이야기다. HR 시스템이 쥔 관계 데이터와 인가 엔진 사이의 동기화 지연이 원인이며, ReBAC 과 기존 CDC 파이프라인 재활용으로 대응한다.

핵심 포인트
  • 문제는 권한 설계가 아니라 원천(HR·조직)과 판정 엔진 사이의 동기화 지연이다
  • 역할 목록 대신 관계로 인가를 표현하는 ReBAC 을 택하고 OpenFGA 로 튜플을 관리한다
  • 새 메시징을 만들지 않고 기존 Outbox → CDC/Debezium → Kafka 파이프라인에 인가 컨슈머를 붙였다
  • 지연을 방향별로 나눠 본다 — 권한이 더 남는 쪽은 보안 위험, 늦게 오는 쪽은 업무 불편으로 등급이 다르다
  • 캐시는 무효화 신호를 믿는 대신 이 답이 변경보다 최신인지를 매번 확인하는 방식으로 바꿨다
상세 정리
  • 사고 시나리오: 마케팅에서 개발로 옮긴 팀장이 옛 매니저 권한으로 마케팅 급여를 계속 볼 수 있는 상황이다
  • 원천 분산: 조직·구성원·HR·프로젝트 등 도메인 서비스가 각자 관계 데이터를 소유한다
  • 판정 분리: 인가 엔진은 그 관계를 튜플로 받아 저장하고 질의에 답하는 역할만 맡는다
  • 번역 계층: 인가 컨슈머가 구성원 배정됨 같은 도메인 이벤트를 어떤 관계가 생기고 사라졌는지로 옮긴다
  • 지연 관리: 허용 방향 불일치와 제한 방향 불일치를 구분해 데이터 민감도별로 감내 수준을 정하고 초·분 단위로 모니터링한다
  • 부분 실패: 조직 개편이면 수백 개 튜플이 한 번에 바뀌는데 일부만 성공하면 옛 권한이 남는다
  • 재시도 전략: 네트워크 장애 같은 단기 실패는 재시도로 흡수하고, 지속 실패용 재처리 경로는 개발 중이다
  • 재처리 안전성: 관계 갱신이 기존 튜플과 비교해 차이분만 처리하므로 같은 이벤트를 다시 흘려도 안전하다
  • 캐시 3단: 변경 직후에는 캐시를 우회하고, 안정 구간에서는 캐시를 쓰며, 급여처럼 민감한 데이터는 아예 캐시를 쓰지 않는다
  • 사후 추적: 완벽한 실시간 동기화를 포기한 대가로 튜플 생성·삭제를 시간순으로 남겨, 특정 시점에 누가 무엇에 접근 가능했는지 되짚을 수 있게 했다
  • 남은 과제: 감사 로그 영속화와 지속 실패 재처리 경로가 다음 작업이다
왜 읽나인가를 HR·조직 데이터와 연동해야 하는 팀에게, 동기화 지연을 없애려 애쓰는 대신 등급을 나눠 관리하는 현실적 설계를 보여준다.
flex
flex 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·twilio-engTwilio Engineering·

    Programmable Messaging에서 Verify API로 마이그레이션하기

    Twilio의 Programmable Messaging API로 자체 OTP 솔루션을 운영하던 서비스가 Verify API로 전환하는 방법을 코드 예시와 함께 설명한다. Verify는 OTP 전송·검증을 위한 전용 API로, 전화번호 구매, 토큰 생성, DB 저장·만료 관리를 내부에서 처리해 개발자가 직접 구현할 코드를 크게 줄인다.

    요약 이어보기
    #authentication#twilio#sms+2
  2. 백엔드·포스타입포스타입·

    포스타입이 개인화 추천을 하는 방법 2부

    포스타입 백엔드 엔지니어가 벡터 기반 개인화 추천 시스템을 실제 운영하며 맞닥뜨린 성능 장애와 용량 문제를 해결한 과정을 담은 2부다. 수백만 개의 벡터 KNN 검색이 피크 시간대에 전체 Elasticsearch 검색 성능을 흔드는 문제부터 클러스터 OOM 사태까지, 쿼리 최적화와 인프라 분리 두 가지 경로로 근본 해결에 이른다.

    요약 이어보기
    #elasticsearch#vector-search#recommendation-system+2
  3. 백엔드·포스타입포스타입·

    포스타입이 개인화 추천을 하는 방법 1부

    포스타입이 태그 기반 추천의 한계를 극복하고 벡터 임베딩 기반 개인화 추천 시스템을 구축한 과정을 담은 1부다. 유사한 콘텐츠가 다른 용어를 쓰거나 동일한 태그가 전혀 다른 톤의 콘텐츠를 가리키는 문제를 임베딩 벡터로 해결하고, OpenSearch의 HNSW ANN 검색으로 수백만 벡터를 실시간 검색하는 시스템을 구축해 구매율 15% 향상을 달성했다.

    요약 이어보기
    #opensearch#vector-search#recommendation-system+2