상세 컨텐츠

본문 제목

[백엔드 논문] Zanzibar: Google's Consistent, Global Authorization System #2 (~2.3)

알고리즘, 백엔드/Serendi

by grizzly 2025. 7. 27. 10:52

본문

Relation Tuple

Zanzibar에서 ACL은 관계 튜플로 표현되는 객체 - 사용자 or 객체 - 객체 관계 모음

관계 튜플은 실제로는 이진 인코딩 되어 있음. 논문에선 텍스트 표현 기법으로 표현

튜플을 식별하는데 필요한 기본 키는 namespace, ojbect id, realtion 및 user

UserSet을 통해 ACL이 이 그룹을 참조할 수 있으므로 중첩된 그룹 멤버십을 나타낼 수 있음.

표 1은 몇 가지 예제 튜플과 해당 의미 체계를 보여줌

일부 관계는 접근 제어를 직접 정의하는 반면, 다른 관계는 객체 간의 추상적 관계만 정의

 

2.2 일관성 모델

ACL 검사는 예기치 않은 공유 동작을 방지하기 위해 사용자가 ACL 및 객체 내용을 수정하는 순서를 준수해야 함.

 

ACL 업데이트 순서 무시

  1. Alice가 폴더의 ACL에서 Bob을 제거
  2. Alice는 Charlie에게 새 문서를 폴더로 이동하도록 요청 / 여기서 문서 ACL은 폴더 ACL에게 상속
  3. Bob은 새 문서를 볼 수 없어야 하지만, ACL 검사에서 두 ACL 변경 간의 순서를 무시하면 볼 수 있음.

 

오래된 ACL을 새 콘텐츠에 잘못 적용

  1. Alice가 문서의 ACL에서 Bob을 제거,
  2. Alice는 Charlie에게 문서에 새 콘텐츠를 추가하도록 요청
  3. Bob은 새 콘텐츠를 볼 수 없어야 하지만,
  4. ACL 검사가 Bob이 제거되기 전의 ACL로 평가되면 볼 수 있음

Zanzibar는 서로 다른 ACL 또는 객체에 대한 업데이트와 Zanzibar에 보이지 않는 채널을 통해 조정된 업데이트를 포함하여 ACL과 콘텐츠 업데이트 간의 인과적 순서를 이해해야함.

 

외부 일관성을 통해 Zanzibar는 각 ACL 또는 콘텐츠 업데이트에 타임 스탬프를 할당 가능함.

인과적 순서를 반영하는 타임스탬프가 할당된다.

인과적으로 의미 있는 타임 스탬프를 사용하면 타임스탬프 T에서 ACL 데이터베이스 스냅샷 읽기는 타임스탬프 T의 모든 업데이트를 관찰하여 ACL 업데이트 간 순서를 관찰한다.

 

외부 일관성 및 부실성을 줄이는 스냅샷 읽기를 제공하기 위해 ACL을 Spanner 데이터베이스 시스템에 저장한다.

Spanner의 TrueTime 메커니즘은 각 ACL 쓰기에 마이크로초 단위의 타임스탬프를 할당하여 쓰기의 타임 스탬프가 쓰기 간의 인과적 순서를 반영하고 외부 일관성을 제공한다. 각 ACL 검사를 여러 데이터베이스 읽기에서 단일 스냅샷 타임 스탬프로 평가하여 검사 스냅샷까지의 모든 쓰기와 해당 쓰기만 ACL 검사에 표시 되도록 한다.

 

Zanzibar 클라이언트는 콘텐츠 수정이 저장되려고 할 때 Contentchange ACL 검사를 통해 각 콘텐츠 버전에 대한 불투명한 일관성 토큰인 zookie를 요청한다. Zanzibar는 zookie에 해당 글로벌 타임스탬프를 인코딩하고 이전의 모든 ACL 쓰기가 더 낮은 타임 스탬프를 갖도록 한다.

 

요약 : Zanzibar는 ACL의 일관성을 유지하기 위해 모든 작업에 대한 타임 스탬프를 유지한다. 그렇게 하여 권한이 필요한 작업이 시행 될 때 ACL의 모든 작업에 대해서 현재 시행한 작업보다 더 낮은 타임 스탬프를 갖도록 한다. (개쩌네)

관련글 더보기