다음을 통해 공유


보고서 및 리소스 보안

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

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

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

대부분의 경우 부모 폴더에서 상속된 사용 권한을 사용하려고 할 수 있습니다. 보고서 또는 리소스가 존재한다는 것을 알 필요가 없는 사용자로부터 보고서 또는 리소스를 숨기거나 보고서 또는 항목에 대한 액세스 수준을 높이려는 경우에만 개별 보고서 및 리소스에 대한 보안을 설정해야 합니다. 이러한 목표는 상호 배타적이지 않습니다. 보고서에 대한 액세스를 더 작은 사용자 집합으로 제한하고 전체 또는 일부 사용자에게 보고서를 관리할 수 있는 추가 권한을 제공할 수 있습니다.

목표를 달성하기 위해 여러 역할 할당을 만들어야 할 수 있습니다. 예를 들어 Ann과 Fernando라는 두 사용자와 인사 관리자 그룹에 액세스할 수 있도록 하려는 보고서가 있다고 가정해 보겠습니다. Ann과 Fernando는 보고서를 관리할 수 있어야 하지만 인사 관리자 구성원은 보고서를 실행하기만 하면 됩니다. 이러한 모든 사용자를 수용하기 위해 Ann을 보고서의 콘텐츠 관리자로 만들고, 다른 하나는 Fernando를 보고서의 콘텐츠 관리자로 만들고, 다른 하나는 인사 관리자 그룹에 대한 보기 전용 작업을 지원하는 세 가지 개별 역할 할당을 만듭니다.

보고서 또는 리소스에 대한 보안을 설정하면 항목을 새 위치로 이동하더라도 해당 설정은 항목과 함께 유지됩니다. 예를 들어 몇 명의 사용자만 액세스할 수 있는 권한이 있는 보고서를 이동하는 경우 비교적 열려 있는 보안 정책이 있는 폴더로 이동하더라도 해당 사용자만 보고서를 계속 사용할 수 있습니다.

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

Reporting Services에서 보고서 및 리소스는 보고서를 실행하는 사용자의 보안 ID로 처리됩니다. 보고서에 식, 스크립트, 사용자 지정 보고서 항목 또는 사용자 지정 어셈블리가 포함된 경우 코드는 사용자의 자격 증명으로 실행됩니다. 리소스가 스크립트를 포함하는 HTML 문서인 경우 사용자가 보고서 서버에서 문서를 열 때 스크립트가 실행됩니다. 보고서 내에서 스크립트 또는 코드를 실행하는 기능은 특정 수준의 위험과 함께 제공되는 강력한 기능입니다. 코드가 악의적인 경우 보고서 서버와 보고서를 실행하는 사용자는 공격에 취약합니다.

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

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

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

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

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

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

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

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

  3. 공격자는 "여기서> javascript:<악성 스크립트" 형식의 매개 변수 값을 지정하는 웹 페이지 또는 보고서 서버에 대한 링크를 만들고 해당 링크를 유인 공격에 있는 다른 사람에게 보냅니다.

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

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

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

형식 String의 매개 변수가 포함된 보고서에서는 사용 가능한 값 목록(유효한 값 목록이라고도 함)을 사용하고 보고서를 실행하는 모든 사용자에게 보고서의 데이터를 보는 데 필요한 권한만 있는지 확인해야 합니다. 형식 String의 매개 변수를 정의하면 모든 값을 사용할 수 있는 텍스트 상자가 사용자에게 표시됩니다. 사용 가능한 값 목록은 입력할 수 있는 값을 제한합니다. 보고서 매개 변수가 쿼리 매개 변수에 연결되어 있고 사용 가능한 값 목록을 사용하지 않는 경우 보고서 사용자가 텍스트 상자에 SQL 구문을 입력하여 보고서와 서버를 SQL 삽입 공격으로 열 수 있습니다. 사용자에게 새 SQL 문을 실행할 수 있는 충분한 권한이 있는 경우 서버에서 원치 않는 결과를 생성할 수 있습니다.

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

실수로 악성 스크립트를 실행할 위험을 완화하려면 신뢰할 수 있는 원본에서만 렌더링된 보고서를 엽니다.

비고

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

기밀 보고서 보안

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

또한 참조하십시오

(역할 할당 생성 및 관리.md)
보고서 작성기 액세스 구성
기본 모드 보고서 서버에 대한 사용 권한 부여
공유 데이터 원본 항목 보호
Reporting Services 데이터 원본에 자격 증명 저장