Share via


ASP.NET 웹 사이트에 대한 액세스 제한

업데이트: 2007년 11월

일반적으로 응용 프로그램에 대한 액세스를 제한하는 과정은 응용 프로그램에서 사용자를 식별하는 방식인 인증 단계와 응용 프로그램에서 사용자의 권한을 식별하는 방식인 권한 부여 단계로 구분됩니다. 이 항목에서는 ASP.NET 웹 응용 프로그램의 인증 및 권한 부여에 대해 간략하게 설명합니다. 자세한 내용은 ASP.NET 웹 응용 프로그램 보안을 참조하십시오.

사용자 인증

ASP.NET 응용 프로그램에서는 사용자 인증을 위해 다양한 옵션을 제공합니다. 모든 사람이 볼 수 있는 읽기 전용 응용 프로그램의 경우 익명 인증을 사용합니다. 응용 프로그램에 대한 액세스를 제한하려면 특정한 인증 형식을 사용하여 사용자를 식별해야 합니다. ASP.NET 응용 프로그램에 대해 사용자를 인증할 경우에는 Windows 리소스에 액세스하는 데 사용되는 응용 프로그램 ID와 ASP.NET에 대해 사용자를 식별하는 데 사용되는 ASP.NET 사용자 ID를 고려해야 합니다.

ASP.NET 사용자 ID가 없어도 응용 프로그램을 실행할 수 있지만 Windows 응용 프로그램 ID는 항상 있어야 합니다. 응용 프로그램의 보안을 유지하려면 응용 프로그램의 Windows ID를 파일 및 데이터베이스 액세스와 같은 필수 리소스로 제한해야 합니다.

ASP.NET 응용 프로그램 ID

ASP.NET 페이지가 실행되는 경우 서버에는 ASP.NET 코드를 실행하는 프로세스에 대한 보안 컨텍스트 또는 ID가 있어야 합니다. 이 ID는 NTFS 파일 시스템을 사용하여 보호되는 파일 또는 네크워크 리소스처럼 Windows 통합 보안을 사용하여 리소스의 보안을 유지할 때 사용됩니다.

예를 들어 응용 프로그램의 App_Code 하위 디렉터리에 저장되어 있는 응용 프로그램 코드가 포함된 파일은 ASP.NET 응용 프로그램 ID를 통해서만 읽어야 합니다. 따라서 ASP.NET 응용 프로그램 ID에 읽기 권한만 포함되도록 App_Code 디렉터리의 파일에 대한 보안 설정을 제한할 수 있습니다. 또한 통합 보안을 사용하여 SQL Server에 연결할 경우에도 ASP.NET 응용 프로그램의 Windows ID를 사용할 수 있습니다. 자세한 내용은 ASP.NET 필수 ACL(액세스 제어 목록)방법: Windows 통합 보안을 사용한 SQL Server 액세스를 참조하십시오.

ASP.NET 응용 프로그램의 ID는 여러 가지 요인에 의해 결정됩니다. 기본적으로 ASP.NET 페이지는 웹 서버에서 ASP.NET 페이지를 처리하는 서비스의 Windows ID로 실행됩니다. Windows Server 2003을 실행하는 컴퓨터에서 이 ID는 ASP.NET 응용 프로그램이 포함된 응용 프로그램 풀의 ID입니다(기본적으로 NETWORK SERVICE 계정). Windows 2000 및 Windows XP Professional을 실행하는 컴퓨터에서는 .NET Framework가 설치될 때 만들어지는 로컬 ASPNET 계정입니다. 필요한 경우 이 ID를 다른 ID로 구성할 수 있습니다. 자세한 내용은 ASP.NET 프로세스 ID 구성을 참조하십시오.

system.web 구성 섹션의 identity 요소를 사용하면 ASP.NET 페이지가 실행되는 Windows ID를 수정할 수 있습니다. identity 요소는 ASP.NET에서 Windows 사용자 ID를 가장하도록 지정하는 데 사용할 수 있습니다. Windows ID를 가장하면 응용 프로그램의 ASP.NET 페이지가 해당 Windows ID로 실행됩니다. 가장할 사용자 이름과 암호를 지정할 수 있습니다. 또는 가장을 사용하도록 설정하여 IIS에서 지정한 익명 ID 또는 인증된 브라우저 ID(예: 익명 인증, Windows 통합(NTLM) 인증 등) 중 한 가지 방법으로 ASP.NET을 실행할 수 있습니다. 자세한 내용은 ASP.NET 가장을 참조하십시오.

Windows ID를 가장하는 경우 가장된 사용자 ID 대신 프로세스의 원래 ID로 되돌리는 코드를 실행할 수 있습니다. 이러한 이유로 한 응용 프로그램을 다른 응용 프로그램과 구분해야 하는 환경의 경우 Windows Server 2003을 실행하는 컴퓨터에서 응용 프로그램을 별도의 응용 프로그램 풀에 격리해야 합니다. 각 응용 프로그램 풀은 고유한 Windows ID로 구성되어야 합니다.

다음 코드 예제와 같이 GetCurrent 메서드에서 반환하는 WindowsIdentityName 속성을 사용하면 ASP.NET 페이지가 실행되는 운영 체제 스레드의 Windows ID를 쉽게 확인할 수 있습니다.

<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>

ASP.NET 사용자

ASP.NET 사용자 ID는 ASP.NET 관련 리소스에 액세스하는 데 사용됩니다. 예를 들어 응용 프로그램에서 모든 사용자에게 제공되는 부분과 달리 특정 사용자만 액세스할 수 있는 부분을 식별할 수 있습니다.

ASP.NET 사용자는 응용 프로그램의 Web.config 파일에서 system.web 섹션의 authentication 요소에 의해 결정됩니다. 몇 가지 옵션을 사용하여 응용 프로그램의 ASP.NET ID를 인증할 수 있습니다. IIS에서 지정한 Windows 사용자 이름, ASP.NET 폼 인증, Passport 인증 또는 사용자 지정 인증 체계를 사용할 수 있습니다. 현재 HttpContextUser 속성을 사용하여 ASP.NET ID에 액세스할 수 있습니다. 자세한 내용은 ASP.NET 인증을 참조하십시오.

ASP.NET 폼 인증 또는 사용자 지정 인증 솔루션을 사용하여 ASP.NET ID를 제공하는 경우 ASP.NET 멤버 자격을 사용하여 사용자 데이터 저장소 및 사용자 관리 기능을 제공할 수 있습니다. 자세한 내용은 멤버 자격을 사용하여 사용자 관리를 참조하십시오.

사용자 권한 부여

권한 부여를 통해 사용자는 필요한 리소스에만 액세스할 수 있도록 제한됩니다. 예를 들면 필요한 파일, 데이터베이스 및 응용 프로그램 부분에만 액세스할 수 있도록 제한됩니다. 또한 코드 액세스 보안을 사용하여 코드에 대한 액세스도 제한합니다.

NTFS 액세스 제어 목록 및 FileAuthorizationModule을 사용하여 파일 액세스를 제한할 수 있습니다. 자세한 내용은 ASP.NET 권한 부여ASP.NET 필수 ACL(액세스 제어 목록)을 참조하십시오.

UrlAuthorizationModule 및 ASP.NET 역할 관리를 사용하여 응용 프로그램의 특정 부분에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 ASP.NET 권한 부여역할을 사용하여 권한 부여 관리을 참조하십시오.

참고 항목

개념

런타임에 웹 응용 프로그램 보안