다음을 통해 공유


Reporting Services의 코드 액세스 보안

코드 액세스 보안은 증거, 코드 그룹 및 명명된 권한 집합이라는 핵심 개념을 기반으로 합니다. Reporting Services에서 보고서 관리자, 보고서 디자이너 및 보고서 서버 구성 요소에는 각각 데이터, 배달, 렌더링 및 보안 확장 프로그램뿐만 아니라 사용자 지정 어셈블리에 대한 코드 액세스 보안을 구성하는 정책 파일이 있습니다. 다음 섹션에서는 코드 액세스 보안에 대한 개요를 제공합니다. 이 섹션에서 다루는 항목에 대한 자세한 내용은 Microsoft .NET Framework SDK 설명서의 "보안 정책 모델"을 참조하세요.

Reporting Services는 보고서 서버가 ASP.NET 기술을 기반으로 구축되었지만 일반적인 ASP.NET 애플리케이션과 보고서 서버 간에 상당한 차이가 있기 때문에 코드 액세스 보안을 사용합니다. 일반적인 ASP.NET 애플리케이션은 사용자 코드를 실행하지 않습니다. 반면 Reporting Services는 사용자가 보고서 정의 언어의 Code 요소를 사용하여 보고서 정의 파일에 대해 프로그래밍하고 보고서에서 사용할 특수한 기능을 사용자 지정 어셈블리로 개발할 수 있는 확장 가능한 개방형 아키텍처를 사용합니다. 또한 개발자는 보고서 서버의 기능을 향상시키는 강력한 확장을 설계하고 배포할 수 있습니다. 이러한 힘과 유연성을 통해 가능한 한 많은 보호 및 보안을 제공해야 합니다.

Reporting Services 개발자는 보고서에서 모든 .NET Framework 어셈블리를 사용하고 기본적으로 전역 어셈블리 캐시에 배포된 어셈블리의 모든 기능을 호출할 수 있습니다. 보고서 서버에서 제어할 수 있는 유일한 방법은 보고서 식 및 로드된 사용자 지정 어셈블리에 대해 부여되는 권한입니다. Reporting Services에서 사용자 지정 어셈블리는 기본적으로 실행 전용 권한을 받습니다.

증거

증거는 CLR(공용 언어 런타임)이 코드 어셈블리에 대한 보안 정책을 결정하는 데 사용하는 정보입니다. 증거는 코드에 특정 특성이 있음을 런타임에 나타냅니다. 일반적인 형태의 증거에는 디지털 서명 및 어셈블리의 위치가 포함됩니다. 증명 정보는 애플리케이션에 의미 있는 다른 정보를 나타내도록 사용자 지정 디자인될 수도 있습니다.

어셈블리와 애플리케이션 도메인은 모두 증거에 따라 사용 권한을 받습니다. 예를 들어 Reporting Services에서 액세스를 시도하는 어셈블리의 위치는 약한 이름의 어셈블리에 대한 일반적인 증거 형태입니다. 이를 URL 증명 정보라고 합니다. 보고서 서버에 배포된 사용자 지정 데이터 처리 확장 프로그램에 대한 URL 증거는 "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"일 수 있습니다. 어셈블리의 강력한 이름 또는 디지털 서명은 또 다른 일반적인 형태의 증거입니다. 이 경우 증거는 어셈블리에 대한 공개 키 정보입니다.

코드 그룹

코드 그룹은 멤버 자격에 대해 지정된 조건이 있는 코드의 논리적 그룹입니다. 멤버 자격 조건을 충족하는 모든 코드가 그룹에 포함됩니다. 관리자는 코드 그룹 및 관련 권한 집합을 관리하여 보안 정책을 구성합니다.

코드 그룹의 멤버 자격 조건은 증명 정보를 기반으로 합니다. 예를 들어 코드 그룹의 URL 멤버 자격은 URL 증명 정보를 기반으로 합니다. CLR(공용 언어 런타임)은 URL 증거와 같은 식별 특성을 사용하여 코드를 설명하고 그룹의 멤버 자격 조건이 충족되었는지 여부를 확인합니다. 예를 들어 코드 그룹의 멤버 자격 조건이 "어셈블리의 코드 C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"인 경우 런타임은 증거를 검사하여 코드가 해당 위치에서 시작되었는지 여부를 확인합니다. 이러한 유형의 코드 그룹에 대한 구성 항목의 예는 다음과 같을 수 있습니다.

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="FullTrust"  
   Name="MyCodeGroup"  
   Description="Code group for my data processing extension">  
      <IMembershipCondition class="UrlMembershipCondition"  
         version="1"  
         Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"  
       />  
</CodeGroup>  

시스템 관리자 또는 애플리케이션 배포 전문가와 협력하여 사용자 지정 어셈블리 또는 Reporting Services 확장에 필요한 코드 액세스 보안 및 코드 그룹의 유형을 결정해야 합니다.

명명된 사용 권한 집합

명명된 권한 집합은 관리자가 코드 그룹과 연결할 수 있는 권한 집합입니다. 대부분의 명명된 권한 집합은 하나 이상의 사용 권한, 이름 및 사용 권한 집합에 대한 설명으로 구성됩니다. 관리자는 명명된 권한 집합을 사용하여 코드 그룹에 대한 보안 정책을 설정하거나 수정할 수 있습니다. 둘 이상의 코드 그룹을 동일한 명명된 권한 집합과 연결할 수 있습니다. CLR은 기본 제공 명명된 권한 집합을 제공합니다. 이 중에는 Nothing, Execution, Internet, LocalIntranet, EverythingFullTrust가 있습니다.

비고

Reporting Services의 사용자 지정 데이터, 배달, 렌더링 및 보안 확장 프로그램은 FullTrust 권한 집합에서 실행해야 합니다. 시스템 관리자와 협력하여 Reporting Services 확장에 적절한 코드 그룹 및 멤버 자격 조건을 추가합니다.

보고서와 함께 사용하는 사용자 지정 어셈블리에 대한 사용자 지정 수준의 사용 권한을 연결할 수 있습니다. 예를 들어 어셈블리가 특정 파일에 액세스하도록 허용하려면 특정 파일 I/O 액세스를 사용하여 명명된 새 권한 집합을 만든 다음, 사용 권한 집합을 코드 그룹에 할당할 수 있습니다. 다음 권한 집합은 파일 MyFile.xml대한 읽기 전용 액세스 권한을 부여합니다.

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

이 권한 집합을 부여하는 코드 그룹은 다음과 같을 수 있습니다.

<CodeGroup class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="MyNewFilePermissionSet"  
   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\Reporting Services\ReportServer\bin\MyCustomAssembly.dll"/>  
</CodeGroup>  

또한 참조하십시오

보안 개발(Reporting Services)