다음을 통해 공유


보고서 및 리소스 보안

개별 보고서 및 리소스에 대한 보안을 설정하여 사용자가 이러한 항목에 대한 보유해야 하는 액세스 수준을 제어할 수 있습니다. 기본값으로 관리자 기본 제공 그룹의 구성원인 사용자만 공유 보고서를 실행하고 리소스를 보며 속성을 수정하고 항목을 삭제할 수 있습니다. 다른 모든 사용자의 경우 보고서 또는 리소스에 대한 액세스를 허용하는 역할 할당을 만들어야 합니다.

보고서 및 리소스에 대한 역할 기반 액세스

보고서 및 리소스에 대한 액세스 권한을 부여하려면 사용자가 부모 폴더에서 기존 역할 할당을 상속할 수 있도록 하거나 항목 자체에 대한 새 역할 할당을 만듭니다.

대부분의 경우 부모 폴더에서 상속된 사용 권한을 사용하려고 할 수 있습니다. 개별 보고서 및 리소스에 대한 보안 설정은 한두 개의 가지 시나리오에서만 필요합니다. 이러한 시나리오는 다음과 같습니다.

  • 보고서 또는 리소스가 존재한다는 사실을 알 필요가 없는 사용자로부터 보고서 또는 리소스를 숨기려는 경우
  • 보고서 또는 항목에 대한 액세스 수준을 높이려는 경우.

이러한 목표는 상호 배타적이지 않습니다. 보다 적은 수의 사용자만 보고서에 액세스할 수 있도록 제한하고 이들 중 일부 또는 모두에게 보고서를 관리할 수 있는 다른 권한을 제공할 수 있습니다.

목표를 달성하기 위해 여러 역할 할당을 만들어야 할 수도 있습니다. 예를 들어 Ann과 Fernando라는 두 사용자와 인사 관리자 그룹에서 액세스할 수 있도록 하려는 보고서가 있다고 가정합니다. Ann과 Fernando는 보고서를 관리할 수 있어야 하지만 인사 관리자 구성원은 보고서를 실행하기만 하면 됩니다. 이러한 사용자 모두에게 보안을 설정하려면 이영희를 보고서의 내용 관리자로 만드는 역할 할당, 김철수를 보고서의 내용 관리자로 만드는 역할 할당, 인사 관리자 그룹에게 보기 전용 태스크를 지원하는 역할 할당을 만들어야 합니다.

보고서 또는 리소스에 보안을 설정한 경우 이러한 설정은 항목을 새 위치로 이동하더라도 해당 항목에 그대로 적용됩니다. 예를 들어 몇 명의 사용자에게만 액세스할 수 있는 권한을 부여하는 보고서를 이동하는 경우 보고서는 계속해서 해당 사용자만 사용할 수 있습니다. 이 결과는 비교적 개방적인 보안 정책이 있는 폴더로 이동하더라도 발생할 수 있습니다.

게시된 보고서 또는 문서에서 HTML 삽입 공격 위험 완화

Reporting Services에서 보고서 및 리소스는 보고서를 실행하는 사용자의 보안 ID로 처리됩니다. 보고서에 식, 스크립트, 사용자 지정 보고서 항목 또는 사용자 지정 어셈블리가 포함된 경우 코드는 사용자의 자격 증명으로 실행됩니다. 리소스가 스크립트를 포함하는 HTML 문서인 경우 사용자가 보고서 서버에서 문서를 열 때 스크립트가 실행됩니다. 보고서에 있는 스크립트나 코드를 실행하는 기능은 강력한 기능으로서 위험 요소가 있을 수 있습니다. 악성 코드인 경우 보고서 서버와 보고서를 실행하는 사용자가 공격을 받을 수 있습니다.

HTML로 처리되는 리소스 및 보고서에 대한 액세스 권한을 부여하는 경우 보고서가 완전 신뢰 조건에서 처리되고 잠재적으로 악의적인 스크립트가 클라이언트로 전송될 수 있음을 명심해야 합니다. 브라우저 설정에 따라 클라이언트는 브라우저에 지정된 신뢰 수준에서 HTML을 실행합니다.

다음과 같은 예방 조치를 수행하여 악성 스크립트를 실행하는 위험을 완화할 수 있습니다.

  • 보고서 서버에 콘텐츠를 게시할 수 있는 사용자를 결정할 때는 신중하게 선택해야 합니다. 사용자가 악의적인 내용을 게시할 가능성이 있으므로 신뢰할 수 있는 소수의 사용자만 내용을 게시할 수 있도록 해야 합니다.

  • 모든 게시자는 알 수 없거나 신뢰할 수 없는 원본에서 가져온 보고서 및 리소스를 게시하지 않아야 합니다. 필요한 경우 텍스트 편집기에서 파일을 열고 의심스러운 스크립트 및 URL을 찾습니다.

보고서 매개 변수 및 스크립트 삽입

보고서 매개 변수는 전체 보고서 디자인 및 실행에 유연성을 제공합니다. 그러나 이러한 유연성은 공격자의 공격을 유인하는 데 사용될 수 있습니다. 악의적인 스크립트를 실수로 실행하는 위험을 줄이기 위해 신뢰할 수 있는 원본의 렌더링된 보고서만 여세요. 잠재적인 HTML 렌더러 스크립트 삽입 공격인 다음 시나리오를 고려해야 합니다.

  1. 보고서에는 악의적인 텍스트를 포함할 수 있는 매개 변수 값으로 설정된 하이퍼링크 작업이 있는 텍스트 상자가 포함되어 있습니다.

  2. 보고서는 보고서 서버에 게시됩니다. 그렇지 않으면 웹 페이지의 URL에서 보고서 매개 변수 값을 제어할 수 있는 방식으로 사용할 수 있습니다.

  3. 공격자가 웹 페이지 또는 보고서 서버에 대한 링크를 만듭니다. 해당 링크는 javascript:<malicious script here> 양식으로 매개 변수 값을 지정하고 유인 공격에서 해당 링크를 다른 사람에게 보냅니다.

보고서에는 보고서 항목 또는 보고서 항목의 일부에서 작업 속성 값으로 포함된 하이퍼링크가 있을 수 있습니다. 하이퍼링크는 보고서가 처리될 때 외부 데이터 원본에서 검색되는 데이터에 바인딩할 수 있습니다. 악의적인 사용자가 기본 데이터를 수정하는 경우 하이퍼링크에는 스크립팅 악용의 위험이 있을 수 있습니다. 사용자가 게시되거나 내보낸 보고서에서 링크를 선택하면 악의적인 스크립트가 실행될 수 있습니다.

보고서에 포함한 링크로 인해 실수로 악성 스크립트가 실행되는 위험을 완화하려면 신뢰할 수 있는 출처의 데이터에만 하이퍼링크를 바인딩하십시오. 쿼리 결과의 데이터와 하이퍼링크에 데이터를 바인딩하는 식이 악용될 수 있는 링크를 만들지 않는지 확인합니다. 예를 들어 여러 데이터 세트 필드의 데이터를 연결하는 식에서 하이퍼링크를 사용하지 마세요. 필요한 경우 보고서를 찾아 "원본 보기"를 사용하여 의심스러운 스크립트 및 URL을 확인합니다.

매개 변수가 있는 보고서에서 SQL 삽입 공격 위험 완화

문자열형식의 매개 변수가 포함된 보고서에서는 유효한 값 목록이라고도 하는 사용 가능한 값 목록을 사용해야 하며, 보고서를 실행하는 모든 사용자가 보고서의 데이터를 보는 데 필요한 권한만 갖도록 해야 합니다. String유형의 매개 변수를 정의할 경우 모든 값을 사용할 수 있는 입력란이 사용자에게 제공됩니다. 사용 가능한 값 목록은 입력할 수 있는 값을 제한합니다. 보고서 매개 변수를 쿼리 매개 변수에 연결하고 사용 가능한 값 목록을 사용하지 않는 경우에는 보고서 사용자가 입력란에 SQL 구문을 입력할 수 있습니다. 이 작업을 수행하면 보고서와 서버가 SQL 삽입 공격에 노출될 수 있습니다. 사용자에게 새 SQL 문 실행을 위한 충분한 권한이 있으면 서버에 원하지 않은 결과가 발생할 수 있습니다.

보고서 매개 변수가 쿼리 매개 변수에 연결되지 않을 수 있으며, 매개 변수 값이 보고서에 포함됩니다. 이 경우 보고서 사용자가 식 구문 또는 URL을 매개 변수 값으로 입력하고 보고서를 Excel 또는 HTML로 렌더링할 수 있습니다. 그러면 다른 사용자가 보고서를 보고 렌더링된 매개 변수 콘텐츠를 선택하면 사용자가 실수로 악성 스크립트 또는 링크를 실행할 수 있습니다.

악의적인 스크립트를 실수로 실행하는 위험을 줄이기 위해 신뢰할 수 있는 원본의 렌더링된 보고서만 여세요.

참고 항목

이전 버전의 설명서에는 동적 쿼리를 식으로 만드는 예가 포함되었습니다. 이 유형의 쿼리를 사용하면 SQL 삽입 공격에 대한 취약성이 생기므로 권장되지 않습니다.

기밀 보고서 보안

비밀 정보가 포함된 보고서는 중요한 데이터에 액세스하려면 사용자에게 자격 증명을 제공하도록 요구하여 데이터 액세스 수준에서 보안되어야 합니다. 자세한 내용은 보고서 데이터 원본에 대한 자격 증명 및 연결 정보 지정을 참조하세요. 권한이 없는 사용자가 액세스할 수 없도록 폴더를 보안할 수도 있습니다. 자세한 내용은 폴더 보안을 참조하세요.