보고서 및 리소스 보안
개별 보고서 및 리소스에 보안을 설정하여 사용자가 해당 항목에 대해 갖는 액세스 수준을 제어할 수 있습니다. 기본적으로 Administrators 기본 제공 그룹의 멤버인 사용자만 보고서 실행, 리소스 보기, 속성 수정, 항목 삭제 등의 작업을 수행할 수 있습니다. 다른 모든 사용자는 보고서나 리소스에 대한 액세스를 허용하는 역할 할당이 만들어져 있어야 합니다.
보고서 및 리소스에 대한 역할 기반 액세스
보고서 및 리소스에 대한 액세스 권한을 부여하려면 사용자가 부모 폴더에서 기존 역할 할당을 상속할 수 있도록 하거나 항목 자체에 대한 새 역할 할당을 만듭니다.
대부분의 경우 부모 폴더에서 상속된 권한을 사용하는 것이 좋습니다. 보고서나 리소스의 존재 여부를 알 필요가 없는 사용자가 해당 보고서나 리소스를 볼 수 없도록 하거나 보고서 또는 항목에 대한 액세스 수준을 높이려는 경우에만 개별 보고서와 리소스에 대한 보안을 설정해야 합니다. 이러한 보안 설정 방식은 상호 배타적인 것이 아닙니다. 보다 적은 수의 사용자만 보고서에 액세스할 수 있도록 제한하고 이들 중 일부 또는 모두에게 보고서를 관리할 수 있는 추가 권한을 제공할 수 있습니다.
이러한 보안 설정을 위해서는 역할 할당을 여러 개 만들 필요가 있습니다. 예를 들어 사용자 이영희, 김철수 및 인사 관리자 그룹만 보고서에 액세스할 수 있도록 설정하는 경우 이영희와 김철수에게는 보고서 관리 권한을, 인사 관리자 그룹 멤버에게는 보고서 실행 권한만 부여하려고 합니다. 이러한 사용자 모두에게 보안을 설정하려면 이영희를 보고서의 내용 관리자로 만드는 역할 할당, 김철수를 보고서의 내용 관리자로 만드는 역할 할당, 인사 관리자 그룹에게 보기 전용 태스크를 지원하는 역할 할당을 만들어야 합니다.
보고서 또는 리소스에 보안을 설정한 경우 이러한 설정은 항목을 새 위치로 이동하더라도 해당 항목에 그대로 적용됩니다. 예를 들어 일부 사용자에게만 액세스 권한이 부여된 보고서를 이동할 경우 상대적으로 개방된 보안 정책을 갖는 폴더로 보고서를 이동하더라도 해당 사용자들만 보고서를 계속 사용할 수 있습니다.
게시된 보고서 또는 문서의 HTML 인젝션 공격 위험 완화
Reporting Services에서 보고서와 리소스는 보고서를 실행 중인 사용자의 보안 ID로 처리됩니다. 보고서에 식, 스크립트, 사용자 지정 보고서 항목 또는 사용자 지정 어셈블리가 포함된 경우 사용자의 자격 증명으로 코드가 실행됩니다. 스크립트가 포함된 HTML 문서가 리소스인 경우 사용자가 보고서 서버에서 문서를 열면 스크립트가 실행됩니다. 보고서에 있는 스크립트나 코드를 실행하는 기능은 강력한 기능으로서 위험 요소가 있을 수 있습니다. 악성 코드인 경우 보고서 서버와 보고서를 실행하는 사용자가 공격을 받을 수 있습니다.
HTML로 처리되는 보고서와 리소스에 대한 액세스 권한을 부여할 때는 보고서가 완전 신뢰 수준에서 처리되고 악의적인 스크립트가 클라이언트에 보내질 수 있다는 점을 기억해야 합니다. 브라우저 설정에 따라 클라이언트는 브라우저에 지정된 신뢰 수준에서 HTML을 실행합니다.
다음과 같은 예방 조치를 통해 악의적인 스크립트가 실행되는 위험을 줄일 수 있습니다.
보고서 서버에 내용을 게시할 수 있는 사용자는 신중하게 결정합니다. 사용자가 악의적인 내용을 게시할 가능성이 있으므로 신뢰할 수 있는 소수의 사용자만 내용을 게시할 수 있도록 해야 합니다.
모든 게시자는 출처를 알 수 없거나 신뢰할 수 없는 보고서와 리소스를 게시하지 말아야 합니다. 필요한 경우 텍스트 편집기에서 파일을 열고 의심스러운 스크립트와 URL을 찾습니다.
매개 변수가 있는 보고서의 SQL 인젝션 공격 위험 완화
String 형식의 매개 변수가 포함된 보고서에서는 유효한 값 목록이라고도 하는 사용 가능한 값 목록을 사용해야 하며 보고서를 실행하는 모든 사용자가 보고서의 데이터를 보는 데 필요한 권한만 갖도록 해야 합니다. String 유형의 매개 변수를 정의할 경우 모든 값을 사용할 수 있는 텍스트 상자가 사용자에게 제공됩니다. 사용 가능한 값 목록은 입력할 수 있는 값을 제한합니다. 보고서 매개 변수가 쿼리 매개 변수에 연결되어 있고 사용 가능한 값 목록을 사용하지 않는 경우에는 보고서 사용자가 텍스트 상자에 SQL 구문을 입력할 수 있으므로 보고서와 서버가 SQL 인젝션 공격을 받을 가능성이 있습니다. 사용자에게 새 SQL 문 실행을 위한 충분한 권한이 있으면 서버에 원하지 않은 결과가 발생할 수 있습니다.
보고서 매개 변수가 쿼리 매개 변수에 연결되어 있지 않고 매개 변수 값이 보고서에 포함된 경우에는 보고서 사용자가 식 구문 또는 URL을 매개 변수 값에 입력하고 보고서를 Excel 또는 HTML로 렌더링할 수 있습니다. 이후 다른 사용자가 보고서를 보면서 렌더링된 매개 변수 내용을 클릭할 경우 악의적인 스크립트나 링크가 실수로 실행될 수 있습니다.
악의적인 스크립트를 실수로 실행하는 위험을 줄이기 위해 신뢰할 수 있는 출처의 렌더링된 보고서만 여십시오.
[!참고]
이전 버전의 설명서에는 동적 쿼리를 식으로 만드는 예가 포함되었습니다. 이러한 유형의 쿼리는 SQL 인젝션 공격에 이용되기 쉬우므로 사용하지 않는 것이 좋습니다.
기밀 보고서 보안
기밀 정보가 들어 있는 보고서의 경우 사용자에게 주요 데이터에 대한 액세스 자격 증명을 요청함으로써 데이터 액세스 수준에서 보안을 유지해야 합니다. 자세한 내용은 보고서 데이터 원본에 대한 자격 증명 및 연결 정보 지정을 참조하십시오. 권한이 없는 사용자가 액세스하지 못하도록 폴더에 보안을 지정할 수도 있습니다. 자세한 내용은 폴더 보안 설정을 참조하십시오.