RDL 샌드박싱 설정 및 해제Enable and Disable RDL Sandboxing

RDL(Report Definition Language) 샌드박싱 기능을 사용하면 보고서 서버의 단일 웹 팜을 여러 명이 사용하는 환경에서 각 개인에 대해 특정 유형의 리소스 사용을 검색하고 제한할 수 있습니다.The RDL (Report Definition Language) Sandboxing feature lets you detect and restrict the usage of specific types of resources, by individual tenants, in an environment of multiple tenants that use a single web farm of report servers. 여러 명 그리고 경우에 따라 서로 다른 회사에서 사용할 수 있는 보고서 서버의 단일 웹 팜을 유지 관리하는 호스팅 서비스 시나리오를 예로 들 수 있습니다.An example of this is a hosting services scenario where you might maintain a single web farm of report servers that are used by multiple tenants, and perhaps different companies. 보고서 서버 관리자는 이 기능을 설정하여 다음과 같이 할 수 있습니다.As a report server administrator, you can enable this feature to help achieve the following objectives:

  • 외부 리소스 크기를 제한합니다.Restrict external resource sizes. 외부 리소스에는 이미지, .xslt 파일, 지도 데이터 등이 포함됩니다.External resources include images, .xslt files, and map data.

  • 보고서를 게시할 때 식 텍스트에 사용되는 형식 및 멤버를 제한합니다.At report publish time, limit types and members that are used in expression text.

  • 보고서를 처리할 때 식의 반환 값 크기와 텍스트 길이를 제한합니다.At report processing time, limit the length of the text and the size of the return value for expressions.

    RDL 샌드박싱 기능이 설정되면 다음 기능을 사용할 수 없습니다.When RDL Sandboxing is enabled, the following features are disabled:

  • 사용자 지정 코드는 <코드 > 보고서 정의의 요소입니다.Custom code in the <Code> element of a report definition.

  • SQL Server 2005 Reporting Services(SSRS)SQL Server 2005 Reporting Services (SSRS) 사용자 지정 보고서 항목을 위한 RDL 이전 버전 호환 모드RDL backward compatibility mode for SQL Server 2005 Reporting Services(SSRS)SQL Server 2005 Reporting Services (SSRS) custom report items.

  • 식의 명명된 매개 변수Named parameters in expressions.

    이 항목에는 각 요소에 설명 된 < RDLSandboxing> RSReportServer.Config 파일의 요소입니다.This topic describes each element in the <RDLSandboxing> element in the RSReportServer.Config file. 이 파일을 수정하는 방법은 Reporting Services 구성 파일 수정(RSreportserver.config)을 참조하세요.For more information about how to modify this file, see Modify a Reporting Services Configuration File (RSreportserver.config). 서버 추적 로그는 RDL 샌드박싱 기능과 관련된 작업을 기록합니다.A server trace log records activity related to the RDL Sandboxing feature. 추적 로그에 대한 자세한 내용은 보고서 서버 서비스 추적 로그를 참조하세요.For more information about trace logs, see Report Server Service Trace Log.

구성 예Example Configuration

다음 예제에서는 설정 및에 대 한 예제 값은 < RDLSandboxing> RSReportServer.Config 파일의 요소입니다.The following example shows the settings and example values for the <RDLSandboxing> element in the RSReportServer.Config file.

<RDLSandboxing>  
   <MaxExpressionLength>5000</MaxExpressionLength>  
   <MaxResourceSize>5000</MaxResourceSize>  
   <MaxStringResultLength>3000</MaxStringResultLength>  
   <MaxArrayResultLength>250</MaxArrayResultLength>  
   <Types>  
      <Allow Namespace=”System.Drawing” AllowNew=”True”>Bitmap</Allow>  
      <Allow Namespace=”TypeConverters.Custom” AllowNew=”True”>*</Allow>  
   </Types>  
   <Members>  
      <Deny>Format</Deny>  
      <Deny>StrDup</Deny>  
   </Members>  
</RDLSandboxing>  

Configuration 설정Configuration Settings

다음 표에서는 구성 설정 정보를 제공합니다.The following table provides information about configuration settings. 설정은 구성 파일에 나타나는 순서로 표시됩니다.Settings are presented in the order in which they appear in the configuration file.

설정Setting DescriptionDescription
MaxExpressionLengthMaxExpressionLength RDL 식에 허용되는 최대 문자 수입니다.Maximum number of characters allowed in RDL expressions.

기본값: 1000Default: 1000
MaxResourceSizeMaxResourceSize 외부 리소스에 허용되는 최대 크기(KB)입니다.Maximum number of KB allowed for an external resource.

기본값: 100Default: 100
MaxStringResultLengthMaxStringResultLength RDL 식의 반환 값에 허용되는 최대 문자 수입니다.Maximum number of characters allowed in a return value for an RDL expression.

기본값: 1000Default: 1000
MaxArrayResultLengthMaxArrayResultLength RDL 식의 배열 반환 값에 허용되는 최대 항목 수입니다.Maximum number of items allowed in an array return value for an RDL expression.

기본값: 100Default: 100
유형Types RDL 식 내에 허용할 멤버 목록입니다.The list of members to allow within RDL expressions.
AllowAllow RDL 식에 허용할 형식 또는 형식 집합입니다.A type or set of types to allow in RDL expressions.
네임스페이스Namespace Allow 의 특성이며, Value에 적용되는 하나 이상의 형식이 포함된 네임스페이스입니다.Attribute for Allow that is the namespace that contains one or more types that apply to Value. 이 속성은 대/소문자를 구분하지 않습니다.This property is case-insensitive.
AllowNewAllowNew 에 대 한 부울 특성 허용 형식의 새 인스턴스가 아니면 RDL RDL 식에 만들 수 수 있는지 여부를 제어 하는 <클래스 > 요소입니다.Boolean attribute for Allow that controls whether new instances of the type are allowed to be created in RDL expressions or in an RDL <Class> element.

참고: RDLSandboxing 을 사용하도록 설정하면 AllowNew설정에 관계없이 새 배열을 RDL 식에 만들 수 없습니다.Note: When RDLSandboxing is enabled, new arrays cannot be created in RDL expressions, regardless of the setting of AllowNew.
ValueValue Allow 의 값이며, RDL 식에 허용할 형식의 이름입니다.Value for Allow that is the name of the type to allow in RDL expressions. \* 값은 네임스페이스의 모든 형식이 허용됨을 나타냅니다.The value \* indicates that all types in the namespace are allowed. 이 속성은 대/소문자를 구분하지 않습니다.This property is case-insensitive.
멤버Members 에 포함 된 형식 목록에 대 한는 <형식 > 요소, RDL 식에 사용할 수 없는 멤버 이름 목록입니다.For the list of types that are include in the <Types> element, the list of member names that are not allowed in RDL expressions.
거부Deny RDL 식에 허용되지 않는 멤버의 이름입니다.The name of a member that is not allowed in RDL expressions. 이 속성은 대/소문자를 구분하지 않습니다.This property is case-insensitive.

참고: 멤버에 Deny 가 지정되면 모든 형식에 대해 이 이름을 사용하는 멤버가 모두 허용되지 않습니다.Note: When Deny is specified for a member, all members with this name for all types are not allowed.

RDL 샌드박싱을 사용하는 경우 식 작업Working with Expressions when RDL Sandboxing is Enabled

식에 사용되는 리소스를 관리하기 위해 다음과 같은 방식으로 RDL 샌드박싱 기능을 수정할 수 있습니다.You can modify the RDL Sandboxing feature to help manage the resources that are used by an expression in the following ways:

  • 식에 사용되는 문자의 수를 제한합니다.Restrict the number of characters that are used for an expression.

  • 식에서 반환되는 결과의 크기를 제한합니다.Restrict the size of the result returned by an expression.

  • 식에 사용할 수 있는 특정 형식 목록을 허용합니다.Allow a specific list of types that can be used in an expression.

  • 식에 사용할 수 있는 허용된 형식 목록에 대해 이름별로 멤버 목록을 제한합니다.Restrict the list of members by name for the list of allowed types that can be used in an expression.

  • RDL 샌드박싱 기능을 사용하면 승인된 형식 목록과 거부된 멤버 목록을 만들 수 있습니다.The RDL Sandboxing feature enables you to create a list of approved types and a list of denied members. 승인된 형식 목록을 허용 목록이라고 하고The list of approved types is called an allow list. 거부된 멤버 목록을 차단 목록이라고 합니다.The list of denied members is called a block list.

참고

보고서 정의에서 컴퓨터는 식 참조의 각 인스턴스에 대한 형식을 알 수 없습니다.In the report definition, a computer cannot know the type of each instances of an expression reference. 차단 목록에 멤버를 추가하면 허용 목록에 있는 모든 형식에 대해 해당 이름을 갖는 모든 멤버가 거부됩니다.When you add a member to the block list, you are denying all members of that name across all types in the allow list.

RDL 식 결과는 런타임에 확인됩니다.RDL expression results are verified at run time. RDL 식은 보고서가 게시되면 보고서 정의에서 확인됩니다.RDL expressions are verified in the report definition when the report is published. 보고서 서버 추적 로그를 모니터링하여 위반 항목이 있는지 확인할 수 있습니다.Monitor the report server trace log for violations. 자세한 내용은 Report Server Service Trace Log을 참조하세요.For more information, see Report Server Service Trace Log.

형식 사용Working with Types

허용 목록에 형식을 추가하면 RDL 식에 액세스하기 위해 다음 진입점을 제어하게 됩니다.When you add a type to the allow list, you are controlling the following entry points to access RDL expressions:

  • 형식의 정적 멤버Static members of a type.

  • Visual BasicVisual Basic New 메서드The Visual BasicVisual Basic New method.

  • <클래스 > 보고서 정의에 요소입니다.The <Classes> element in the report definition.

  • 허용 목록의 형식에 대해 차단 목록에 추가한 멤버Members that you have added to the block list for a type in the allow list.

    허용 목록은 다음 진입점을 제어하지 않습니다.The allow list does not control the following entry points:

  • 보고서 데이터 집합.Report datasets. 쿼리에서 반환된 보고서 데이터 집합 필드에는 유효한 RDL 형식이 포함되었을 수 있습니다.Fields in report datasets that are returned from queries might contain any valid RDL type.

  • 보고서 매개 변수Report parameters. 사용자가 제공한 매개 변수 값에는 유효한 RDL 형식이 포함되었을 수 있습니다.User-supplied parameter values might contain any valid RDL type.

  • 사용 가능한 형식 중에서 차단 목록에 없는 멤버.Members of an enabled type that are not in the block list. 기본적으로 허용 목록에 있는 모든 형식의 모든 멤버는 사용할 수 있도록 설정됩니다.By default, all members of all types in the allow list are enabled. 그러나 차단 목록에 멤버 이름을 추가하면 허용 목록에 있는 모든 형식에 대해 해당 이름을 갖는 모든 멤버가 거부됩니다.When you add a member name to the block list, you are denying all members with that name across all types that are in the allow list.

    특정 형식의 멤버를 사용하도록 설정하지만 다른 형식 중에서 같은 이름을 사용하는 멤버는 거부하려면 다음과 같이 해야 합니다.To enable a member of one type but deny a member with the same name for a different type, you must do the following:

  • 추가 <Deny > 멤버 이름에 대 한 요소입니다.Add a <Deny> element for the member name.

  • 사용하도록 설정할 멤버에 대해 사용자 지정 어셈블리의 클래스에 이름이 다른 프록시 멤버를 만듭니다.Create a proxy member with a different name on a class in a custom assembly for the member that you want to enable.

  • 새 클래스를 허용 목록에 추가합니다.Add that new class to the allow list.

    Visual BasicVisual Basic .NET Framework 함수를 허용 목록에 추가하려면 Microsoft.VisualBasic 네임스페이스에서 해당하는 형식을 허용 목록에 추가합니다.To add Visual BasicVisual Basic .NET Framework functions to the allow list, add the corresponding types from the Microsoft.VisualBasic namespace to the allow list.

    Visual BasicVisual Basic .NET Framework 형식 키워드를 허용 목록에 추가하려면 해당하는 CLR 형식을 허용 목록에 추가합니다.To add Visual BasicVisual Basic .NET Framework type keywords to the allow list, add the corresponding CLR type to the allow list. 예를 들어, 사용 하는 Visual BasicVisual Basic .NET Framework 키워드 정수를 추가 하려면 다음 XML 조각은 <RDLSandboxing > 요소:For example, to use the Visual BasicVisual Basic .NET Framework keyword Integer, add the following XML fragment to the <RDLSandboxing> element:

<Allow Namespace="System">Int32</Allow>  

일반 또는 Visual BasicVisual Basic .NET Framework Null 허용 형식을 허용 목록에 추가하려면 다음과 같이 해야 합니다.To add a generic or a Visual BasicVisual Basic .NET Framework nullable type to the allow list, you must do the following:

  • 일반 또는 Visual BasicVisual Basic .NET Framework Null 허용 형식에 대한 프록시 형식을 만듭니다.Create a proxy type for the generic or Visual BasicVisual Basic .NET Framework nullable type.

  • 새로 만든 프록시 형식을 허용 목록에 추가합니다.Add the proxy type to the allow list.

    사용자 지정 어셈블리의 형식을 허용 목록에 추가해도 암시적으로 이 어셈블리에 대해 실행 권한이 부여되는 것은 아닙니다.Adding a type from a custom assembly to the allow list does not implicitly grant execute permission on the assembly. 코드 액세스 보안 파일을 명확하게 수정하고 어셈블리에 대한 실행 권한을 제공해야 합니다.You must specifically modify the code access security file and provide execute permission to your assembly. 자세한 내용은 Code Access Security in Reporting Services을 참조하세요.For more information, see Code Access Security in Reporting Services.

유지 관리 하는 <거부 > 멤버 목록Maintaining the <Deny> List of Members

허용 목록에 새 형식을 추가하는 경우 다음 목록을 사용하여 멤버의 차단 목록을 업데이트해야 할 시기를 결정할 수 있습니다.When you add a new type to the allow list, use the following list to determine when you might have to update the block list of members:

  • 새 형식을 제공하는 버전으로 사용자 지정 어셈블리를 업데이트하는 경우When you update a custom assembly with a version that introduces new types.

  • 허용 목록의 형식에 멤버를 추가하는 경우When you add members to the types in the allow list.

  • 보고서 서버에서 .NET Framework.NET Framework 를 업데이트하는 경우When you update the .NET Framework.NET Framework on the report server.

  • 보고서 서버를 이후 버전의 Reporting ServicesReporting Services로 업그레이드하는 경우When you upgrade the report server to a later version of Reporting ServicesReporting Services.

  • RDL 형식에 새 멤버가 추가되어 나중 RDL 스키마를 처리하기 위해 보고서 서버를 업데이트하는 경우When you update a report server to handle a later RDL schema, because new members might have been added to RDL types.

연산자 및 New 사용Working with Operators and New

기본적으로 Visual BasicVisual Basic New 를 제외한.NET Framework 언어 연산자는 항상 허용됩니다.By default, Visual BasicVisual Basic .NET Framework language operators, except for New, are always allowed. 새로 연산자에 의해 제어 됩니다는 AllowNew 특성에 <허용 > 요소입니다.The New operator is controlled by the AllowNew attribute on the <Allow> element. 기본 컬렉션 접근자 연산자 !와 같은 기타 언어 연산자Other language operators, such as the default collection accessor operator ! Visual BasicVisual Basic CInt 와 같은.NET Framework 캐스트 매크로는 항상 허용됩니다.and Visual BasicVisual Basic .NET Framework cast macros such as CInt, are always allowed.

사용자 지정 연산자를 포함하여 연산자를 차단 목록에 추가하는 것은 지원되지 않습니다.Adding operators to a block list, including custom operators, is not supported. 형식에 대해 연산자를 실행하려면 다음과 같이 해야 합니다.To exclude operators for a type, you must do the following:

  • 제외할 연산자를 구현하지 않는 프록시 형식을 만듭니다.Create a proxy type that does not implement the operators that you want to exclude.

  • 새로 만든 프록시 형식을 허용 목록에 추가합니다.Add the proxy type to the allow list.

    RDL 식에 새 배열을 만들려면 정의하는 클래스에서 메서드에 배열을 만들고 이 클래스를 허용 목록에 추가합니다.To create a new array in an RDL expression, create the array in a method on a class that you define, and add that class to the allow list.

    RDL 식에 새 배열을 만들려면 다음과 같이 해야 합니다.To create a new array in an RDL expression, you must do the following:

  • 새 클래스를 정의하고 해당 클래스의 메서드에 배열을 만듭니다.Define a new class and create the array in a method on that class.

  • 이 클래스를 허용 목록에 추가합니다.Add the class to the allow list.

관련 항목:See Also

RsReportServer.config 구성 파일 RsReportServer.config Configuration File
보고서 서버 서비스 추적 로그Report Server Service Trace Log