사용자 지정 어셈블리에서 권한 어설션Asserting Permissions in Custom Assemblies

기본적으로 사용자 지정 어셈블리 코드는 제한 된으로 실행 실행 사용 권한 집합입니다.By default, custom assembly code runs with the limited Execution permission set. 경우에 따라 보안 시스템 내에서 보호된 리소스(파일, 레지스트리 등)에 대한 보안 호출을 하는 사용자 지정 어셈블리를 구현하고자 할 수 있습니다.In some cases, you may wish to implement a custom assembly that makes secured calls to protected resources within your security system (such as a file or the registry). 이렇게 하려면 다음 작업을 수행해야 합니다.In order to accomplish this, you must do the following:

  1. 코드에서 보안 호출을 하는 데 필요한 정확한 권한을 식별합니다.Identify the exact permissions that your code needs in order to make the secured call. 이 메서드는 일부의 경우는 MicrosoftMicrosoft .NET Framework.NET Framework 라이브러리에이 정보는 메서드 설명서에 포함 되어야 합니다.If this method is part of a MicrosoftMicrosoft .NET Framework.NET Framework library, this information should be included in the method documentation.

  2. 사용자 지정 어셈블리에 필요한 권한을 부여하기 위해 보고서 서버 정책 구성 파일을 수정합니다.Modify the report server policy configuration files in order to grant the custom assembly the required permissions. 보안 정책 구성 파일에 대 한 자세한 내용은 참조 를 사용 하 여 Reporting Services 보안 정책 파일합니다.For more information about the security policy configuration files, see Using Reporting Services Security Policy Files.

  3. 필요한 권한을 보안 호출이 이루어지는 메서드의 일부로 어설션합니다.Assert the required permissions as part of the method in which the secure call is made. 보고서 서버에서 호출 하는 사용자 지정 어셈블리 코드를 실행 하는 보고서 식 호스트 어셈블리의 일부인 때문에 이것이 필요 실행 기본적으로 사용 권한.This is required because the custom assembly code that is called by the report server is part of the report expression host assembly, which runs with Execution permission by default. 실행 사용 권한 집합을 사용 하면 코드를 실행 하려면 있지만 보호 된 리소스를 사용할 수는 없습니다.The Execution permission set enables code to run, but not to use protected resources.

  4. 사용 하 여 사용자 지정 어셈블리 표시 AllowPartiallyTrustedCallersAttribute 강력한 이름의 서명 된 경우.Mark the custom assembly with AllowPartiallyTrustedCallersAttribute if it is signed with a strong name. 사용자 지정 어셈블리는 기본적으로 부여 되지 않은 있는 보고서 식 호스트 어셈블리의 일부인 보고서 식에서 호출 되므로이 작업이 필요 FullTrust; "부분적으로 신뢰할 수 있는" 호출자 즉 합니다.This is required because custom assemblies are called from a report expression that is part of the report expression host assembly, which, by default, is not granted FullTrust; thus it is a "partially trusted" caller. 자세한 내용은 참조 이름의 사용자 지정 어셈블리합니다.For more information, see Using Strong-Named Custom Assemblies.

보안 호출 구현Implementing a Secure Call

정책 구성 파일을 수정하여 어셈블리별 권한을 부여할 수 있습니다.You can modify the policy configuration files to grant your assembly specific permissions. 예를 들어, 통화 변환을 처리하도록 사용자 지정 어셈블리를 작성하는 경우 파일에서 현재 통화 환율을 읽어야 합니다.For example, if you were writing a custom assembly to handle currency conversion, you might need to read the current currency exchange rates from a file. 환율 정보를 검색 하려면는 추가 보안 권한을 추가 해야 FileIOPermission, 권한 집합 어셈블리에 있습니다.To retrieve the rate information, you would need to add an additional security permission, FileIOPermission, to your permission set for the assembly. 정책 구성 파일에서 다음 추가 항목을 입력할 수 있습니다.You can make the following additional entry in the policy configuration file:

<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>  

그런 다음 해당 권한 집합을 참조하는 코드 그룹을 추가합니다.You then add a code group that references that permission set:

<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>  

코드에 올바른 권한이 부여되려면 사용자 지정 어셈블리 코드 내에서 권한을 어설션해야 합니다.In order for your code to acquire the appropriate permission, you must assert the permission within your custom assembly code. 예를 들어, XML 파일 C:\CurrencyRates.xml에 읽기 전용 액세스 권한을 추가하려면 다음 코드를 메서드에 추가해야 합니다.For example, if you want to add read-only access to an XML file, C:\CurrencyRates.xml, you must add the following code to your method:

// 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");  
...  

또한 어설션을 메서드 특성 형태로 추가할 수도 있습니다.You can also add the assertion as a method attribute:

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

자세한 내용은 .NET Framework 개발자 가이드의 ".NET Framework Security(.NET Framework 보안)"를 참조하십시오.For more information, see ".NET Framework Security" in the .NET Framework Developer's Guide.

관련 항목:See Also

보고서에서 사용자 지정 어셈블리 사용Using Custom Assemblies with Reports