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

관계 튜플은 실제로는 이진 인코딩 되어 있음. 논문에선 텍스트 표현 기법으로 표현
튜플을 식별하는데 필요한 기본 키는 namespace, ojbect id, realtion 및 user
UserSet을 통해 ACL이 이 그룹을 참조할 수 있으므로 중첩된 그룹 멤버십을 나타낼 수 있음.

표 1은 몇 가지 예제 튜플과 해당 의미 체계를 보여줌
일부 관계는 접근 제어를 직접 정의하는 반면, 다른 관계는 객체 간의 추상적 관계만 정의
2.2 일관성 모델
ACL 검사는 예기치 않은 공유 동작을 방지하기 위해 사용자가 ACL 및 객체 내용을 수정하는 순서를 준수해야 함.
ACL 업데이트 순서 무시
오래된 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의 모든 작업에 대해서 현재 시행한 작업보다 더 낮은 타임 스탬프를 갖도록 한다. (개쩌네)
| [Serendi] Webhook (4) | 2025.08.25 |
|---|---|
| [Serendi] JWT 리팩토링 (0) | 2025.08.25 |
| [Serendi] 검색 엔진(추천시스템) 만들기 (5) | 2025.07.27 |
| [Redis] 바이트 반환 값 (1) | 2025.07.24 |
| [백엔드 논문] Zanzibar: Google's Consistent, Global Authorization System #1 (2) | 2025.07.23 |