Share via


Visual Studio 디자인 타임의 웹 응용 프로그램 보안

Visual Studio에서 웹 응용 프로그램을 작성할 때는 배포 중 필요한 리소스 액세스와 관련하여 보안을 위한 요구 사항이 있습니다. 이러한 요구 사항은 응용 프로그램의 사용자에게 적용되는 것과 다릅니다. 디자인 타임의 보안 요구 사항에는 다음이 포함됩니다.

  • 작업 서버, 데이터베이스 서버 및 기타 응용 프로그램에 포함된 리소스에 액세스
  • 선택한 웹 액세스 방법(웹 서버에 데이터를 전송하는 방법)
  • 완전히 신뢰된 것처럼 코드 실행
  • 디버깅
  • 응용 프로그램 배포

배포 리소스 액세스

Visual Studio에서 웹 응용 프로그램을 작성하고 테스트하려면 IIS(인터넷 정보 서비스)를 실행하는 컴퓨터에 액세스해야 합니다. 이 서버를 개발 서버라고 하는데 응용 프로그램을 배포하는 프로덕션 서버와 상반된 개념입니다. 이 서버에서는 서버에 파일을 쓰고 실행하는 등 최소한의 권한이 필요합니다.

웹 서버는 개발을 위해 사용하는 서버와 같을 필요는 없습니다. 그러나 최소한 응용 프로그램의 디버깅 및 배포를 지원하는 Visual Studio의 서버 구성 요소는 반드시 설치해야 합니다.

디자인 타임의 리소스 액세스는 보통 Windows NT 인증을 사용하여 처리됩니다. 즉, 개발자는 네트워크 로그인 자격 증명을 사용하여 필요한 리소스에 액세스합니다. Visual Studio를 설치하면 서버에 VS Developers라는 그룹이 만들어집니다. 이 그룹에는 해당 컴퓨터에서 웹 프로젝트를 개발하는 데 필요한 모든 필요한 파일, 공유 및 IIS 사용 권한이 있습니다. 컴퓨터 관리자는 그룹의 사용자 지정 사용 권한을 더 구성할 수 있지만 필수 작업은 아닙니다. 개발자는 개별적으로 또는 개발자가 속한 다른 그룹의 구성원 자격으로 이 그룹의 구성원이어야 합니다. VS Developer 그룹에 부여된 특정 권한은 다음과 같습니다.

  • 웹 서버 컴퓨터에 있는 wwwroot 디렉터리에 액세스할 수 있는 권한

  • 웹 디렉터리에서의 파일 작성, 수정 및 실행 권한

  • 원격 웹 응용 프로그램을 디버깅할 수 있는 권한

    참고   개발자는 서버에 대해 관리자 권한이 없어도 개발 작업을 할 수 있습니다. 그러나 모든 개발자는 VS Developers 그룹에 속해 있어야 합니다. 개발자에게 불필요한 관리자 권한을 주면 네트워크의 보안성이 떨어질 수 있습니다.

응용 프로그램에서 다른 리소스에 대한 액세스가 필요하면 같은 방법으로 개별적으로 또는 그룹의 구성원으로서 이러한 리소스에 대한 액세스 권한을 작성해야 합니다. 예를 들면, SQL Server가 있습니다. 웹 응용 프로그램 개발자는 응용 프로그램에 필요한 데이터베이스 테이블을 읽고 업데이트할 수 있어야 합니다. 일부 시나리오에 따라 저장 프로시저를 서버에 쓰고 저장해야 할 수 있으며, 테이블을 추가, 변경 또는 삭제하는 권한이 필요할 수도 있습니다.

웹 액세스 방법

Visual Studio에서는 두 가지 방법으로 웹 응용 프로그램에 액세스할 수 있습니다.

  • Visual Studio가 Windows기반 파일 관리 명령을 사용하여 파일을 서버에 복사하는 파일 공유 액세스(UNC 액세스)를 사용합니다.
  • HTTP를 사용하여 파일을 전송하는 FrontPage Server Extensions 액세스를 사용합니다.

파일 공유 액세스를 사용하려면 웹 서버와 같은 도메인에 있어야 합니다. 즉, 네트워크에서만 파일 공유 액세스를 사용할 수 있다는 의미입니다.

반대로 FrontPage 액세스를 사용하면 방화벽이 HTTP 요청을 전달하는 동안 방화벽을 통해 응용 프로그램을 작성하고 관리할 수 있습니다. 따라서 인터넷을 통해 또는 HTTP 액세스를 원하는 경우 로컬 설정을 통해 작업할 수 있습니다.

두 가지 액세스 방법 모두 Visual Studio 서버 구성 요소, VS Developers 그룹 등으로 서버가 적절하게 구성되어 있어야 합니다. 마찬가지로 서버에서 파일을 작성하고 쓰고 실행할 수 있는 충분한 사용 권한이 필요합니다.

자세한 내용은 웹 액세스 방법을 참조하십시오.

완전히 신뢰된 것처럼 코드 실행

Visual Studio가 실행 중이면 디자인 타임에 디자이너에서 실행되는 사용자 코드가 항상 완전히 트러스트됩니다. 이는 코드가 더 제한된 보안을 통해 실행되는 환경으로 개발되더라도 적용됩니다. 이로 인해 고려해야 할 두 가지 문제가 있습니다.

  • 안전하지 않은 코드를 프로젝트로 가져와서 로컬 컴퓨터에 보안 위험성을 노출할 수 있습니다. Visual Studio는 완전히 트러스트된 모드에서 실행되므로 가져온 코드는 Visual Studio에서 사용 권한을 상속하고 안전하지 않은 코드는 안전한 코드처럼 실행됩니다. 이는 악의적인 사용자가 사용자 지정 컨트롤 등 코드에 나쁜 영향을 주는 부분을 만들어 가져오고 실행할 경우 문제가 됩니다. 따라서 코드를 프로젝트로 가져올 때는 세심한 주의가 필요합니다.
  • 코드가 다른 보안 컨텍스트에서 실행 중이므로 Visual Studio로 만든 응용 프로그램이 제대로 작동하지 않을 수 있습니다.
  • 자세한 내용은 코드 액세스 보안을 참조하십시오.

디버깅

웹 서버가 다른 원격 컴퓨터에 있는 경우 디버깅을 하려면 컴퓨터에서 실행 중인 프로세스에 연결할 수 있어야 합니다. 디버깅을 하려면 Administrator 권한으로 실행해야 합니다. 원격 컴퓨터를 디버깅하는 경우에는 작업 중인 컴퓨터와 원격 컴퓨터 모두에 대해 이러한 권한이 필요합니다.

Visual Studio를 설치하면 디버깅하는 데 필요한 사용 권한이 있는 Debugger Users 그룹이 만들어집니다. 개발자와 디버깅 사용자를 위한 별도의 그룹이 있는 경우 서버 관리자는 Visual Studio를 사용하는 모든 사용자가 아닌 특정 그룹에게만 디버깅에 필요한 사용 권한을 부여할 수 있습니다.

보안 정보   사용자가 Debugger Users 그룹의 구성원이 되면 사실상 관리 수준의 권한을 부여받게 됩니다. 이러한 수준의 권한을 가지면 안 되는 사용자는 이 그룹에 포함시키지 마십시오.

자세한 내용은 웹 응용 프로그램 디버깅 소개를 참조하십시오.

응용 프로그램 배포

응용 프로그램이 끝나면 프로덕션 서버에 배포할 수 있어야 합니다. 프로덕션 서버를 소유하고 있지 않은 경우에는 액세스 권한이 개발 서버보다 더 제한될 수 있습니다.

웹 응용 프로그램을 배포할 때 Visual Studio 개발 도구를 사용할 수 있습니다. 이 개발 유형을 사용하면 등록 및 구성을 포함하여 응용 프로그램의 전체 설치를 수행할 수 있습니다. 그러나 웹 서버를 호스팅하는 컴퓨터에 대해 관리 권한이 필요합니다.

또는 FrontPage Server Extensions가 프로덕션 서버에 설치된 경우 프로젝트 복사 명령을 통해 HTTP를 사용하여 배포할 수 있습니다. 이 배포 유형은 개발 기능은 더 적지만 방화벽을 통해 배포할 수 있습니다. 그러나 대상 서버에 대해 파일을 쓸 수 있는 충분한 사용 권한이 있어야 합니다.

웹 응용 프로그램 배포에 대한 자세한 내용은 웹 설치 프로젝트의 배포를 참조하십시오.

참고 항목

보안 모델 | 웹 프로젝트 소개 | 웹 프로젝트 사용 | 연습: 웹 솔루션 배포