ASP.NET 신뢰 수준 및 정책 파일

Visual Studio 2010

업데이트: 2007년 11월

신뢰 수준은 사이트 수준 구성 파일(Web.config)에서만 사용할 수 있는 <securityPolicy> 구성 요소를 통해 정책 파일과 연결됩니다. 사용할 신뢰 수준 이름과 정책 파일을 지정하는 항목을 구성 섹션에 추가하여 신뢰 수준을 추가하거나 제거할 수 있습니다. 기본 신뢰 파일은 Aspnet_isapi.dll 파일이 포함된 폴더 아래에 있는 Config 디렉터리에 설치됩니다. 이 위치는 Machine.config 구성 파일과 런타임 보안 정책 파일에 사용되는 위치와 같습니다.

Full 신뢰 수준은 특수한 경우입니다. 이 수준은 정확히 로컬 컴퓨터 영역에서 완전한 신뢰 수준을 갖는다는 것을 의미하므로, ASP.NET 호스트는 이러한 응용 프로그램에 추가 정책을 적용하지 않습니다. 따라서 Full 신뢰 수준은 내부 처리기에 매핑되며 ASP.NET은 완전 신뢰 응용 프로그램의 응용 프로그램 도메인에 다른 정책을 추가하지 않습니다.

다음 예제에서는 여러 정책 파일에 신뢰 수준을 매핑하는 securityPolicy 구성 파일 섹션을 보여 줍니다.

<system.web>
    <securityPolicy>
    <trustLevel name="Full"    policyFile="internal"/>
    <trustLevel name="High"    policyFile="web_hightrust.config"/>
    <trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>
    <trustLevel name="Low"     policyFile="web_lowtrust.config"/>
    <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
    </securityPolicy>
</system.web>

응용 프로그램에서 응용 프로그램 고유의 신뢰 수준을 지정할 수 없게 하려면 <location> 지시문을 지정하고 allowOverride 특성을 false로 설정합니다. 여러 응용 프로그램을호스팅하고 호스팅된 응용 프로그램의 신뢰 수준을 제한해야 할 서버에서 이를 수행할 수도 있습니다.

정책 파일을 수정하거나 사용자 지정 권한 집합을 사용하여 새 정책 파일을 만들 수 있습니다. 예를 들어 다음 코드 예제와 같이 정책 파일의 SecurityClasses 섹션에 OleDbPermission 클래스를 추가하여 Web_hightrust.config 파일의 내용을 복사하고 OLEDB 연결을 만들 수 있는 권한을 할당할 수 있습니다.

<SecurityClass Name="OleDbPermission" 
    Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

그런 다음 지정된 OleDbPermission에 대해 OLEDB 연결 문자열의 제한 사항을 비롯한 매개 변수를 지정합니다. 다음으로 신뢰 정책 파일에서 이름이 ASP.NETPermissionSet 요소에 IPermission 요소를 추가함으로써 OleDbPermission 보안 클래스를 포함하는 권한 집합을 지정할 수 있습니다. 예를 들어 다음 코드 예제에서는 허용된 OLEDB 연결에만 Catalog.mdb Access 데이터베이스에 대한 무제한 액세스 권한이 부여되도록 지정합니다.

<PermissionSet
  class="NamedPermissionSet"
  version="1"
  Name="ASP.Net">
  <IPermission
    class="OleDbPermission"
    version="1"
    Unrestricted="true" />
</PermissionSet>

OleDbPermission 권한과 같은 일부 권한을 사용하면 부여되거나 거부되는 액세스 권한의 범위를 좁힐 수 있는 추가 제한 사항을 지정할 수 있습니다. 예를 들어 OleDbPermission 권한을 통해 OLE DB .NET Framework 데이터 공급자를 사용하여 연결할 수 있지만 허용되는 OLEDB 연결 문자열에는 제한 사항이 있는 액세스 권한을 부여할 수 있습니다. 다음 코드 예제에서는 허용된 OLEDB에서만 Access 데이터베이스에 연결할 수 있도록 지정합니다.

<IPermission class="OleDbPermission" version="1">
    <add ConnectionString=
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\access_data\catalog.mdb""
        KeyRestrictions=""data source=;user id=;password=;" 
        KeyRestrictionBehavior="AllowOnly"/>
</IPermission>

업데이트된 신뢰 정책 파일을 저장하고 현재 Web_hightrust.config 파일 대신 배치하거나, 새 신뢰 정책 파일을 만든 다음 이 파일을 High 신뢰 수준의 정책 파일로 지정하거나 다음 예제와 같이 새 신뢰 수준을 만들 수 있습니다.

    <trustLevel name="HighCustom"
    policyFile="web_highcustom.config"/>

기본 설정을 유지하기 위해 ASP.NET에는 신뢰 수준 설정이 포함된 각 파일의 복사본이 두 개 포함되어 있습니다. 한 파일은 앞에 나온 구성 섹션에서와 같이 .config 파일 이름 확장명을 사용하여 명명됩니다. .config 파일은 시스템에 사용되는 각 신뢰 수준에 대한 설정을 포함합니다. 다른 파일은 .config.default 파일 이름 확장명을 사용하여 명명되고 관련된 신뢰 수준에 대한 기본 설정을 포함합니다. 현재 신뢰 수준 설정이 수정된 경우 기본 설정을 복원하려면 .config 파일의 내용을 .config.default 파일의 내용으로 바꾸면 됩니다.

신뢰 정책 파일을 관리하는 데 대한 자세한 내용은 Patterns and Practices (PAG): Security Guidance for Applications에서 "How To: Use Medium Trust in ASP.NET 2.0"을 참조하십시오.

표시: