[Zanzibar] 구글의 100억개의 권한 관리

★개발일기★ ㅣ 2024. 1. 29. 11:09

반응형

 

구글의 서비스


구글은 많은 서비스를 제공하는데, 일부 서비스들 간의 연동을 매우 쉽게 해준다.
예를들면, G-mail 에서 구글드라이브에 있는 파일을 첨부한다던지, 구글 캘린더에서는 G-Meet 에 있는 데이터를 가져다 쓴다던지 할 수 있다.

뭐 이정도는 쉬울 것 같은데? 라고 생각할 수 있다.
왜냐하면 파일 첨부 버튼을 눌렀을 때, 내가 가진 구글 드라이브 목록 가져오는 API 를 호출하면 되지 않아? 
G-Meet 에 있는 내 데이터를 가져오는 API를 호출하면 되지 않아?
라고 말이다.

그럼 나의 업무 외의 팀인 구글 드라이브 팀, 혹은 구글 미트 팀과 협업을 통해 API 명세좀.. 을 통해
협업해야한다.

하지만, 서비스가 커질 경우 문서 소유권, 편집 등 권한 관리가 매우 힘들어진다.

 

구글이 선택한 Zanzibar service

구글이 운영하는 데이터들의 권한 정보를 저장하는 초대형 DB 를 만들고, 여기에 입출력 가능한 API 를 만들어 둔 것이다.
이렇게 해두면, 나의 업무 외의 팀인 구글 드라이브 팀, 혹은 구글 미트 팀과 협업을 진행하는 것이 아니라,
zanzibar 에 호출하면 되는 것이다.

zanzibar 에서는 relational tuple 으로 저장을 하는데, 
데이터이름 # 관계 @ 유저이름 형식이다.

예를들면, 구글드라이브에 user1 이 document1 을 소유하고 있다면,
- document:1 # 소유 @ user:1,
user2 는 조회 할 수 있다면
- document:1 # 조회 @ user:2,
그룹을 만들어 grup1 이 조회 할 수 있다면
- document:1 # 조회 @ ( group:1 # member ) 
         - group1 # member @ user: 1
         - group1 # member @ user: 2
이런식이다.

 

장점

- 권한관리가 매우 쉬워진다.

 

단점

- 권한이 바뀔 때 마다 zanzibar 에 반영 해줘야한다.

반응형