본문 바로가기

IT 이야기/네트워크(Network)

AAA 인증,인가,어카운팅이란 무엇인가?

728x90
반응형



먼저 AAA라고 하면 인증(Authentication) 인가(Authorization) 어카운팅(Accounting) 을 뜻합니다.


보안의 한 방법이죠,



인증(Authentication)이라 함은 어떤 접근자가 올바른가 아닌가를 따지는겁니다. 

즉...올바른 사용자냐 아니냐를 따지는거죠.


인가(Authorization)는 위에서 사용자에 대한 인증을 마쳤다면, 그 사용자가 어느정도 레벨의 권한을 가지느냐를 따집니다.

만약 레벨 5의 권한을 가졌다면 그건 5에 해당하는 능력밖에 발휘하지 못하죠.


어카운팅(Accounting)은 위에서 인증받은 사용자가 무슨 동작을 하는지 기록하는겁니다. 

그래서 그걸 AAA서버로 보내죠.




조금   쉽게 생각해보죠.

온라인 게임 WOW을 예를 들어보죠. 우리가 맨 처음 로그인을 하죠?

그건 우리가 WOW의 유저가 맞느냐 아니냐를 따지는겁니다.

WOW 회원이 아닌데도 게임에 접근할 수는 없겠죠??

그래서 그부분은 인증입니다.



그래서 인증한 후 들어가고 나면, 우리는 유저의 권한을 부여 받습니다.

아이템을 가지려면 몬스터를 사냥해야하고...레벨을 올려야 합니다.

즉 운영자의 권한까진 부여받지 못합니다.

그런데 따지고 보면 운영자도 WOW서버에 접속할 땐 ID / Password를 쳐서 인증을 받지 않습니까?

우리도 마찬가지구요 근데 누구한텐 운영자 권한을 주고 누구한텐 고작 유저권한을 주고...

이렇게 권한에 대한 차등을 두는게 인가입니다.



어카운팅...우리가 몹을 잡고 혹은 로그아웃을 하고 등등...여러가지 우리가 하는 일들을 WOW 에서는 모두 기록하고 있죠?

몹을 몇마리잡고 경험치 어떻고 등등등...우리가 하는 여러 행동들을 적는것이 바로 어카운팅이죠.

적어서 어떤 로그만을 모으는 서버(ex)syslog Server)로 보내던가 WOW 서버에서 직접 관리하겠죠.



이들은 각각 독립적이면서도 밀접하게 관련되어 있답니다. 

독립적이라 함은 꼭 3개를 다 쓸 필요는 없다는 겁니다.



예를 들면 우리가 A 라는 서버에 접속을 하기 위해서는 그 바로 앞에 있는 B라는 라우터에게 ID/Password 인증을 받아야한다고 가정하죠.

그럴 경우 그 B라우터는 꼭 인가나 어카운팅을 구현할 필요는 없습니다.

하지만 웹 사이트...무슨 naver.com 이런데 접속할 경우 역시 인증(로그인)과 인가(레벨,권한) 그리고 어카운팅(로그인 기록, 글쓰기 기록 등등)이 모두 필요하다는 것을 알수 있죠







이쯤 하면 AAA가 뭔지 감이 오실겁니다.


AAA는 서버--클라이언트 구조를 가집니다



도데체 이게 뭐냐...라고 하실지 모르겠지만...

AAA서버는 위에서 말한 인증,인가,어카운팅의 역할을 전문적으로 해주는 서버입니다.


그러니까 WOW는 WOW 게임의 내용이 들어있는 WOW서버, AAA기능을 위한 AAA서버 이런식으로 연계되어 동작한다는거죠.


그럼 AAA클라이언트는 누굴까요? 와우 게임의 사용자일까요?? 


아니죠....위의 예에서 AAA클라이언트라 함은 AAA서버에게 서비스를 받는 녀석...

즉 WOW서버나 그 앞에 있는 어떤 보안 장비겠죠. 


그 장비는 고객이 ID/Password를 넣으면 그 ID/Password가 맞는것인지를 확인하기 위해 AAA서버에게 질의를 합니다. 


그러면 AAA는 어떤 대답을 내려주죠


그래서 AAA클라이언트AAA서버에게 서비스를 받는 어떤 장비가 되는것입니다. 



절대 최종단의 고객이 아닙니다.







그럼 약간만 디테일하게 들어가서 인증/인가/어카운팅이 어떤 메카니즘을 가졌는지 살짝 볼게요.




인증은 항상 이런 난제를 던져줍니다. 


'좀 더 강력한 인증방법 없냐~~'라구요 ID/password로 인증하는 방법은 이미 해킹에 약하다는게 입증되었죠. 


이런 인증 방법을 사용자가 아는 것을 이용한 인증 이라합니다. 


사용자 머릿속에 있는 요소를 끌어내 인증 수단으로 쓰는거죠. 



그래서 나온게 사용자가 가지고 있는 인증 입니다. 그건 카드(신용카드 체크카드 등)가 좋은 예겠네요.


사용자가 가진 유일한 물건을 통해 하는 인증입니다. 


이것은 위의 사용자가 아는 것을 이용한 인증법보다 강력합니다.


하지만 이런 인증방법도 카드를 도둑맞으면 말짱 도로묵입니다. 




그래서 요즘은 이런 방법들을 극복하기 위해 이중 인증(Two-Factor-Authentication)을 사용합니다. 


여러분의 카드를 잘 보세요


여러분만이 가진 유일한 물건 + 여러분만이 아는 내용을  바로 인증의 요소로 사용하고 있는거죠.


그리고 그밖에 지문인식, 홍채인식, 목소리 인식 등등의 방법도 나오게 되었죠. 이런걸 생체 인증이라고 합니다.





자..그럼 이제 인가를 볼까요?


위에서 생체인증이든 로그인이든 뭐든 해서 인증을 마친 사용자가 있다고 합시다.


이제 이넘한테는 권한을 주어야 합니다. 근데 그 권한은 마음대로 주는게 아니라 미리 정의가 되어 있습니다.


그 정의를 AV 라고 하는데요...남자분들 야한거 생각하지 마시구요;;ㅋ;;이때 AV라는 건 Attribute-Value의 약자입니다.


이게 미리 AAA서버 안에 저장이 되어 있다가, AAA 클라이언트들( 위에서 말했듯, AAA 서비스를 사용하는 장비들...


을 뜻합니다.)에게 AV 쌍을 돌려주는거죠. 


그러면 그것을 보고 장비는 각 사용자들에게 (인가) 권한을 부여하게 되는겁니다.





어카운팅...이건 위랑 반대입니다. 잘 생각해보세요. 인증이나 인가는 미리 정의된 목록이 있습니다. 


그 목록은 서버안에 고이 잘 모셔져 있죠. (인가의 경우)AV라는 쌍으루요. 그 목록을 만드는건 서버측입니다. 


하지만 어카운팅은???


어카운팅은 클라이언트쪽에서 만들어서 AAA서버에 보내주는 겁니다. 


그럼 서버는 그 기록들을 차곡 차곡 쌓아 나가는거죠.


그래서 어카운팅은 AV 쌍을 서버쪽으로 보내게 됩니다. 그래서 서버가 어카운팅 AV쌍을 수집하게 되죠.


이를 중앙집중방식이라고 하는데 뭐 외울필요 없이 이해하면 됩니다.^^






728x90
반응형