다음을 통해 공유


워크플로 보안 및 사용자 관리 계획(SharePoint Server 2010)

 

적용 대상: SharePoint Foundation 2010, SharePoint Server 2010

마지막으로 수정된 항목: 2016-11-30

Microsoft SharePoint Server 2010에서 워크플로를 사용자에게 배포하기 전에 관리자는 정보 공개 또는 권한 상승과 같은 보안 문제로 고민할 수 있습니다. 이 문서에서는 보안과 관련된 일부 워크플로 동작을 살펴보고, 관리자 및 워크플로 개발자가 워크플로를 구성하고 개발하는 경우 고려해야 할 기타 문제에 대해 알아봅니다.

이 문서의 내용

  • 목록 관리자, 관리자, 개발자의 역할 및 담당 업무

  • 관리자로 워크플로 실행

  • 워크플로 구성 설정

  • 작업 및 워크플로 기록 목록의 정보 공개

  • 작업 및 워크플로 기록 목록의 위조 및 변조 공격

  • 선언적 워크플로의 사용자 가장 단계 유형

목록 관리자, 관리자 및 개발자의 역할 및 담당 업무

워크플로 실행 시 관리자 및 개발자의 역할을 이해할 수 있도록 다음에서는 일반적인 워크플로 작업 및 담당 업무에 대해 설명합니다.

워크플로 개발자

워크플로 일정 및 서식 파일 개발   워크플로 개발자는 SharePoint 항목에서 실행되는 비즈니스 논리를 포함하도록 어셈블리를 코딩합니다. 이 어셈블리를 워크플로 일정이라고도 합니다. 워크플로 개발자는 워크플로 양식과 어셈블리를 워크플로 기능이나 워크플로 서식 파일로 패키지하는 작업도 담당합니다.

사이트 관리자

중앙 관리에서 워크플로 설정 관리   사이트 관리자는 SharePoint 중앙 관리 웹 사이트의 작업 알림 결과 및 외부 참석자 설정과 같은 일반적인 워크플로 설정을 제어할 수 있습니다.

워크플로 기능 배포   사이트 관리자는 사이트 모음에 워크플로 기능을 설치하여 워크플로 기능을 연결 가능한 상태로 만들 수 있습니다.

목록 관리자(목록 관리 또는 웹 디자이너 권한이 있는 모든 사용자)

워크플로 추가   목록 관리자는 업무상 필요한 목록 또는 콘텐츠 형식에 워크플로 서식 파일을 연결(또는 추가)해야 합니다. 이렇게 연결하면 최종 사용자가 해당 워크플로 서식 파일을 사용할 수 있고 직접 기본값 및 설정을 선택할 수 있습니다.

워크플로 제거   목록 관리자는 목록 또는 콘텐츠 형식에서 워크플로 연결을 제거하거나 새 인스턴스를 실행하지 못하도록 할 수 있습니다.

워크플로 종료   워크플로 인스턴스에서 오류가 발생하거나 워크플로 인스턴스가 시작되지 않는 등 워크플로 인스턴스가 실패하는 경우 목록 관리자는 워크플로 상태 페이지에서 이 워크플로를 지금 종료합니다. 링크를 사용하여 실행 중인 워크플로 인스턴스를 중지할 수 있습니다. 이 작업은 관리자에게 예약됩니다.

관리자로 워크플로 실행

알아두어야 할 가장 중요한 보안 개념은 워크플로가 서버 컴퓨터 및 도메인의 ID 응용 프로그램 풀 설정을 통해 SharePoint Server 2010의 시스템 계정의 일부로 실행된다는 것입니다. 즉, SharePoint Server 2010 내에서 워크플로는 관리자 권한을 갖습니다. 서버에서는 워크플로가 응용 프로그램 풀과 동일한 사용 권한을 갖지만 이 역시 주로 관리자 권한을 보유합니다. 이러한 사용 권한을 바탕으로 워크플로는 일반 사용자가 수행할 수 없는 작업, 예를 들어 특정 위치 또는 레코드 센터로 문서를 회람하거나 시스템에 사용자 계정을 추가하는 등의 작업을 수행할 수 있습니다.

워크플로가 관리자 권한을 갖는 이 설정은 변경할 수 없습니다. 대신, 사용자 작업을 검색하고, 해당 작업을 바탕으로 워크플로를 계속 진행하거나 변경 내용을 롤백하고, 사용자 권한을 모방하기 위해 사용자를 가장하는 등의 작업은 워크플로 일정(즉, 워크플로 코드)에 따라 수행됩니다.

워크플로를 배포하는 경우 관리자는 워크플로로 수행되는 작업을 반드시 이해하고 있어야 합니다. 그래야 워크플로의 권한 상승과 연관된 잠재적 위험을 평가하고 워크플로 개발자를 도와 보안 문제를 줄일 수 있습니다.

워크플로 구성 설정

SharePoint Server 2010의 일부 구성 설정은 보안 요구 사항에 따라 관리자의 설정이 필요합니다.

워크플로를 시작하는 데 필요한 사용 권한

목록 관리자는 코드의 권한 상승 방지 외에도 연결 프로세스 중 워크플로를 시작하는 데 필요한 사용 권한 수준을 제한할 수 있습니다. 관리자는 두 가지 사용 권한 수준, 즉 항목 편집 또는 목록 관리 중 하나를 선택하여 특정 워크플로 연결을 시작할 수 있습니다.

워크플로 연결의 기본 설정은 항목 편집 권한을 가진 사용자가 워크플로를 수동으로 시작할 수 있도록 허용하는 설정입니다. 즉, 목록에 있는 인증된 SharePoint Server 2010 사용자 중 항목 편집 권한을 가진 사용자는 워크플로 연결 인스턴스를 시작할 수 있습니다. 워크플로를 만드는 과정에서 관리자가 목록 관리 권한이 있는 사용자만 워크플로를 시작할 수 있도록 설정하는 옵션을 선택한 경우 목록 관리자만 이 연결 인스턴스를 시작할 수 있습니다.

워크플로는 표준 참가자가 사용하도록 디자인되므로 대부분의 워크플로는 목록 관리 권한으로 제한할 필요가 없습니다. 하지만 문서 폐기 워크플로와 같이 특정 사용자만 폐기 작업을 실행할 수 있도록 제한하려는 경우에 관리자는 워크플로에 이 설정을 사용할 수 있습니다.

중앙 관리 설정

다음 설정은 중앙 관리 페이지에서 응용 프로그램 관리를 클릭하고 웹 응용 프로그램 섹션에서 웹 응용 프로그램 관리를 클릭하면 표시됩니다. 웹 응용 프로그램 페이지에서 구성할 웹 응용 프로그램을 선택하고 리본의 관리 그룹에서 일반 설정을 클릭한 다음 워크플로를 선택합니다. 워크플로 설정 페이지가 열리고 다음 설정이 표시됩니다.

  • 사용자 정의 워크플로

  • 워크플로 작업 알림

사용자 정의 워크플로 사용

기본적으로 사용자 정의 워크플로는 워크플로 설정 페이지의 사용자 정의 워크플로 섹션에 나와 있는 것처럼 웹 응용 프로그램의 모든 사이트에서 사용할 수 있습니다. 이 옵션을 선택하는 경우 사용자는 SharePoint Designer 2010 워크플로 편집기와 같은 워크플로 편집기에서 워크플로를 정의할 수 있습니다. 이러한 워크플로를 정의하는 사용자에게는 워크플로를 배포 중인 사이트에 대한 목록 관리 권한이 있어야 합니다.

사이트 액세스 권한이 없는 사용자를 위한 작업 알림

워크플로 설정 페이지의 워크플로 작업 알림 섹션에서 사이트에 액세스할 수 없는 사용자에게 보류 중인 워크플로 작업에 대한 알림을 전송할 수 있는 옵션을 설정할 수 있습니다.

  • 내부 사용자
SharePoint Server 2010에서는 사이트의 구성원이 아니거나 해당 작업에 대한 액세스 권한이 없는 디렉터리 서비스의 내부 사용자 이름을 확인할 수 있습니다. 이 경우 관리자는 **워크플로 작업 알림** 섹션에서 **워크플로 작업이 할당될 때 사이트 액세스 권한이 없는 내부 사용자에게 알리시겠습니까?** 옵션을 선택하여 해당 사용자가 전자 메일로 작업 알림을 수신할지 여부를 설정할 수 있습니다. 즉, 사용자가 워크플로 작업에 할당되는 경우 해당 사용자는 알림을 받게 됩니다. 이 옵션은 기본적으로 사용되며, 사용자가 수신하는 전자 메일 메시지에는 사이트에 대한 액세스 권한을 요청(관리자가 액세스 권한을 부여해야 함)할 수 있는 링크가 포함되어 있습니다. 이 전자 메일 메시지에는 문서 제목, 워크플로 소유자가 전달하는 지침 등 문서에 대한 정보도 포함되어 있을 수 있습니다. 사이트의 구성원이 아닌 내부 사용자에게 정보가 공개될 우려가 있는 경우 관리자는 **워크플로 작업이 할당될 때 사이트 액세스 권한이 없는 내부 사용자에게 알리시겠습니까?** 설정을 비활성화할 수 있습니다.
  • 외부 사용자
디렉터리 서비스에 없지만 잘 구성된 SMTP 전자 메일 주소가 할당된 외부 사용자의 경우 워크플로 작업을 할당받을 수 있습니다. 외부 사용자는 문서에 액세스하기 어려우므로 SharePoint Foundation 2010 및 SharePoint Server 2010에는 외부 사용자에게 문서가 첨부된 전자 메일로 작업 알림을 전송할 수 있는 **문서의 복사본을 외부 사용자에게 보내 해당 사용자가 워크플로에 참가할 수 있도록 허용하시겠습니까?** 설정이 포함되어 있습니다. 이 옵션을 사용하도록 설정한 경우 작업이 워크플로 소유자에게 할당되고 외부 사용자는 소유자에게 전자 메일을 전송하여 작업을 완료할 수 있습니다.

기본적으로 **문서의 복사본을 외부 사용자에게 보내 해당 사용자가 워크플로에 참가할 수 있도록 허용하시겠습니까?** 옵션은 비활성화됩니다. 하지만 이 설정은 외부 고객 관련 비즈니스 문서의 승인과 같이 외부 참석자가 필요한 경우에 유용할 수 있습니다. **예**를 선택하여 이 설정을 활성화하는 경우 관리자는 워크플로 일정이 외부 참석자 설정을 지원하는지 확인해야 합니다. 예를 들어 외부 사용자를 대상으로 만든 작업의 경우 해당 사용자 지정 워크플로에서 작업을 초기화하는 데 사용되는 **SPWorkflowTaskProperties** 개체의 **OnBehalfEmail** 속성에 외부 전자 메일 주소를 지정해야 합니다. SharePoint Server 2010의 일부 기본 제공 워크플로는 이 설정을 지원합니다.

이 기능을 활성화하려는 사용자 지정 워크플로 개발자는 실제 문서를 외부 전자 메일 메시지에 첨부하는 경우 정보 공개 위험이 있는지 여부를 관리자와 함께 확인해야 합니다. 관리자는 이 설정을 활성화하는 경우의 이점과 위험을 평가해야 합니다.

작업 및 워크플로 기록 목록의 정보 공개

작업 및 워크플로 기록 목록의 항목에는 사용자에 대한 데이터뿐 아니라 사용자가 문서에 수행한 작업에 대한 데이터가 포함될 수 있으므로 해당 항목을 통해 기밀 정보가 공개될 수 있습니다. 예를 들어 승진 승인 워크플로는 조직에서 워크플로 소유자 및 해당 작업의 각 참석자만 보도록 하는 작업에 대한 의견을 수집할 수 있습니다.

작업 및 기록 목록은 사이트의 일반적인 목록입니다. 따라서 모든 읽기 권한자는 기본적으로 작업 및 기록 항목을 볼 수 있습니다. 관리자 및 개발자는 공개할 수 없는 정보를 확인하여 워크플로에서 생성된 작업 및 기록 항목에 보안을 적용할지 여부를 결정해야 합니다.

이러한 항목은 여러 가지 방법으로 보호할 수 있습니다. 예를 들어 관리자는 목록 수준 사용 권한을 설정할 수 있습니다. 공개 수준을 비공개로 설정하는 경우 즉, 공개적으로 사용할 수 없지만 특정 사용자 그룹은 사용할 수 있도록 하는 경우 관리자는 새 작업 또는 기록 목록을 만들어 해당 그룹을 대상으로 하는 목록에 사용 권한을 설정할 수 있습니다. 관리자가 워크플로 상태 페이지의 기록 이벤트를 볼 수 있는 사용자를 제한하려는 경우, 상태 페이지에 표시되는 정보의 기반이 되는 워크플로 기록 목록에 대한 보기 권한을 제거하면 됩니다. 기록 목록 자체 또는 해당 목록의 항목을 볼 수 있는 권한이 없는 사용자는 해당 기록 목록에서 데이터를 가져오는 상태 페이지를 열 때 액세스 거부 오류를 수신하게 됩니다.

좀 더 세부적으로 권한을 제한하려는 경우 워크플로 개발자는 작업 또는 기록 항목을 만들 때 항목별로 사용 권한을 설정하면 됩니다. CreateTask 작업에 있는 SpecialPermissions 속성은 새로 만든 작업에 대한 액세스 권한을 지정하는 속성입니다. LogToHistoryList 작업에는 이러한 속성이 없기 때문에 관리자는 SharePoint Server 2010의 OM(개체 모델)을 사용하여 기록 목록 항목에 항목별 사용 권한을 설정해야 합니다. 항목별 사용 권한은 성능에 부정적인 영향을 줄 수 있으므로 필요한 경우가 아니면 사용하지 말아야 합니다.

작업과 기록 항목을 반드시 같은 방식으로 처리해야 하는 것은 아니므로, 관리자는 목록 사용 권한 및 항목별 사용 권한을 혼합할 수 있습니다.

작업 및 워크플로 기록 목록의 위조 및 변조 공격

작업 또는 기록 항목 목록에 대한 제한이 없는 경우 모든 참가자가 작업 또는 기록 항목을 수정할 수 있습니다. 즉, 악의적인 사용자가 작업 설명을 수정하여 참석자에게 잘못된 지침을 제공하거나 참석자들이 악의적인 링크를 클릭하도록 할 수 있습니다. 악의적인 사용자는 또한 지정된 프로세스 결과를 변경하기 위해 부정확하거나 잘못된 기록 이벤트를 추가하거나, 기록 이벤트를 수정하여 부정확하거나 잘못된 기록 이벤트로 만들 수 있습니다.

앞에서 자세히 설명한 것처럼 작업 및 기록 목록은 사이트의 일반 목록입니다. 기본적으로 작업 목록이나 기록 목록에 대해 사용 권한이 제한되지 않습니다. 위조 및 변조 공격을 방지하려면 관리자는 존재하는 취약점을 확인한 후, 목록의 열에 대한 액세스를 제한(예: 작업 설명과 같은 취약한 열을 읽기 전용으로 설정하여 워크플로에서 항목 생성 시에만 설정 작업을 수행할 수 있도록 제한)하거나 목록에 특수 권한을 설정하거나 목록의 항목에 항목별 권한을 설정하는 등 액세스 권한을 제한해야 합니다.

워크플로 기록 목록의 보안 문제

워크플로의 주요 이점은 프로세스 정보를 추적하여 프로세스의 진행 상태를 눈으로 확인할 수 있다는 점입니다. 이러한 정보는 워크플로 기록 목록에 저장되고, 워크플로 상태 페이지는 워크플로 기록 목록에서 워크플로 인스턴스 관련 데이터를 검색한 후 사용자가 볼 수 있도록 표시합니다. 사용자는 액세스 권한이 있는 한 워크플로 기록 목록의 모든 항목을 볼 수 있습니다.

워크플로 기록 목록이 정보를 추적하기 때문에 워크플로 기록 목록이 이벤트의 감사 내역으로 사용된다고 생각하는 사용자가 있을 수 있지만 사실은 그렇지 않습니다. 워크플로 기록은 보안 기능이 아닙니다. 기록 목록은 이벤트를 저장하는 표준 SharePoint 목록으로, 모든 사용자에게 표시될 수 있으며 관련된 특정 사용 권한이 없습니다. 기본적으로 사이트에 대한 편집 및 추가 권한이 있는 사용자는 이벤트를 수정하고 추가할 수 있습니다. 이벤트를 감사하려면 SharePoint의 감사 로그 기능을 사용해야 합니다. 관리자만 이 로그에 액세스할 수 있으며, 위조 공격에서 보호하기 위해 이 로그에 대해 수행해야 할 추가 작업은 없습니다.

기록 목록의 보안을 더 강화하려면 관리자는 목록에 대한 편집 및 추가 권한을 제한하여 시스템 계정 관리자(예: 워크플로 관리자) 및 목록 관리자만 항목을 추가하도록 제한할 수 있습니다. 목록 관리자에게는 추가 권한이 있어야 "이 워크플로 종료" 이벤트의 로그를 기록할 수 있습니다. 기록 목록에 대해 편집 및 추가 권한을 제한하는 경우라도 사용자들이 상태 정보를 볼 수 있도록 보기 권한을 부여해야 합니다.

선언적 워크플로의 사용자 가장 단계 유형

사용자 가장 단계 유형은 워크플로 시작자가 아닌 워크플로 제작자가 선언적 워크플로 섹션을 실행하는 데 사용될 수 있습니다. 선언적 워크플로는 워크플로를 만들고 코드 기록 없이 워크플로에 매개 변수를 설정하기 위해 사용하는 모델입니다.

SharePoint Server 2010에서 선언적 워크플로는 가장 단계가 발생하지 않는 한 워크플로 시작자의 사용자 컨텍스트에서 항상 실행됩니다. 가장 단계가 발생하는 경우 선언적 워크플로는 워크플로 연결자의 컨텍스트에서 실행됩니다. 기본 워크플로 작업은 워크플로가 실행될 때 워크플로를 시작한 사용자로 가장하여 SharePoint 사용 권한 요구 사항을 충족합니다. 이 방법을 통해 SharePoint Server 2010의 보안은 유지되지만, 사용 권한 수준이 높은 워크플로 디자이너가 강력한 워크플로를 작성하여 사용 권한 수준이 낮은 사용자도 성공적으로 완료할 수 있게 하는 여러 시나리오 가능성을 차단합니다.

안전하고 범위가 지정된 권한 상승 양식을 통해 워크플로로 사이트 작업을 자동화할 수 있습니다. 그러면 SharePoint 사이트 관리자의 업무 부담이 줄어듭니다. 게시나 승인 시나리오에서는 보안 수준이 높은 프로세스를 자동화하는 것이 유용합니다. 그래야 기존 작업에서 워크플로 시작자 이외의 사용자로 가장할 수 있습니다.

다음은 사용자 가장 단계 유형을 보여주는 예제 시나리오입니다.

  • 안전한 목록에 게시

    장선희는 자신의 SharePoint 사이트의 공개 블로그에 대한 페이지 문서 라이브러리를 잠갔습니다. 또한 사이트 참가자가 제출한 콘텐츠를 승인할 수 있도록 Microsoft SharePoint Designer 2010을 사용하여 승인 워크플로를 설정했습니다. 그런 다음 가장 단계에 워크플로 작업을 삽입하여 워크플로 작업이 사이트 관리자인 장선희를 항상 워크플로 제작자로 가장하도록 합니다.

    최영희(참가자)가 콘텐츠 초안을 사이트의 페이지 라이브러리에 올린 후 문서를 게시하려 합니다. 그러면 게시물을 검토 및 승인할 수 있도록 장선희의 승인 워크플로가 시작됩니다. 최영희를 대신하여 작업이 워크플로의 승인자에게 전송됩니다. 승인자가 검토 및 승인을 마치면 게시물의 중재 상태가 "승인됨"으로 설정됩니다. 최영희에게 페이지를 승인할 권한이 없는 경우에도 마찬가지입니다.

  • 사용자에게 사용 권한 부여

    홍성주는 "그룹에 사용자 추가"라는 사용자 가장 작업을 사용하는 워크플로를 SharePoint Designer 2010에 설정하여 자신의 사이트에 디자인 권한을 부여합니다. 이 워크플로는 가장 단계를 사용하므로 홍성주를 대신하여 그룹에 사용자를 추가하는 작업이 항상 수행됩니다.

    참가자가 사이트를 방문하고 목록에 대한 액세스 요청을 양식에 기록하도록 나머지 워크플로가 설정됩니다.

    예를 들어 사용자인 최영희가 요청을 기록하면 별도의 사용자인 정영일이 작업을 수신합니다. 정영일이 해당 작업을 승인하면 정영일이나 최영희 모두 홍성주의 사이트에 대한 목록 관리 권한이 없음에도 불구하고 최영희가 사이트의 디자이너 그룹에 추가됩니다.

  • 서식 파일 및 소유권 가져오기

    강판석은 SharePoint Designer 2010에서 일부 워크플로를 만들어 회사에서 다시 사용할 목적으로 서식 파일로 저장했지만 곧 회사를 그만두었습니다. 그의 계정은 제거되고 관리자 상태가 해지되었으며 이제 강판석이 만든 SharePoint Designer 2010 워크플로는 강판석이 사용 권한을 잃었기 때문에 완료할 수 없습니다.

    상위 SharePoint 사이트 관리자인 이한일은 SharePoint Designer 2010의 워크플로를 다시 만들지 않고도 각 워크플로에 개입할 수 있습니다. 이한일은 손상된 각 서식 파일에서 관리가 필요한 부분의 소유권을 가져옵니다. 이렇게 하면 강판석의 이름이 아닌 이한일의 이름으로 게시 및 액세스 권한 부여를 안전하게 수행할 수 있으므로 그 외에 변경되는 사항은 없습니다.

다음은 가장할 수 있는 워크플로 작업입니다.

  • 콘텐츠 승인 상태 설정(소유자로 가장)

  • 목록 항목 만들기(소유자로 가장)

  • 목록 항목 업데이트(소유자로 가장)

  • 목록 항목 삭제(소유자로 가장)

  • 목록 항목 사용 권한 추가/제거/설정/상속(소유자로 가장)

SharePoint 관리자는 SharePoint 사이트의 워크플로에 가장을 통합함으로써 얻을 수 있는 보안 효과를 고려해야 합니다. 가장을 사용하면 새 작업에 적용될 뿐 아니라, 목록 항목 업데이트와 같은 기존 작업에도 적용됩니다.

예를 들어 워크플로의 사용자 가장 작업을 통해 시작자로 계속 실행할 수 있는 모델이 있다고 가정했을 때, 사이트 모음에 있는 사이트 하나에 대해서만 관리자 권한이 있는 사용자가 악의적으로 워크플로를 만들어 상위 웹 사이트에 대한 권한을 얻을 수 있습니다. 악의적인 사용자는 단지 자신의 악의적인 사이트에 있는 문서 라이브러리로 관리자가 파일을 업로드하도록 유인하기만 하면 워크플로 공격을 개시함과 동시에 상위 웹 사이트 전체를 손상시킬 수 있습니다.

이러한 위험으로 인해 SharePoint Designer 2010에서 "사용자 가장 작업은 항상 해당 연결자로만 가장"하도록 제한하는 기능이 개발되었습니다. 연결자란 워크플로를 특정 목록 또는 웹에 연결하는 사람입니다. SharePoint Server 2010 선언적 워크플로에서 연결자는 워크플로 제작자와 동일한 사람입니다. 즉, SharePoint Designer 2010에 워크플로를 만드는 사용자입니다. 하지만 연결자는 선언적 워크플로 서식 파일을 연결하는 사람일 수도 있습니다. 현재 문제가 되는 것은 제작자/연결자의 자격 증명이 권한 상승에 사용되기 때문에 제작자/연결자가 사용자 가장 단계 유형으로 인해 발생하는 모든 것에 대한 책임을 져야만 한다는 것입니다. 그러므로 제작자/연결자는 자신이 디자인하고 연결하는 워크플로를 이해해야 합니다. 따라서 SharePoint Designer 2010에서는 워크플로를 만드는 제작자/연결자에게 경고하기 위해 워크플로 생성 페이지에서 사용자 가장 단계 유형에 대한 경고 메시지를 표시합니다.