보고서 및 리소스 보안Secure Reports and Resources

개별 보고서 및 리소스에 보안을 설정하여 사용자가 해당 항목에 대해 갖는 액세스 수준을 제어할 수 있습니다.You can set security for individual reports and resources to control the degree of access that users have to these items. 기본적으로 Administrators 기본 제공 그룹의 멤버인 사용자만 보고서 실행, 리소스 보기, 속성 수정, 항목 삭제 등의 작업을 수행할 수 있습니다.By default, only users who are members of the Administrators built-in group can run reports, view resources, modify properties, and delete the items. 다른 모든 사용자는 보고서나 리소스에 대한 액세스를 허용하는 역할 할당이 만들어져 있어야 합니다.All other users must have role assignments created for them that allow access to a report or resource.

보고서 및 리소스에 대한 역할 기반 액세스Role-based Access to Reports and Resources

보고서 및 리소스에 대한 액세스 권한을 부여하려면 사용자가 부모 폴더에서 기존 역할 할당을 상속할 수 있도록 하거나 항목 자체에 대한 새 역할 할당을 만듭니다.To grant access to reports and resources, you can allow users to inherit existing role assignments from a parent folder or create a new role assignment on the item itself.

대부분의 경우 부모 폴더에서 상속된 권한을 사용하는 것이 좋습니다.In most cases, you will probably want to use the permissions that are inherited from a parent folder. 보고서나 리소스의 존재 여부를 알 필요가 없는 사용자가 해당 보고서나 리소스를 볼 수 없도록 하거나 보고서 또는 항목에 대한 액세스 수준을 높이려는 경우에만 개별 보고서와 리소스에 대한 보안을 설정해야 합니다.Setting security on individual reports and resources should only be necessary if you want to hide the report or resource from users who do not need to know that the report or resource exists, or to increase the level of access for a report or item. 이러한 보안 설정 방식은 상호 배타적인 것이 아닙니다.These objectives are not mutually exclusive. 보다 적은 수의 사용자만 보고서에 액세스할 수 있도록 제한하고 이들 중 일부 또는 모두에게 보고서를 관리할 수 있는 추가 권한을 제공할 수 있습니다.You can restrict access to a report to a smaller set of users, and provide all or some of them with additional privileges to manage the report.

이러한 보안 설정을 위해서는 역할 할당을 여러 개 만들 필요가 있습니다.You may need to create multiple role assignments to achieve your objectives. 예를 들어 사용자 이영희, 김철수 및 인사 관리자 그룹만 보고서에 액세스할 수 있도록 설정하는 경우For example, suppose you have a report that you want to make accessible to two users, Ann and Fernando, and to the Human Resource Managers group. 이영희와 김철수에게는 보고서 관리 권한을, 인사 관리자 그룹 멤버에게는 보고서 실행 권한만 부여하려고 합니다.Ann and Fernando must be able to manage the report, but the Human Resource Managers members need only to run it. 이러한 사용자 모두에게 보안을 설정하려면 이영희를 보고서의 내용 관리자로 만드는 역할 할당, 김철수를 보고서의 내용 관리자로 만드는 역할 할당, 인사 관리자 그룹에게 보기 전용 태스크를 지원하는 역할 할당을 만들어야 합니다.To accommodate all of these users, you would create three separate role assignments: one to make Ann a content manager of the report, one to make Fernando a content manager of the report, and one to support view-only tasks for the Human Resource Managers group.

보고서 또는 리소스에 보안을 설정한 경우 이러한 설정은 항목을 새 위치로 이동하더라도 해당 항목에 그대로 적용됩니다.Once you set security on a report or resource, those settings stay with the item even if you move the item to a new location. 예를 들어 일부 사용자에게만 액세스 권한이 부여된 보고서를 이동할 경우 상대적으로 개방된 보안 정책을 갖는 폴더로 보고서를 이동하더라도 해당 사용자들만 보고서를 계속 사용할 수 있습니다.For example, if you move a report that only a few people are authorized to access, the report continues to be available to just those users even if you move it to a folder that has a relatively open security policy.

게시된 보고서 또는 문서의 HTML 삽입 공격 위험 완화Mitigating HTML Injection Attacks in a Published Report or Document

Reporting ServicesReporting Services에서 보고서와 리소스는 보고서를 실행 중인 사용자의 보안 ID로 처리됩니다.In Reporting ServicesReporting Services, reports and resources are processed under the security identity of the user who is running the report. 보고서에 식, 스크립트, 사용자 지정 보고서 항목 또는 사용자 지정 어셈블리가 포함된 경우 사용자의 자격 증명으로 코드가 실행됩니다.If the report contains expressions, script, custom report items, or custom assemblies, the code runs under the user's credentials. 스크립트가 포함된 HTML 문서가 리소스인 경우 사용자가 보고서 서버에서 문서를 열면 스크립트가 실행됩니다.If a resource is an HTML document that contains script, the script will run when the user opens the document on the report server. 보고서에 있는 스크립트나 코드를 실행하는 기능은 강력한 기능으로서 위험 요소가 있을 수 있습니다.The ability to run script or code within a report is a powerful feature that comes with a certain level of risk. 악성 코드인 경우 보고서 서버와 보고서를 실행하는 사용자가 공격을 받을 수 있습니다.If the code is malicious, the report server and the user who is running the report are vulnerable to attack.

HTML로 처리되는 보고서와 리소스에 대한 액세스 권한을 부여할 때는 보고서가 완전 신뢰 수준에서 처리되고 악의적인 스크립트가 클라이언트에 보내질 수 있다는 점을 기억해야 합니다.When granting access to reports and to resources that are processed as HTML, it is important to remember that reports are processed in full trust and that potentially malicious script might be sent to the client. 브라우저 설정에 따라 클라이언트는 브라우저에 지정된 신뢰 수준에서 HTML을 실행합니다.Depending on browser settings, the client will execute the HTML at the level of trust that is specified in the browser.

다음과 같은 예방 조치를 통해 악의적인 스크립트가 실행되는 위험을 줄일 수 있습니다.You can mitigate the risk of running malicious script by taking the following precautions:

  • 보고서 서버에 내용을 게시할 수 있는 사용자는 신중하게 결정합니다.Be selective when deciding who can publish content to a report server. 사용자가 악의적인 내용을 게시할 가능성이 있으므로 신뢰할 수 있는 소수의 사용자만 내용을 게시할 수 있도록 해야 합니다.Because the potential for publishing malicious content exists, you should limit users who can publish content to a small number of trusted users.

  • 모든 게시자는 출처를 알 수 없거나 신뢰할 수 없는 보고서와 리소스를 게시하지 말아야 합니다.All publishers should avoid publishing reports and resources that come from unknown or untrusted sources. 필요한 경우 텍스트 편집기에서 파일을 열고 의심스러운 스크립트와 URL을 찾습니다.If necessary, open the file in a text editor and look for suspicious script and URLs.

보고서 매개 변수 및 스크립트 삽입Report Parameters and Script Injection

보고서 매개 변수를 사용하면 보다 유연하게 보고서를 디자인하고 실행할 수 있습니다.Report Parameters provide flexibility for the overall report design and execution. 그러나 때로는 이러한 유연함이 공격자의 유인 공격에 이용될 수 있습니다.However, this same flexibility can, in some cases be used by an attacker in luring attacks. 악성 스크립트를 실수로 실행하는 위험을 줄이기 위해 신뢰할 수 있는 출처의 렌더링된 보고서만 여십시오.To mitigate the risk of inadvertently running malicious scripts, only open rendered reports from trusted sources. 잠재적 HTML 렌더러 스크립트 삽입 공격에 해당하는 다음 시나리오를 검토하는 것이 좋습니다.It is recommended you consider the following scenario that is a potential HTML Renderer script injection attack:

  1. 악성 텍스트를 포함할 수 있는 매개 변수 값으로 하이퍼링크 동작이 설정된 입력란이 보고서에 포함되어 있습니다.A report contains a text box with the hyperlink action set to the value of a parameter which could contain malicious text.

  2. 웹 페이지의 URL에서 보고서 매개 변수 값을 제어할 수 있는 방식으로 보고서가 보고서 서버에 게시되었거나 이와 같은 방식으로 보고서를 사용할 수 있습니다.The report is published to a report server or otherwise made available in such a way that the report parameter value can be controlled from the URL of a web page.

  3. 공격자가 웹 페이지 또는 형식에서 매개 변수의 값을 지정 하는 보고서 서버에 대 한 링크를 만듭니다 "javascript:<악성 스크립트 >" 하 고 해당 링크를 유인 공격 다른 사람에 게 보냅니다.An attacker creates a link to the web page or report server specifying the value of the parameter in the form "javascript:<malicious script here>" and sends that link to someone else in a luring attack.

보고서의 보고서 항목 또는 보고서 항목의 일부에 대한 Action 속성 값에 하이퍼링크를 포함할 수 있습니다.Reports can contain embedded hyperlinks in the value of the Action property on a report item or part of a report item. 이러한 하이퍼링크는 보고서 처리 시 외부 데이터 원본에서 검색되는 데이터에 바인딩될 수 있습니다.Hyperlinks can be bound to data that is retrieved from an external data source when the report is processed. 악의적 사용자가 이러한 기본 데이터를 수정할 경우 하이퍼링크는 스크립팅 악용 공격의 대상이 될 수 있습니다.If a malicious user modifies the underlying data, the hyperlink might be at risk for scripting exploits. 사용자가 게시된 보고서나 내보낸 보고서의 링크를 클릭하면 악성 스크립트가 실행될 수 있습니다.If a user clicks the link in the published or exported report, malicious script could run.

보고서에 포함한 링크로 인해 실수로 악성 스크립트가 실행되는 위험을 완화하려면 신뢰할 수 있는 출처의 데이터에만 하이퍼링크를 바인딩하십시오.To mitigate the risk of including links in a report that inadvertently run malicious scripts, only bind hyperlinks to data from trusted sources. 쿼리 결과의 데이터 및 하이퍼링크에 데이터를 바인딩하는 식으로 악용될 수 있는 링크를 만들지 않았는지 확인하십시오.Verify that data from the query results and the expressions that bind data to hyperlinks do not create links that can be exploited. 예를 들어 여러 데이터 집합 필드의 데이터를 연결하는 식을 기반으로 하이퍼링크를 만들지 않도록 합니다.For example, do not base a hyperlink on an expression that concatenates data from multiple dataset fields. 필요한 경우 보고서에서 "원본 보기"를 사용하여 의심스러운 스크립트와 URL이 있는지 확인합니다.If necessary, browse to the report and use "View Source" to check for suspicious scripts and URLs.

매개 변수가 있는 보고서의 SQL 삽입 공격 위험 완화Mitigating SQL Injection Attacks in a Parameterized Report

String형식의 매개 변수가 포함된 보고서에서는 유효한 값 목록이라고도 하는 사용 가능한 값 목록을 사용해야 하며 보고서를 실행하는 모든 사용자가 보고서의 데이터를 보는 데 필요한 권한만 갖도록 해야 합니다.In any report that includes a parameter of type String, be sure to use an available values list (also known as a valid values list) and ensure that any user running the report has only the permissions required to view the data in the report. String유형의 매개 변수를 정의할 경우 모든 값을 사용할 수 있는 입력란이 사용자에게 제공됩니다.When you define a parameter of type String, the user is presented with a text box that can take any value. 사용 가능한 값 목록은 입력할 수 있는 값을 제한합니다.An available values list limits the values that can be entered. 보고서 매개 변수가 쿼리 매개 변수에 연결되어 있고 사용 가능한 값 목록을 사용하지 않는 경우에는 보고서 사용자가 입력란에 SQL 구문을 입력할 수 있으므로 보고서와 서버가 SQL 인젝션 공격을 받을 가능성이 있습니다.If the report parameter is tied to a query parameter and you do not use an available values list, it is possible for a report user to type SQL syntax into the text box, potentially opening the report and your server to a SQL injection attack. 사용자에게 새 SQL 문 실행을 위한 충분한 권한이 있으면 서버에 원하지 않은 결과가 발생할 수 있습니다.If the user has sufficient permissions to execute the new SQL statement, it may produce unwanted results on the server.

보고서 매개 변수가 쿼리 매개 변수에 연결되어 있지 않고 매개 변수 값이 보고서에 포함된 경우에는 보고서 사용자가 식 구문 또는 URL을 매개 변수 값에 입력하고 보고서를 Excel 또는 HTML로 렌더링할 수 있습니다.If a report parameter is not tied to a query parameter and the parameter values are included in the report, it is possible for a report user to type expression syntax or a URL into the parameter value and render the report to Excel or HTML. 이후 다른 사용자가 보고서를 보면서 렌더링된 매개 변수 내용을 클릭할 경우 악의적인 스크립트나 링크가 실수로 실행될 수 있습니다.If another user then views the report and clicks the rendered parameter contents, the user may inadvertently execute the malicious script or link.

악의적인 스크립트를 실수로 실행하는 위험을 줄이기 위해 신뢰할 수 있는 원본의 렌더링된 보고서만 여세요.To mitigate the risk of inadvertently running malicious scripts, open rendered reports only from trusted sources.

참고

이전 버전의 설명서에는 동적 쿼리를 식으로 만드는 예가 포함되었습니다.In previous releases of the documentation, an example of creating a dynamic query as an expression was included. 이러한 유형의 쿼리는 SQL 삽입 공격에 이용되기 쉬우므로 사용하지 않는 것이 좋습니다.This type of query creates a vulnerability to SQL injection attacks and therefore is not recommended.

기밀 보고서 보안Securing Confidential Reports

기밀 정보가 들어 있는 보고서의 경우 사용자에게 주요 데이터에 대한 액세스 자격 증명을 요청함으로써 데이터 액세스 수준에서 보안을 유지해야 합니다.Reports that contain confidential information should be secured at the data-access level, by requiring users to provide credentials to access sensitive data. 자세한 내용은 Specify Credential and Connection Information for Report Data Sources을 참조하세요.For more information, see Specify Credential and Connection Information for Report Data Sources. 권한이 없는 사용자가 액세스하지 못하도록 폴더에 보안을 지정할 수도 있습니다.You can also secure a folder to make it inaccessible to unauthorized users. 자세한 내용은 폴더 보안을 참조하세요.For more information, see Secure Folders.

관련 항목:See Also

역할 할당 생성 및 관리 Create and Manage Role Assignments
보고서 작성기 액세스 구성 Configure Report Builder Access
기본 모드 보고서 서버에 대 한 권한 부여 Granting Permissions on a Native Mode Report Server
공유 데이터 원본 항목 보안 설정 Secure Shared Data Source Items
Reporting Services 데이터 원본에 자격 증명을 저장 합니다.Store Credentials in a Reporting Services Data Source