Design Identity and Access Management System

想问下老师这个题目的重点应该放在哪里 谢谢

IAM 系统有很多部分,是比较复杂的系统,能否给个具体的需求?

  1. 判断user A可否在server X里做Action S。
  2. 管理permission。
  3. User可以属于多个group。
    这个是Stripe的面经

然后如果一个公司之前没有这种系统,现在你做出来了,为什么让别的team/service去adopt你的新系统,不是很清楚这一问怎么回答好,之前面logging system也被问过这个问题

那主要是设计数据库里的表,用 SQL 数据库,有一张表存 user ↔ group 对应,一张表存 action ↔ 有权限的用户+有权限的群组。

然后如果一个公司之前没有这种系统,现在你做出来了,为什么让别的team/service去adopt你的新系统,不是很清楚这一问怎么回答好,之前面logging system也被问过这个问题

这个系统复用性很好,别人不需要 reinvent the wheel。可以跟其他组沟通看他们的需要是什么,在系统中可以添加支持。主要出发点是为了对方省时间,而不是抢 scope.

谢谢老师 retrieve 权限 有什么best practice吗 一般是用lib还是service呢,是real time call还是一半会有个client side cache?

我觉得应该是 service real time call + client side cache.

IAM 很复杂的。 看看Google的 Zanzibar: Zanzibar: Google’s Consistent, Global Authorization System – Google Research

也有OpenSource版本的 Zanzibar