IT_Server/WINDOWS SERVER

ASP.NET과 IIS, 그리고 윈도우 2000의 보안 관계

JJun ™ 2006. 5. 14. 10:58
ASP.NET과 IIS, 그리고 윈도우 2000의 보안 관계


유경상(동양시스템즈, 마이크로소프트웨어) 09/10/2002
이번 컬럼에서는 ASP.NET의 보안 모델을 보다 깊고 심층적으로 분석해 보고자 한다. 이를 위해 윈도우 2000의 기본적인 보안에 대해 간단하게 언급하고 IIS 5.0 및 ASP의 보안 설정을 살펴볼 것이다. 그런 다음 ASP.NET의 보안 모델을 정리하고자 한다. 이 컬럼에서 다루는 보안은 암호화에 관련된 것이 아님을 밝히며 주로 인증과 권한에 대한 것임을 명시하는 바이다.

최근 빌 게이츠의 닷넷 관련 발언에 대해 파문이 일었었다. 빌 게이츠가 닷넷의 마이서비스 닷넷(My Service .NET)과 관련하여 보안 문제로 인해 고객들의 사용이 없었으며 이로 인해 닷넷 빌딩 블럭 서비스 중 하나로서 마이서비스 닷넷이 실패했다고 발언한 내용을 국내에서 빌 게이츠가 닷넷이 실패했다고 보도함으로써 일어난 에피소드이다. 빌 게이츠는 ‘닷넷 실패’와 더불어 보안에 대해 집중투자 하겠다는 의사를 밝혔으며 이 말은 조금씩 현실로 나타나고 있다.

필자가 항상 읽어보는 MSDN 매거진의 최신호는 몇몇 고정 컬럼을 제외하고는 모두 보안에 대해 다루고 있다. MSDN 온라인을 찾아봐도 보안 관련 글이 많이 눈에 띈다. 예전에는 찾기 어려웠던 CryptoAPI(암호화, 해시 관련 API)에 대한 글들도 이젠 어렵지 않게 찾을 수 있게 되었다. 본지 9월호의 New! About 코너에서도 보안에 대한 내용이 실렸으며, 이때 ASP.NET의 보안 모델과 CAS(Code Access Security)에 대해서도 언급이 되었다.

이번 컬럼에서는 지난 호에 소개된 ASP.NET의 보안 모델을 보다 깊고 심층적으로 분석해 보고자 한다. 이를 위해윈도우 2000의 기본적인 보안에 대해 언급하지 않을 수 없으므로 간단하게나마 몇 마디 하고난 후에 IIS 5.0 및 ASP의 보안 설정을 살펴볼 것이다. 그런 다음 ASP.NET의 보안 모델을 정리하고자 한다. 지난 호의 New! About과 중복되는 부분은 언급을 피할 것임을 미리 알려두는 바이다. 또한 이 컬럼에서 다루는 보안은 암호화에 관련된 것이 아님을 밝히며 주로 인증과 권한에 대한 것임을 명시하는 바이다. 독자들의 혼동이 없기를 바란다.

윈도우 2000과 IIS의 보안 상식
ASP나 ASP.NET의 보안을 이해하기 위해 필요한 윈도우 2000의 보안 상식 몇 가지를 알아보자. 윈도우 보안을 공부해 본 독자들은 알겠지만 대개 이 개념과 용어에 질려서 중도하차한 적이 몇 번 있을 것이다. 필자도 예외는 아니다. 따라서 이 컬럼에서는 꼭 필요한 개념만 몇 가지를 설명하겠다. 이와 더불어 대개 독자들이 혼동하거나 잘 이해하지 못하고 있는 IIS의 보안 설정 역시 몇 가지 알아보도록 한다.


액세스 토큰
액세스 토큰이라 함은 프로세스 혹은 쓰레드의 보안 문맥(security context)을 기술하는 윈도우의 커널 객체를 말한다. 사용자(사람)가 컴퓨터에 로그온할 때는 계정(account)을 사용하게 된다. 그리고 사용자가 어떤 프로그램을 수행시키면 프로그램은 그 사용자의 계정으로 작동하게 된다. 즉, joe라는 계정을 사용하는 사용자가 notepad.exe를 수행시켰다면 notepad.exe는 joe라는 계정에서 작동한다는 말이다. 이는 joe라는 계정이 갖는 각종 권한을 notepad.exe도 갖는다는 말과 같다. 이때 notepad.exe 프로세스가 어떤 계정에서 수행중이며 어떤 특권을 갖고 있는지, 그리고 특별한 권한 명세가 없을 때 사용되는 디폴트 액세스 권한은 어떤 것인지에 대한 정보를 가지고 있는 것이 바로 액세스 토큰이다.

액세스 토큰은 보안 정보에 대한 일종의 포인터 성격이 강하다. 예를 들어, 현재 프로세스가 어떤 계정에서 수행되는지 알고 싶다면 가장 먼저 할 일은 액세스 토큰을 구하는 일이다. 그런 다음 액세스 토큰에 대한 SID를 구하고 SID로부터 계정 이름을 알아내면 된다. <화면 1>은 윈도우 닷넷 서버의 작업 관리자를 보여주고 있다. 이 화면에서 각 프로세스가 어떤 계정에서 작동하는가를 파악할 수 있다.