비슷해보이지만 다른 두 친구를 소개합니다. Authentication vs Authorization

내외부 관련된 서비스를 런칭하거나 기능을 추가할때 같이 논의되는 Auth에 대해 들어보셨을텐데요,
보통 Auth라고 하면 Authentication을 말하거나 Authentication + Authorization를 통칭합니다.
윗줄에 구분지어 분리를 해놓은 거 보니 다른 것 같긴한데 과연 무엇이 어떻게 다를까요?

각각을 한 단어로 바꿔 표현해보겠습니다.

  • Authentication : 로그인
  • Authorization : 권한

한 단어로 표현하니 확실히 더 쉽게 이해가 됩니다. 웹앱의 관점에서 볼 때 Authentication(인증)은 로그인 자격 증명을 확인하여 로그인 한 사용자를 인식하는 것이며, Authorization(권한 부여)는 액세스 제어로 사용자가 읽기, 수정, 삭제를 허용하는지 여부를 확인하는 것입니다. 권한 부여는 사용자의 신원이 성공적으로 인증 된 후에 발생합니다.  그럼 인증과 권한 부여, 이 둘에 대해 좀 더 자세히 살펴보겠습니다.

Authentication / 인증

  • 로그인과 같이 사용자 또는 프로세스의 신원을 확인하는 프로세스
  • 인증에 사용하기 위해 제공하는 데이터(자격 증명)는 이미 저장된 데이터와 비교함
  • 이 데이터는 인증 서버에 저장되며, 가장 일반적인 인증 방법은 비밀번호를 사용하는 것
  • 인증에서는 비밀번호 기반 인증, SSO, API 인증, Barcode 인증, 생체 인증 등이 있음
  • 줄여서 AuthN이라고도 함

Authentication Factors

Factor의 구분설명예시
지식기반사용자만 알고 있는 것패스워드, 이름, 주민번호, 사번 등
소유기반사용만 소유하고 있는 것인증서, OTP, 휴대폰 SMS인증, USB토큰 등
속성기반생체기반으로 사용자만의 고유 속성지문, 홍채, 정맥, 얼굴, 행동양식 등
  • One Factor 인증 : 위 3가지 인증 요소 중 1가지만으로 인증
  • Two Factor 인증 : 위 3가지 인증 요소 중 2가지의 인증 조합
  • 동일 factor의 두 가지 인증은 Two Factor 인증이 아님

MFA

Authentication Techniques

  • 비밀번호 기반 인증

    • 사용자의 신원을 확인하기 위해 비밀번호가 필요
    • 사용자는 먼저 이메일 주소 및 비밀번호와 같은 필요한 세부 사항을 제공하여 계정을 작성한 뒤 액세스
  • 비밀번호없는 인증

    • 사용자는 매직 링크 또는 이메일 또는 문자 메시지를 통해 전달 된 OTP를 통해 로그인
  • 2FA(Two Factor Authentication) / MFA(Multi Factor Authentication)

    • 2 단계 또는 다중 요소 인증을 사용하여 추가 보안 계층을 강화 및 유연한 인증
  • Single Sign On

    • SSO를 통해 사용자는 단일 자격 증명 세트로 여러 응용 프로그램에 액세스 할 수 있음
    • 한 번의 시스템 인증을 통해 다양한 정보시스템에 재인증없이 접근할 수 있도록 개발된 방식
  • Social Authentication

    • 소셜 네트워킹 플랫폼의 기존 자격 증명으로 확인하고 인증
    • 이 방법은 Facebook, Twitter, Google 등과 같은 소셜 네트워킹 플랫폼의 기존 자격 증명을 사용하여 사용자를 식별함
  • API Authentication

    • API 인증은 서버에서 서비스에 액세스하려는 사용자 식별을 인증하는 프로세스
    • API Key / Token
  • 생체인증

    • 신원을 확인하기 위해 개인의 독특한 생물학적 특징의 사용을 포함
    • 사용자의 생체 데이터가 캡처되어 데이터베이스에 저장된 후 사용자 인증을 확인하기 위해 비교
    • 홍채, 지문, 얼굴, 행동 인식등이 있음

AuthN vs AuthZ

Authorization / 권한부여

  • 권한부여는 누가 무엇을 할 수 있는지 결정하는 규칙
    • 파일, 데이터 등과 같은 시스템 리소스에 대한 액세스 수준을 결정하는 데 사용되는 보안 메커니즘
    • 예로 DBA는 데이터베이스 작성 및 삭제 권한이있는 반면 Software Engineer는 읽기 및 쓰기 권한만 주어짐
  • 기본적으로 개인에게 조직의 기밀 리소스에 대한 부분 또는 전체 액세스 권한이 부여되는 프로세스
  • 기술에는 역할 기반 액세스 제어, JSON 웹 토큰, SAML, OpenID 권한 부여, 0Auth 등이 있음
  • 줄여서 AuthZ라고도 함

Authorization Techniques

  • API keys

    • 이 방법은 인증 및 권한 부여에도 사용됨
    • 사용자가 등록 중에 시스템에 대한 인증 된 액세스 권한을 얻으려고하면 API key를 생성 받아 사용함
    • API Key는 일반적으로 요청의 URL 또는 헤더에 포함하는 긴 문자열
    • API 키는 주로 API를 호출하는 사람을 식별하는 수단으로 사용
    • 이 방법은 AuthN 및 Authz 모두에서 사용
    • 시스템-시스템 및 사용자-시스템 권한 관리를 위해 RBAC ( 역할 기반 액세스 제어 )를 구현할 수 있음
  • HMAC (Hash-Based Message Authentication Code)

    • 암호화에서 HMAC은 암호화 해시 기능과 비밀 암호화 키를 포함하는 특정 유형의 메시지 인증 코드
    • 다른 MAC(Message Authentication Code)과 마찬가지로 데이터 무결성과 메시지의 신뢰성을 동시에 확인하는 데 사용될 수 있음
  • JWT / JSON Web Token

    • JWT는 당사자간에 안전하게 데이터를 전송하기위한 공개 표준이며 사용자는 공개 / 개인 키 쌍을 사용하여 권한을 부여받음
  • SAML / Security Assurance Markup Language

    • 디지털 서명 된 XML 문서를 통해 인증 정보를 교환하는 표준 싱글 사인온 형식 (SSO)
    • 서비스 공급자와 아이덴티티 공급자라는 두 엔터티 간의 XML 기반 인증 및 권한 부여 시스템
  • OpenID

    • 인증 서버의 인증을 기반으로 사용자 신원을 확인하게 Authentication에 더 가까움
    • 이를 통해 클라이언트는 Authorization Server의 인증을 기반으로 최종 사용자 ID를 확인할 수 있을뿐만 아니라
    • 최종 사용자에 대한 상호 운용 가능하고 REST와 유사한 기본 프로파일 정보를 얻을 수 있음
  • OAuth

    • 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용 접근 위임을 위한 개방형 표준
    • 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용

마무리

Auth란 무엇인지 이번 글을 통해 인증과 권한 부여 대해 그림이 그려봤고, 각 인증 방법들을 어떻게 사용햘 수 있을지 알아보았습니다.
그럼 요약 정리하면서 함께 읽으시면 도움 될 글들 소개하며 마무리하겠습니다.

항목AuthenticationAuthorization
정의사용자의 신원 확인액세스 권한 확인
목적자신이 누구인지 확인하도록 사용자를 확인사용자에게 특정 리소스에 대한 액세스 권한이 있는지 확인
방법사용자 이름, 망막 스캔, 얼굴 인식 등과 같은 요소를 통해 사용자를 식별미리 지정된 규칙을 통해 리소스에 엑세스 할 수 있는 사용자의 권한을 확인
순서AuthZ전에 수행AuthN 후에 수행

함께 읽으면 좋은 글들


Reference