SQL Server, Internet Information Server 및 ASP.NET 엔진은 모두 함께 잘 작동하는 견고한 보안 모델을 제공합니다. 사용자 데이터와 응용 프로그램을 안전하게 유지하기 위해 Microsoft는 각 서비스의 기본 설정을 상당히 낮은 값으로 설정합니다.
대부분의 개발자가 직면한 과제는 SQL Server, IIS 및 ASP.NET을 사용하여 다른 사람이 쉽게 손상시킬 수 있는 보안 허점을 남기지 않고 응용 프로그램과 데이터 간의 적절한 신뢰 수준을 설정하는 방법입니다. 세 가지 유형의 서비스(SQL Server, IIS 및 ASP.NET)가 관련되어 있으므로 솔루션의 보안을 보장하기 위해 수행해야 할 세 가지 주요 단계가 있습니다. 이 섹션에서는 웹 응용 프로그램에 대한 적절한 권한과 신뢰 수준을 설정하는 보다 일반적이고 안정적인 방법 중 하나에 대해 설명합니다.
DotNetKB 사용자 정의 IIS 사용자 계정 정의
웹 응용 프로그램을 보호하는 가장 안전한 방법은 제한된 권한을 가진 사용자 지정 사용자를 정의한 다음 웹 응용 프로그램을 실행할 때 IIS가 사용자 지정 사용자로 실행되도록 구성하는 것입니다. 이는 구현하기 매우 쉬우며 웹 응용 프로그램의 모든 방문자가 원하는 권한만 갖도록 보장합니다.
첫 번째 단계는 새 Windows 사용자(이 예에서는 DotNetKB라고 함)를 생성하고 강력한 암호를 설정한 다음 Windows 게스트 그룹(게스트 Windows 그룹)에 추가하는 것입니다. 또한 비밀번호가 만료되지 않고 사용자가 비밀번호를 변경할 수 없음 확인란이 선택되어 있는지 확인하세요. 이렇게 하면 IIS에서 웹 응용 프로그램을 실행할 때 ID로 사용할 수 있는 제한된 권한의 사용자가 생성됩니다(그림 1 참조).
그런 다음 Internet Information Server 관리자에게 전화하여 이 페이지를 호스팅하는 웹 응용 프로그램을 선택하십시오. 이 예에서는 이전에 생성된 테스트 페이지를 호스팅하는 웹 애플리케이션(DotNetKB_WebSite)을 선택할 수 있습니다. 트리 보기에서 웹 애플리케이션을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 속성...을 선택합니다. 그런 다음 디렉터리 보안을 선택하고 대화 상자의 익명 액세스 및 인증 제어 섹션에서 편집 버튼을 클릭합니다. 마지막으로 사용자 지정 사용자 이름(DotNetKB)을 입력하고 IIS에서 암호 제어 허용 확인란을 선택 취소한 다음 사용자 지정 사용자 계정의 암호를 입력합니다. 이 모든 작업을 완료한 후 확인 버튼을 클릭하여 변경 사항을 IIS 구성 데이터베이스에 저장합니다(그림 2 참조).
[컷 페이지]
이 시점에서 IIS는 제한된 권한을 가진 사용자 지정 계정으로 실행됩니다. 애플리케이션의 웹 페이지를 방문하는 모든 방문자는 이 사용자 정의 사용자로 실행되며 해당 사용자 정의 사용자에 대한 인증 권한만 갖게 됩니다.
DotNetKB 사용자 계정에 SQL Server에 액세스할 수 있는 권한을 부여합니다.
그런 다음 사용자 지정 사용자에게 데이터베이스(DotNetKB)에 액세스할 수 있는 적절한 권한을 부여해야 합니다. 이렇게 하려면 Microsoft SQL Server 엔터프라이즈 관리자를 사용하거나 사용자 정의 스크립트를 작성하여 해당 사용자를 생성하고 특정 개체에 대한 액세스 권한을 부여할 수 있습니다. 이 문서에서는 SQL Server 엔터프라이즈 관리자를 사용하여 이 작업을 수행하는 방법을 설명합니다.
참고: Visual Studio .NET 2003에는 SQL Server와 호환되는 강력한 통합 기능이 많이 있지만 Visual Studio .NET 2003 내에서 사용자 및 사용자 권한을 쉽게 관리할 수는 없습니다. 대규모 조직과 팀에서 이러한 고급 작업은 일반적으로 데이터베이스 관리자가 수행합니다. 따라서 SQL Server 엔터프라이즈 관리자를 시작한 후 아래 단계에 따라 사용자 지정 사용자(DotNetKB)를 데이터베이스에 추가할 수 있습니다.
·왼쪽 트리뷰에서 노드를 확장하면 DotNetKB 데이터베이스가 표시됩니다. 내 컴퓨터에서 트리 보기는 다음과 같이 구성됩니다. 콘솔 루트 SQL Server 그룹(LOCAL)(Windows NT) 데이터베이스 DotNetKB.
·그런 다음 데이터베이스 아래의 사용자 노드를 마우스 오른쪽 버튼으로 클릭하고 새 데이터베이스 사용자...(새 데이터베이스 사용자...)를 선택합니다. 데이터베이스 사용자 속성 - 새 사용자 대화 상자가 나타나면 로그인 이름 드롭다운 상자에서 (<새로 만들기>)를 선택합니다.
·SQL Server 로그인 속성 - 신규 로그인 대화 상자가 나타나면 일반 탭을 선택하고 이름 입력란에 DotNetKB를 입력합니다. Windows 인증 라디오 버튼이 선택되어 있는지 확인하고 도메인 드롭다운 상자에서 사용자 지정 사용자 계정이 있는 컴퓨터의 이름을 선택합니다. 그런 다음 데이터베이스 드롭다운 상자에서 DotNetKB를 선택합니다.
·이제 데이터베이스 탭을 선택하고 대화 상자 상단의 목록에서 DotNetKB 데이터베이스를 찾아 선택합니다. 그런 다음 대화 상자 하단의 목록에서 public 역할이 선택되어 있는지 확인하세요. 마지막으로 대화 상자 하단의 확인 버튼을 클릭하여 변경 사항을 저장합니다.
그런 다음 DotNetKB 데이터베이스의 모든 저장 프로시저와 사용자 지정 함수에 실행 권한을 추가해야 합니다. 이렇게 하려면 public 역할에 권한만 부여하면 됩니다. DotNetKB 사용자에게 권한을 부여할 수 있습니다. 이렇게 하면 향후 로그인(이 사용자가 DotNetKB에 대한 액세스 권한을 얻을 때)이 각 사용자에게 새 권한을 추가할 필요 없이 저장 프로시저를 더 쉽게 실행할 수 있습니다.
다음은 DotNetKB 데이터베이스의 저장 프로시저 및 함수에 실행 권한을 부여하는 단계입니다.
·트리 보기에서 DotNetKB 데이터베이스 아래의 사용자 노드를 강조 표시하여 이 데이터베이스에 대한 사용자 목록을 표시합니다. DotNetKB 사용자를 찾아 두 번 클릭하여 데이터베이스 사용자 속성 대화 상자를 엽니다.
· 공용 역할이 강조 표시된(선택된) 상태에서 속성... 버튼을 클릭하여 데이터베이스 역할 속성 대화 상자를 엽니다. 그런 다음 권한... 버튼을 클릭하여 데이터베이스 개체 및 권한 설정 목록을 표시합니다.
대화 상자 상단의 데이터베이스 역할 드롭다운 목록에서 공용 역할을 선택한 상태에서 이 데이터베이스에 대해 정의된 모든 저장 프로시저와 사용자 지정 함수를 찾고(전체 이름을 보려면 대화 상자를 확장해야 할 수도 있음) 확인합니다. 각 항목 옆에 있는 EXECUTE 확인란을 선택합니다. 일부 시스템 개체에는 다른 확인란이 선택되어 있을 수 있습니다. 이러한 옵션을 변경하지 마십시오.
·마지막으로 모든 EXECUTE 권한을 설정한 후 확인 버튼을 클릭하여 변경 사항을 저장하고 대화 상자를 닫습니다. 모든 대화 상자가 닫힐 때까지 확인 버튼을 차례로 클릭합니다.
이제 IIS용 사용자 지정 사용자를 만들고 SQL Server에서 사용자의 해당 권한을 설정했습니다. 이제 ASP.NET이 SQL Server에 대한 모든 호출에 동일한 사용자 계정을 사용하도록 ASP.NET 웹 프로젝트에서 구성을 변경해야 합니다.
DotNetKB 사용자를 가장하도록 ASP.NET 애플리케이션 설정
IIS에서 실행되는 ASP.NET 웹 응용 프로그램에 대한 견고하고 안정적인 구성을 생성하는 마지막 단계는 ASP.NET 웹 응용 프로그램이 IIS에서 Windows 사용자 ID를 허용하고 다른 운영 체제 리소스에 액세스하는 데 사용할 수 있도록 구성하는 것입니다. . 이렇게 하려면 루트 web.config 파일에 코드 한 줄만 입력하면 됩니다.
수정된 web.config 파일은 다음과 같습니다.
<구성>
<시스템.웹>
...다른 요소들...
<identity impersonate="true"/> <!-- IIS 사용자 ID로 가정-->
...다른 요소들...
</system.web>
</구성>
요소를 추가하고 mock 속성을 true로 설정하면 됩니다. 사용자 계정이나 암호는 IIS에서 제공되므로 입력할 필요가 없습니다. 즉, 다른 사람이 구성 파일을 읽을 수 있더라도 웹 애플리케이션을 실행하는 데 사용되는 ID 자격 증명을 확인할 수는 없습니다.
이제 사용자 지정 사용자를 생성하고 SQL Server 및 IIS에 액세스할 수 있는 적절한 권한을 설정했습니다.
이 시점에서 IIS는 제한된 권한을 가진 사용자 지정 계정으로 실행됩니다. 애플리케이션의 웹 페이지를 방문하는 모든 방문자는 이 사용자 정의 사용자로 실행되며 해당 사용자 정의 사용자에 대한 인증 권한만 갖게 됩니다.
DotNetKB 사용자 계정에 SQL Server에 액세스할 수 있는 권한을 부여합니다.
그런 다음 사용자 지정 사용자에게 데이터베이스(DotNetKB)에 액세스할 수 있는 적절한 권한을 부여해야 합니다. 이렇게 하려면 Microsoft SQL Server 엔터프라이즈 관리자를 사용하거나 사용자 정의 스크립트를 작성하여 해당 사용자를 생성하고 특정 개체에 대한 액세스 권한을 부여할 수 있습니다. 이 문서에서는 SQL Server 엔터프라이즈 관리자를 사용하여 이 작업을 수행하는 방법을 설명합니다.
참고: Visual Studio .NET 2003에는 SQL Server와 호환되는 강력한 통합 기능이 많이 있지만 Visual Studio .NET 2003 내에서 사용자 및 사용자 권한을 쉽게 관리할 수는 없습니다. 대규모 조직과 팀에서 이러한 고급 작업은 일반적으로 데이터베이스 관리자가 수행합니다. 따라서 SQL Server 엔터프라이즈 관리자를 시작한 후 아래 단계에 따라 사용자 지정 사용자(DotNetKB)를 데이터베이스에 추가할 수 있습니다.
·왼쪽 트리뷰에서 노드를 확장하면 DotNetKB 데이터베이스가 표시됩니다. 내 컴퓨터에서 트리 보기는 다음과 같이 구성됩니다. 콘솔 루트 SQL Server 그룹(LOCAL)(Windows NT) 데이터베이스 DotNetKB.
·그런 다음 데이터베이스 아래의 사용자 노드를 마우스 오른쪽 버튼으로 클릭하고 새 데이터베이스 사용자...(새 데이터베이스 사용자...)를 선택합니다. 데이터베이스 사용자 속성 - 새 사용자 대화 상자가 나타나면 로그인 이름 드롭다운 상자에서 (<새로 만들기>)를 선택합니다.
·SQL Server 로그인 속성 - 신규 로그인 대화 상자가 나타나면 일반 탭을 선택하고 이름 입력란에 DotNetKB를 입력합니다. Windows 인증 라디오 버튼이 선택되어 있는지 확인하고 도메인 드롭다운 상자에서 사용자 지정 사용자 계정이 있는 컴퓨터의 이름을 선택합니다. 그런 다음 데이터베이스 드롭다운 상자에서 DotNetKB를 선택합니다.
·이제 데이터베이스 탭을 선택하고 대화 상자 상단의 목록에서 DotNetKB 데이터베이스를 찾아 선택합니다. 그런 다음 대화 상자 하단의 목록에서 public 역할이 선택되어 있는지 확인하세요. 마지막으로 대화 상자 하단의 확인 버튼을 클릭하여 변경 사항을 저장합니다.
그런 다음 DotNetKB 데이터베이스의 모든 저장 프로시저와 사용자 지정 함수에 실행 권한을 추가해야 합니다. 이렇게 하려면 public 역할에 권한만 부여하면 됩니다. DotNetKB 사용자에게 권한을 부여할 수 있습니다. 이렇게 하면 향후 로그인(이 사용자가 DotNetKB에 대한 액세스 권한을 얻을 때)이 각 사용자에게 새 권한을 추가할 필요 없이 저장 프로시저를 더 쉽게 실행할 수 있습니다.
다음은 DotNetKB 데이터베이스의 저장 프로시저 및 함수에 실행 권한을 부여하는 단계입니다.
·트리 보기에서 DotNetKB 데이터베이스 아래의 사용자 노드를 강조 표시하여 이 데이터베이스에 대한 사용자 목록을 표시합니다. DotNetKB 사용자를 찾아 두 번 클릭하여 데이터베이스 사용자 속성 대화 상자를 엽니다.
· 공용 역할이 강조 표시된(선택된) 상태에서 속성... 버튼을 클릭하여 데이터베이스 역할 속성 대화 상자를 엽니다. 그런 다음 권한... 버튼을 클릭하여 데이터베이스 개체 및 권한 설정 목록을 표시합니다.
대화 상자 상단의 데이터베이스 역할 드롭다운 목록에서 공용 역할을 선택한 상태에서 이 데이터베이스에 대해 정의된 모든 저장 프로시저와 사용자 지정 함수를 찾고(전체 이름을 보려면 대화 상자를 확장해야 할 수도 있음) 확인합니다. 각 항목 옆에 있는 EXECUTE 확인란을 선택합니다. 일부 시스템 개체에는 다른 확인란이 선택되어 있을 수 있습니다. 이러한 옵션을 변경하지 마십시오.
·마지막으로 모든 EXECUTE 권한을 설정한 후 확인 버튼을 클릭하여 변경 사항을 저장하고 대화 상자를 닫습니다. 모든 대화 상자가 닫힐 때까지 확인 버튼을 차례로 클릭합니다.
이제 IIS용 사용자 지정 사용자를 만들고 SQL Server에서 사용자의 해당 권한을 설정했습니다. 이제 ASP.NET이 SQL Server에 대한 모든 호출에 동일한 사용자 계정을 사용하도록 ASP.NET 웹 프로젝트에서 구성을 변경해야 합니다.
DotNetKB 사용자를 가장하도록 ASP.NET 애플리케이션 설정
IIS에서 실행되는 ASP.NET 웹 응용 프로그램에 대한 견고하고 안정적인 구성을 생성하는 마지막 단계는 ASP.NET 웹 응용 프로그램이 IIS에서 Windows 사용자 ID를 허용하고 다른 운영 체제 리소스에 액세스하는 데 사용할 수 있도록 구성하는 것입니다. . 이렇게 하려면 루트 web.config 파일에 코드 한 줄만 입력하면 됩니다.
수정된 web.config 파일은 다음과 같습니다.
<구성>
<시스템.웹>
...다른 요소들...
<identity impersonate="true"/> <!-- IIS 사용자 ID로 가정-->
...다른 요소들...
</system.web>
</구성>
요소를 추가하고 mock 속성을 true로 설정하면 됩니다. 사용자 계정이나 암호는 IIS에서 제공되므로 입력할 필요가 없습니다. 즉, 다른 사람이 구성 파일을 읽을 수 있더라도 웹 애플리케이션을 실행하는 데 사용되는 ID 자격 증명을 확인할 수는 없습니다.
이제 사용자 지정 사용자를 생성하고 SQL Server 및 IIS에 액세스할 수 있는 적절한 권한을 설정했습니다.