상세 컨텐츠

본문 제목

[백엔드 논문] Zanzibar: Google's Consistent, Global Authorization System #1

알고리즘, 백엔드/Serendi

by grizzly 2025. 7. 23. 11:21

본문

코딩 애플 영상을 보던 중 구글은 어떻게 방대한 데이터 베이스에 대해서 빠르게 접근하고 구글 드라이브, 지메일 등의 여러 서비스의 접근 권한이나 이런 연산까지 순식간에 처리하고 우리에게 좋은 경험을 주는 지에 대한 영상을 만났다. 거기서 이런 방식을 쓴다 라는 느낌으로 가볍게 논문에 대한 언급이 나와서 실제로 어떤 논문인 지 궁금해져서 읽어봤다.

 

Abstract

  • 온라인 사용자가 디지털 객체에 접근 권한 있는지 확인하는 것은 중요
  • 접근 제어 목록을 저장하고 평가하기 위한 글로벌 시스템인 Zanzibar의 설계, 구현, 배포에 대해 제시
  • 캘린더, 클라우드, 드라이브 등 클라이언트 서비스들의 광범위한 접근 제어 정책을 표현하기 위하여 통일된 데이터 모델과 구성 언어를 제공
  • 사용자 작업의 인과적 순서에 따라 접근 제어 목록 및 객체 내용의 변경 속에서 외부 일관성을 제공
  • 3년간의 사용기간 동안 10밀리초 미만의 지연 시간과 가용성 99.999%를 유지

 

Introduction

  • 처음 나온 상황 : 사진 소유자가 일부 사진을 친구와 공유하는 동시에 다른 사진은 비공개로 유지할 수 있도록 해야한다.
  • 사용자가 사진을 볼 수 있도록 허용하기 이전, 사진이 해당 사용자와 공유 되었는 가를 확인해야 함.

본 논문에선 권한 부여 확인을 수행하는 시스템인 Zanzibar를 제시

구글의 많은 서비스 중 일부는 10억 명 이상의 사용자를 위한 수십억 개의 객체를 관리해야함.

이 상황에서 통합된 권한 부여 시스템은 개별된 시스템보다 중요한 이점을 제공함.

  • 일관된 의미 체계 및 사용자 경험을 확립하는데 도움
  • 애플리케이션 간 상호 운용이 더 쉬워짐
  • 애플리케이션 전반에서 작동하는 검색 인덱스를 구축 가능함.
  • 데이터 일관성 및 확장성과 관련한 고유한 문제를 해결하며, 엔지니어링 리소스 절약이 가능함.

Zanzibar 시스템의 목표

  • 정확성
  • 유연성
    • 사용자 중 개인과 엔터프라이즈 모두에게 필요한 풍부한 접근 제어 정책
  • 낮은 지연시간
    • Tail에서의 낮은 지연 시간은 수십 - 수백 건의 확인이 필요한 검색 결과를 제공하는데 중요
  • 높은 가용성
  • 대규모
    • 수십억 사용자가 공유하는 수십억 객체를 보호해야 함

이러한 목표 달성을 위해 설계한 복잡한 접근 제어 정책은 교차 및 합집합과 같은 집합 대수 연산자가 포함됨

예시) 애플리케이션은 문서에 대한 편집 권한을 부여 받은 사용자는 문서에 댓글을 달 수도 있지만, 모든 댓글 작성자에게 편집 권한이 부여되는 것은 아님.

 

런타임 시, Zanzibar는 클라이언트가 원격 프로시저 호출 인터페이스(RPC)를 통해 접근 제어 목록 (ACL)을 생성 수정 평가 할 수 있도록 함.

  • 간단 : ACL은 "사용자 U는 객체 O에 대해 관계 R을 가집니다." 의 형태를 가짐
  • 복잡 : ACL은 "사용자 집합 S는 객체 O에 대해 관계 R을 가집니다."의 형태를 가짐

여기서 S는 다른 객체 - 관계 쌍으로 지정

예시) 비디오 댓글을 달 수 잇는 사용자 집합은 특정 비디오에 대한 보기 권한을 부여 받은 사용자와 비디오 채널에 대한 보기 권한을 가진 사용자로 구성

 

그룹 멤버십은 객체가 그룹이고, 관계가 의미적으로 멤버와 동일한 ACL의 중요한 클래스

-> 이 부분이 처음에 무슨 말인지 이해가 안갔다. 찾아보니, ACL이 앞서 말한 접근 제어 목록인데 거기서 그룹이라는 것이 접근 제어 목록을 나누는 객체 기준이 됨. 그러면 그 안에 속한 멤버들은 그 객체 클래스와 동일한 제어를 받게 되는 의미. (상속 느낌)

그룹은 다른 그룹을 포함할 수 있음.

그러면 이 속에서 내제된 문제점이 보일 수 있는 부분 : 어떤 제어 목록에 대해서 추적을 한다고하면, 계속해서 중첩된 그룹을 따라 깊게 내려가야 할 수 있음.

 

이때의 권한 부여 확인은

  • 사용자 U가 객체 O에 대해 관계 R을 가집니까?

의 형태로 분산 서버 모음에서 시작된다.

 

이때 확인 요청이 Zanzibar로 간다면, 그룹이 개별 멤버와 다른 그룹을 모두 포함하는 경우와 같이 확인을 평가하는 작업이 여러 서버로 분산됨.

각 서버는 멤버십의 계층 구조를 재귀적으로 탐색하기 위해 다른 서버에 차례로 연결할 수 있음. (이 작업들이 어떻게 10밀리초?)

 

Zanzibar는 여러 차원에서 전역 규모 운영됨.

2조 개 이상의 ACL 저장, 초당 수백만 건의 권한 부여 확인 수행함.

ACL 데이터는 지리적 파티셔닝에 적합하지 않다. 모든 객체에 대한 권한 부여 확인은 전 세계 어디에서나 발생 가능함.

따라서 모든 ACL 데이터를 수십 개의 지리적 분산된 데이터 센터에 복제하고 전 세계 수천 대의 서버에 부하를 분산함. (이게 뭔)

 

Zanzibar는 상호 관련 두 가지 기능을 통해 전역적 일관성을 지원한다.

  • 기본 데이터 저장소에 ACL 변경 사항이 커밋되는 순서를 준수함.
  • 권한 부여 확인이 클라이언트가 지정한 변경 사항보다 오래되지 않은 ACL 데이터를 기반으로 하는지 확인 가능함.

일관성 프로토콜을 통해 대부분의 요청이 지역적으로 복제된 데이터로 처리 가능하며, 지역 간 왕복 필요가 없다.

Zanzibar는 일관성을 위해 정규화 형태로 데이터를 저장하며 최종 결과 및 중간 결과는 캐싱한다.

제한된 비정규화를 통해 헤징 요청 및 깊이 중첩된 집합에 대한 계산 최적화 기술을 적용한다.

 

관련글 더보기