Skip to content

authn과 authz

정보 보안에는 인증(Authentication, authn)와 인가(Authorization, authz)라는 개념이 있다. 간단히 말하자면 authn은 정체성 또는 그 유저가 누구인지와 관련있는 반면, authz는 권한 또는 누군가가 할 수 있는 것을 다룬다.

둘은 연관되어있지만 서로 다른 개념이고, 유저를 식별하고 접근을 관리하는(IAM)에서 중요한 요소이다.


Authentication(authn)이란?

authn은 사용자의 신원을 검증하는 행위로서 보안 프로세스에서 첫 번째 단계이며, 사용자 또는 장치가 누구인지(또는 무엇인지)를 확인하는 것을 의미한다. 신분을 확인함으로써 사용자가 합법적인지 확인하고자 하는 것이며, 잘못된 사람에게 정보가 노출되지 않도록 보장한다.

일반적인 authn 방법에는 아래와 같은 것들이 있다.

username, password 입력

  • 가장 일반적인 인증 방법 중 하나는 사용자에게 사용자 이름과 암호를 입력하도록 요청하는 것이다. 로그인 양식에 사용자 이름과 비밀번호를 입력하면, 서비스는 그러한 자격 증명을 확인하고, 사람을 유저로 인증하고, 그의 계정에 로그인할 수 있도록 한다.

다중 요소 인증(MFA)

  • 하지만 username과 password를 입력해 인증하는 방법의 단점은 비밀번호가 종종 악의적인 당사자에 의해 추측되거나 도용될 수 있다는 것이다.

  • 이떄. 인증의 추가 요소를 요구하면 사용자의 보안이 강화되며 이 개념을 MFA(다요소 인증)라고 한다. MFA를 사용할 때 공격자가 합법적인 사용자로 허위 인증하려면 암호 이상의 추가 인증절차가 필요하다.

  • MFA는 2요소 인증(2FA)으로 구현되는 경우가 가장 많다. 오늘날 많은 서비스들은 사용자들에게 그들이 발행된 토큰을 가지고 있다는 것을 증명하도록 요청함으로써 2FA를 구현한다. 토큰에는 SMS 또는 모바일 앱을 통해 사용자에게 전송되는 코드와 같은 “소프트” 토큰과 USB 키와 같은 “하드” 토큰의 두 가지 유형이 있다. 2FA 및 MFA는 지문, 홍채 인식 등 생체 인증 요소를 사용할 수도 있다.

공개 키 인증서

  • 공개 키 인증은 이러한 다른 형식의 인증보다 약간 더 복잡하지만 제대로 구현되면 더 안전할 수 있다. 공용 키 암호화를 사용하여 인증된 당사자가 올바른 개인 키를 가지고 있는지 확인하는 것이다.

  • 공개 키 인증의 가장 일반적인 용도는 웹 서버를 인증하는 데 사용되는 TLS(Transport Layer Security)이다. 사용자 장치는 HTTPS를 사용하는 웹 사이트를 로드할 때마다 이 유형의 인증을 수행한다.

  • 공개 키 인증은 또한 상호 인증을 위해 사용되는데, 이는 단지 클라이언트가 사용자를 인증하는 것이나 웹 서비스가 아닌 통신의 양쪽 모두가 서로를 인증할 때 사용된다. 사물인터넷(IoT) 장치와 API endpoint가 이러한 유형의 인증 방식을 쓰는 경우도 있다.

생체인증

  • 사람을 인증하는 데에만 사용할 수 있는 생체 인증은 알려진 신체적 특성의 데이터베이스와 대조하여 신체적 특성 중 하나를 확인함으로써 누군가의 신원을 확인하는 것을 얘기한다. 얼굴 인증, 지문 인증 등이 이러한 유형의 인증의 예이다.

Authorization(authz)이란?

authz는 인증된 사용자가 수행할 수 있는 작업을 결정한다. “권한”이라는 용어로 불리기도 한다.

소프트웨어를 개발하는 회사에서는 사용자의 작업을 허용하거나 차단하기 위해 일종의 권한 부여 솔루션을 사용한다. 이 솔루션은 일반적으로 사용자가 누구인지에 따라 허용하거나 차단할 작업을 파악한다. 이러한 이유로 인증은 권한 부여와 밀접하게 관련되어 있다.

사용자 권한을 결정하는 방법에는 아래와 같은 것들이 있다.

RBAC(role-based access control)

  • 모든 사용자에게 하나 이상의 미리 결정된 역할이 할당되고, 각 역할에 지정된 사용 권한 집합이 제공된다.
  • 다시 말해, 유저에게 일반 사용자, 관리자 등의 ROLE을 부여하여 각 ROLE의 접근 범위를 지정하는 것이다.

ABAC(Attribute-based Access Control)

  • 사용자가 자신의 속성 또는 수행하려는 작업의 속성을 기반으로 사용 권한을 할당 받는다.

RBAC(rule-based access control)

  • 역할에 관계없이 모든 사용자에게 적용되는 규칙 집합에 따라 허용되거나 거부된다.
  • 따로 유저면 권한을 나누지 않는 방식이다.

role-based access control와 rule-based access control는 약칭이 똑같다…


참고

https://www.cloudflare.com/ko-kr/learning/access-management/authn-vs-authz/