보안 정책 이해Understanding Security Policies

보고서 서버에 의해 실행되는 모든 코드는 특정 코드 액세스 보안 정책의 일부여야 합니다.Any code that is executed by a report server must be part of a specific code access security policy. 이러한 보안 정책은 증명 정보를 일련의 명명된 권한 집합에 매핑하는 코드 그룹으로 구성됩니다.These security policies consist of code groups that map evidence to a set of named permission sets. 코드 그룹은 해당 그룹의 코드에 대해 허용 가능한 권한을 지정하는 명명된 권한 집합과 연결되어 있는 경우가 많습니다.Often, code groups are associated with a named permission set that specifies the allowable permissions for code in that group. 런타임은 신뢰할 수 있는 호스트 또는 로더가 제공하는 증명 정보를 사용하여 코드가 속하는 코드 그룹을 결정하고 이에 따라 코드에 부여할 권한을 결정합니다.The runtime uses evidence provided by a trusted host or by the loader to determine which code groups the code belongs to and, therefore, which permissions to grant the code. Reporting ServicesReporting Services에 정의 된 대로이 보안 정책 아키텍처를 따르는 MicrosoftMicrosoft .NET Framework.NET Framework 공용 언어 런타임 (CLR). adheres to this security policy architecture as defined by the MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR). 다음 섹션에서는 Reporting ServicesReporting Services의 다양한 코드 유형 및 이와 연결된 정책 규칙에 대해 설명합니다.The following sections describe the various types of code in Reporting ServicesReporting Services and the policy rules associated with them.

보고서 서버 어셈블리Report Server Assemblies

보고서 서버 어셈블리는 Reporting ServicesReporting Services 제품의 일부인 코드를 포함하는 어셈블리입니다.Report server assemblies are those that contain code that is part of the Reporting ServicesReporting Services product. Reporting ServicesReporting Services는 관리 코드 어셈블리를 사용하여 작성됩니다. 이러한 모든 어셈블리에는 강력한 이름이 지정(디지털로 서명)됩니다. is written using managed code assemblies; all of these assemblies are strong-named (that is, digitally signed). 이러한 어셈블리에 대 한 코드 그룹은 사용 하 여 정의 되는 StrongNameMembershipCondition, 어셈블리의 강력한 이름에 대 한 공개 키 정보를 기반으로 증명 정보를 제공 하는 합니다.The code groups for these assemblies are defined using the StrongNameMembershipCondition, which provides evidence based on public key information for the assembly's strong name. 코드 그룹에 부여 됩니다는 FullTrust 사용 권한 집합입니다.The code group is granted the FullTrust permission set.

보고서 서버 확장 프로그램(렌더링, 데이터, 배달 및 보안)Report Server Extensions (Rendering, Data, Delivery, and Security)

보고서 서버 확장 프로그램은 Reporting ServicesReporting Services의 기능을 확장하기 위해 만드는 사용자 지정 데이터, 배달, 렌더링 및 보안 확장 프로그램입니다.Report server extensions are custom data, delivery, rendering, and security extensions that you or other third-parties create in order to extend the functionality of Reporting ServicesReporting Services. 권한을 부여 해야 FullTrust 이러한와 연결 된 정책 구성 파일의 확장 프로그램 또는 어셈블리 코드는 Reporting ServicesReporting Services 확장 하는 구성 요소입니다.You must grant FullTrust to these extensions or assembly code in the policy configuration files associated with the Reporting ServicesReporting Services component you are extending. 확장의 일부로 제공 되는 Reporting ServicesReporting Services 보고서 서버는 공개 키로 서명 되 고 수신 된 FullTrust 사용 권한 집합입니다.Extensions shipped as a part of Reporting ServicesReporting Services are signed with the report server public key and receive the FullTrust permission set.

중요

수정 해야는 Reporting ServicesReporting Services 수 있도록 정책 구성 파일 FullTrust 모든 공급 업체 확장에 대 한 합니다.You must modify the Reporting ServicesReporting Services policy configuration files to allow FullTrust for any third-party extensions. 함께 코드 그룹을 추가 하지 않으면 FullTrust 사용자 지정 확장 프로그램에 대 한 보고서 서버에서 사용할 수 없습니다.If you do not add a code group with FullTrust for your custom extensions, they cannot be used by the report server.

정책 구성 파일에 대 한 자세한 내용은 Reporting ServicesReporting Services, 참조 를 사용 하 여 Reporting Services 보안 정책 파일합니다.For more information about the policy configuration files in Reporting ServicesReporting Services, see Using Reporting Services Security Policy Files.

보고서에 사용되는 식Expressions Used in Reports

보고서 식은 인라인 코드 식 또는 내에 포함 된 사용자 정의 메서드는 코드 보고서 정의 언어 파일의 요소입니다.Report expressions are inline code expressions or user-defined methods contained within the Code element of a report definition language file. 이러한 식에 부여 하는 코드 그룹이 정책 파일에 구성 된는 실행 권한이 기본적으로 설정 합니다.There is a code group that is already configured in the policy files that grants these expressions the Execution permission set by default. 코드 그룹은 다음과 같습니다.The code group looks like the following:

<CodeGroup  
   class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="Execution"  
   Name="Report_Expressions_Default_Permissions"  
   Description="This code group grants default permissions for code in report expressions and Code element. ">  
    <IMembershipCondition  
       class="StrongNameMembershipCondition"  
       version="1"  
       PublicKeyBlob="002400..."  
    />  
</CodeGroup>  

실행 권한이 있으면 코드를 실행할 수 있습니다 ()를 실행 하지 하려면 보호 된 리소스를 사용 하지만 합니다.Execution permission allows code to run (execute), but not to use protected resources. 보고서 내의 모든 식은 컴파일된 보고서의 일부로 저장되는 어셈블리("식 호스트" 어셈블리)로 컴파일됩니다.All expressions found within a report are compiled into an assembly (called an "expression host" assembly) that is stored as a part of the compiled report. 보고서가 실행되면 보고서 서버는 식 호스트 어셈블리를 로드하고 해당 어셈블리를 호출하여 식을 실행합니다.When the report is executed, the report server loads the expression host assembly and makes calls into that assembly to execute expressions. 식 호스트 어셈블리는 모든 식 호스트에 대한 코드 그룹을 정의하는 데 사용되는 특정 키로 서명됩니다.Expression host assemblies are signed with a specific key that is used to define the code group for all expression hosts.

보고서 식은 보고서 개체 모델 컬렉션(필드, 매개 변수 등)을 참조하고 산술 및 문자열 연산과 같은 간단한 태스크를 수행합니다.Report expressions reference report object model collections (fields, parameters, etc.) and perform simple tasks like arithmetic and string operations. 이러한 간단한 연산을 수행 하는 코드를 실행 하려면만 실행 권한.Code that performs these simple operations only requires Execution permission. 기본적으로 사용자 정의 메서드는 코드 요소와 모든 사용자 지정 어셈블리에 부여 된 실행 에서 권한을 Reporting ServicesReporting Services합니다.By default, user-defined methods in the Code element and any custom assemblies are granted Execution permission in Reporting ServicesReporting Services. 따라서 대부분의 식에서는 현재 구성에서 보안 정책 파일을 수정하지 않아도 됩니다.Thus, for most expressions, the current configuration does not require that you modify any security policy files. 식 호스트 어셈블리에 추가 권한을 부여하려면 관리자가 보고서 서버 및 보고서 디자이너의 정책 구성 파일을 수정하고 보고서 식 코드 그룹을 변경해야 합니다.To grant additional permissions to expression host assemblies, an administrator needs to modify the policy configuration files of the report server and Report Designer, and change the report expressions code group. 이는 전역 설정이므로 식 호스트에 대한 기본 권한을 변경하면 모든 보고서가 영향을 받습니다.Because it is a global setting, changing default permissions for the expression hosts affects all reports. 이러한 이유로 추가 보안이 필요한 모든 코드를 사용자 지정 어셈블리에 저장하는 것이 좋습니다.For this reason, it is highly recommended that you place all code that requires additional security into a custom assembly. 그러면 이 어셈블리에만 사용자에게 필요한 권한이 부여됩니다.Only this assembly will be granted the permissions you need.

중요

외부 어셈블리 또는 보호된 리소스를 호출하는 코드는 보고서에서 사용할 수 있도록 사용자 지정 어셈블리에 통합되어야 합니다.Code that calls external assemblies or protected resources should be incorporated into a custom assembly for use in reports. 이렇게 하면 코드에 의해 요청 및 어설션되는 권한을 보다 자세히 제어할 수 있습니다.Doing so gives you more control over the permissions requested and asserted by your code. 보안 내에서 메서드를 호출 하는 것은 코드 요소입니다.You should not make calls to secure methods within the Code element. 이렇게 하려면 권한을 부여 해야 FullTrust 보고서 식 호스트 및 모든 사용자 지정 코드 전체 CLR에 대 한 액세스 권한을 부여 합니다.Doing so requires you to grant FullTrust to the report expression host and grants all custom code full access to the CLR.

주의

부여 하지 마세요. FullTrust 보고서 식 호스트에 대 한 코드 그룹에 있습니다.Do not grant FullTrust to the code group for a report expression host. 이렇게 하면 모든 보고서 식이 보호된 시스템 호출을 수행할 수 있게 됩니다.If you do, you enable all report expressions to make protected system calls.

보고서에서 참조되는 사용자 지정 어셈블리Custom Assemblies Referenced in Reports

일부 보고서 식은 Reporting ServicesReporting Services에서 사용자 지정 어셈블리라고도 하는 타사 코드 어셈블리를 호출할 수 있습니다.Some report expressions can call third-party code assemblies, also known in Reporting ServicesReporting Services as custom assemblies. 보고서 서버에서는 이러한 어셈블리에 적어도 실행 정책 구성 파일에는 권한이 있습니다.The report server expects these assemblies to have at least Execution permission in the policy configuration files. 기본적으로 정책 파일 함께 제공 되 Reporting ServicesReporting Services 부여 실행 ' 내 컴퓨터 ' 영역에서 시작 하는 모든 어셈블리에 대 한 사용 권한.By default, policy files that ship with Reporting ServicesReporting Services grant Execution permission to all assemblies starting from the 'My Computer' zone. 필요에 따라 사용자 지정 어셈블리에 추가 권한을 부여할 수 있습니다.You can grant additional permissions to custom assemblies as needed.

보고서 식에서 특정 코드 권한이 필요한 작업을 수행해야 하는 경우도 있습니다.In some cases, you may need to perform an operation that requires specific code permissions in a report expression. 일반적으로 이는 보고서 식이 보안된 CLR 라이브러리 메서드(예: 파일 또는 시스템 레지스트리에 액세스하는 메서드)를 호출해야 함을 의미합니다.Typically, this means that a report expression needs to make a call to a secured CLR library method (such as one that accesses files or the system registry). 이러한 보안 호출을 실행하는 데 필요한 코드 권한은 .NET Framework.NET Framework 설명서에 나와 있습니다. 호출을 실행하려면 호출 코드에 이러한 특정 보안 권한을 부여해야 합니다.The .NET Framework.NET Framework documentation describes the code permissions that are required to make this secure call; to execute the call, the calling code must be granted these specific, secure permissions. 보고서 식에서 호출 하는 경우 또는 코드 요소인 식 호스트 어셈블리 부여 해야 적절 한 권한이 있습니다.If you make the call from a report expression or the Code element, the expression host assembly must be granted the appropriate permissions. 그러나 식 호스트에 권한을 부여하면 보고서의 모든 식에서 실행되는 모든 코드에 해당 권한이 부여됩니다.However, once you grant the expression host the permissions, all code that runs in any expression in any report is now granted that specific permission. 그러므로 사용자 지정 어셈블리에서 호출하여 해당 사용자 지정 어셈블리에 특정 권한을 부여하는 것이 훨씬 더 안전합니다.It is much more secure to make the call from a custom assembly and grant that custom assembly the specific permissions.

참고 항목See Also

Reporting Services의 코드 액세스 보안 Code Access Security in Reporting Services
개발 ( 보안 Reporting services)Secure Development (Reporting Services)