사용자 지정 어셈블리에서 권한 어설션

기본적으로 사용자 지정 어셈블리 코드는 제한된 실행 권한 집합으로 실행됩니다. 경우에 따라 보안 시스템 내의 보호된 리소스(예: 파일 또는 레지스트리)에 대한 보안 호출을 만드는 사용자 지정 어셈블리를 구현하려고 할 수 있습니다. 이 작업을 수행하려면 다음 작업을 수행해야 합니다.

  1. 보안 호출을 위해 코드에 필요한 정확한 권한을 식별합니다. 이 메서드가 Microsoft .NET Framework 라이브러리의 일부인 경우 이 정보는 메서드 설명서에 포함되어 있습니다.

  2. 사용자 지정 어셈블리에 필요한 권한을 부여하기 위해 보고서 서버 정책 구성 파일을 수정합니다. 보안 정책 구성 파일에 대한 자세한 내용은 Reporting Services 보안 정책 파일 사용을 참조 하세요.

  3. 필요한 권한을 보안 호출이 이루어지는 메서드의 일부로 어설션합니다. 보고서 서버에서 호출되는 사용자 지정 어셈블리 코드는 기본적으로 실행 권한으로 실행되는 보고서 식 호스트 어셈블리의 일부이기 때문에 이 작업이 필요합니다. Execution 권한 집합을 통해 코드를 실행할 수 있지만 보호된 리소스는 사용할 수 없습니다.

  4. 강력한 이름으로 서명된 경우 사용자 지정 어셈블리 를 AllowPartiallyTrustedCallersAttribute 로 표시합니다. 사용자 지정 어셈블리는 기본적으로 FullTrust가 부여되지 않은 보고서 식 호스트 어셈블리의 일부인 보고서 식에서 호출되므로 "부분적으로 신뢰할 수 있는" 호출자이기 때문에 필요합니다. 자세한 내용은 강력한 이름의 사용자 지정 어셈블리 사용을 참조 하세요.

보안 호출 구현

정책 구성 파일을 수정하여 어셈블리별 권한을 부여할 수 있습니다. 예를 들어 통화 변환을 처리하기 위해 사용자 지정 어셈블리를 작성하는 경우 파일에서 현재 환율을 읽어야 할 수 있습니다. 속도 정보를 검색하려면 어셈블리에 대한 사용 권한 집합에 추가 보안 권한인 FileIOPermission을 추가해야 합니다. 정책 구성 파일에서 다음 추가 항목을 입력할 수 있습니다.

<PermissionSet class="NamedPermissionSet"  
   version="1"  
   Name="CurrencyRatesFilePermissionSet"  
   Description="A special permission set that grants read access to my currency rates file.">  
      <IPermission class="FileIOPermission"  
         version="1"  
         Read="C:\CurrencyRates.xml"/>  
      <IPermission class="SecurityPermission"  
         version="1"  
         Flags="Execution, Assertion"/>  
</PermissionSet>  

그런 다음 해당 권한 집합을 참조하는 코드 그룹을 추가합니다.

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="CurrencyRatesFilePermissionSet"  
   Name="MyNewCodeGroup"  
   Description="A special code group for my custom assembly.">  
   <IMembershipCondition class="UrlMembershipCondition"  
      version="1"  
      Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\MSSQL\Reporting Services\ReportServer\bin\CurrencyConversion.dll"/>  
</CodeGroup>  

코드가 적절한 권한을 획득하려면 사용자 지정 어셈블리 코드 내에서 사용 권한을 어설션해야 합니다. 예를 들어 XML 파일 C:\CurrencyRates.xml에 읽기 전용 액세스를 추가하려면 메서드에 다음 코드를 추가해야 합니다.

// C#  
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\CurrencyRates.xml");  
try  
{  
   permission.Assert();  
   // Load the XML currency rates file  
   XmlDocument doc = new XmlDocument();  
   doc.Load(@"C:\CurrencyRates.xml");  
...  

어설션을 메서드 특성으로 추가할 수도 있습니다.

[FileIOPermissionAttribute(SecurityAction.Assert, Read=@"C:\CurrencyRates.xml")]  

자세한 내용은 .NET Framework 개발자 가이드의 ".NET Framework 보안"을 참조하세요.

보고서에서 사용자 지정 어셈블리 사용