[보안/백엔드] SSO, IdP, OIDC, SAML, oAuth ..등 인증 인가 관련 총정리 (2) - 인증(Authentication) vs 인가 (Authorization) + IAM

ChuYong·2023년 10월 16일
0

이름이 비슷해서 같은 뜻같아 보이지만 까고보면 전혀다른 개념인 인증 인가!
간단한 개념부터 실제 개념과 디테일을 짚어보아요

간단티비

간단하게 짚고 가면,
인증 = 로그인 과정, 인가 = 사이트 사용 과정
인데,

예를들어 지금 이 글이 써져있는 벨로그라는 사이트에 "로그인" 을 해야하죠?
저는 깃허브를 통해 SSO로 로그인하고있는데, 아무튼 이 로그인 과정이 "인증" 이에요.
근데, 이 글을 보고있는 여러분이 이 글을 "수정" 해도 될까요? 여러분 계정으로 로그인하더라도 제 글은
수정되면 안돼요. 물론 여러분이 벨로그 관리자여서, 글 수정 권한이 존재한다면 가능하겠죠! 이런 권한을 부여하는 행위를 "인가" 라고 해요


어렵티비

인증 (Authentication)

선택한 팩터를 가지고 "사용자" = "나" 임을 증명 (이를 자격증명 이라고 함)하면 엑세스를 허용해주는 과정을 "인증" 이라고 해요.

저번 게시글 SSO? IdP? MFA? OTP? 전반은 이 인증 절차에 필요한 개념들이에요. 간단하게 인증과 엮어서 정리해드리자면,

  • SSO: 여러 서비스들의 인증을 한곳에서 처리하도록 해주는 것
  • IdP: 실제 사용자 정보를 가지고 있고, 그 사용자 = 나 임을 인증해주는 인증 제공 기관
  • MFA: 여러 인증 방법(팩터) 를 통해 인증을 하도록 해 더 안전하게 인증하도록 하는 것
  • OTP: 인증 방법 (팩터) 중 하나로 가지고 있는 무언가를 통해 발급된 일회성 비밀번호로 인증 하도록 하는것

다음 회차에 나오겠지만, 이런 "인증"에 사용되는 매개체가 "ID토큰" 이에요.

일반적으로 인증 팩터들은 "사용자가 변경이 가능한" 값들이기에 (비밀번호든, OTP든..) 인증은 실제 개별 사용자가 "관리"할 수 있는 개념이에요.

인가 (Authorization)

위의 인증 과정 덕분에 "사용자" = "나" 임은 증명했는데, "내"가 "그 행위"를 해도 되는지 "권한을 부여하는 행위" 가 필요해요. 이를 "인가"라고 해요.

역시 다음 회차에 나오겠지만, 이런 "인가"에 사용되는 매개체가 "엑세스토큰" 이에요.

일반적으로 인가는 개별 사용자가 관리할 수 없어요. 대부분 관리자가 직접 권한을 부여해줘야해요. 물론 관리자가 "권한을 관리할 수 있는 권한" 같은걸 사용자에게 제공해줬다면, 개별 사용자도 자기 권한을 제어할 수 있겠죠.


IAM(Identity and Access Management)

대표적으로 위의 인증/인가를 관리하는 체계를 IAM(Identity and Access Management) 라고 해요. AWS 리소스에도 있죠? AWS IAM 이 실제 리소스 예시에요. IAM에서 Identity 부분이 위의 인증을 관리하는거고, Access 부분이 지금 이 인가를 관리하는거에요.

다뤄보신분들은 아시겠지만,
우선 IAM에서 계정을 생성할 수 있어요. 그 생성된 계정은 "인증" 절차에 사용됩니다.
IAM에서 생성된 계정에 권한을 부여할 수 있어요. 그 권한을 부여하는 과정이 "인가" 에요.

profile
백엔드 & 인프라 를 좋아하는 개발자에요

0개의 댓글

관련 채용 정보