10일
12일
- IAM(authn/authz) 는 무엇을 제공 해야 하는가?
- authn
- 대상자가 누구인지 판단한다.
- 판단하는 방법은 다양할수 있다.
- ID/Password, o-auth, cert, token ….
- 단적으로는
who-am-i
api 를 제공한다.
func WhoAmI(req *http.Request) (*User, error)
- authz
- 대상자가 어떤 일을 할수 있는지 없는지 판단한다.
- 단적으로는
can-i
api 를 제공한다.
func Can(user *User, v Verb, resource any) (bool, error)
Can(user, verbs.Create, Comment{})
- 대상자가 어떤 그룹이나 role 에 속해있는지를 응답하고 Applicaiton에 알아서 하라고 한다면 좋은 authz system 이라 볼수 없다.
- authz이 application과 독립적으로 동작하려면 application layer 와는 구분이 되어야 한다.
- rbac/abac