Office 솔루션 실행을 위한 보안 요구 사항(2003 시스템)
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다. 프로젝트 형식
Microsoft Office 버전
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
문서 수준 사용자 지정 및 응용 프로그램 수준의 추가 기능에는 .NET Framework에서 사용할 수 있는 보안 기능이 통합되어 있습니다. 이를 통해 솔루션에서는 신뢰 여부를 결정하기 위한 기반이 되는 다양한 증명을 활용할 수 있습니다.
Microsoft Office 솔루션을 배포하고 실행하려면 각 최종 사용자의 보안 정책에서 어셈블리에 완전 신뢰를 부여해야 합니다. 사용자 지정의 경우 문서가 사용자 컴퓨터가 아닌 네트워크 위치에 있으면 문서에도 완전 신뢰를 부여해야 합니다. 최종 사용자의 컴퓨터에서 보안 정책을 설정하는 데 대한 자세한 내용은 보안 정책 배포를 참조하십시오.
Microsoft Office 솔루션에는 모든 코드 또는 영역 기반 증명 형식을 허용하지 않는 사용자 지정 보안 제한이 추가됩니다. 즉, Microsoft Office 응용 프로그램에서 로컬 컴퓨터, 네트워크 또는 인터넷에 있는 어셈블리를 실행하려면 보안 정책에서 해당 어셈블리에 권한 또는 신뢰를 부여해야 합니다.
Microsoft Office Outlook에는 신뢰할 수 없는 코드에서 Outlook 개체 모델에 액세스하지 못하게 하는 개체 모델 가드가 포함되어 있습니다. 개체 모델 가드는 또한 코드가 실행될 때 Outlook이 최종 사용자에게 경고를 표시하도록 할 수 있습니다. 이러한 경고가 표시되지 않도록 하는 방법에 대한 내용은 Office 솔루션에 대한 특정 보안 고려 사항을 참조하십시오.
신뢰 수준
.NET Framework 보안에는 다음과 같은 세 가지 신뢰 수준이 있습니다.
완전 신뢰. 이 수준에서는 코드에 현재 사용자가 수행 가능한 모든 작업을 수행할 수 있는 권한이 부여됩니다. Office 솔루션에서는 완전 신뢰가 부여된 코드만 실행됩니다.
부분 신뢰. 이 수준은 특정 권한만 부여하는 제한된 권한 집합입니다. 부분적으로 신뢰할 수 있는 코드는 Office 솔루션에서 실행되지 않습니다.
신뢰할 수 없음. 이 수준에서는 권한이 부여되지 않으므로 코드가 실행되지 않습니다.
필요한 권한 집합은 완전 신뢰입니다. 부분 신뢰 또는 신뢰할 수 없는 수준에서는 관리 코드 확장을 Office 솔루션에서 실행할 수 없습니다. 권한 집합에 대한 자세한 내용은 명명된 권한 집합을 참조하십시오.
증명 형식
.NET Framework 보안의 증명 형식은 다음과 같습니다.
모든 코드
응용 프로그램 디렉터리
GAC(전역 어셈블리 캐시)
해시
게시자
사이트
강력한 이름
URL
영역
사용자 지정 (Office 솔루션의 경우 msosec.dll. 자세한 내용은 방법: 공유 위치의 문서 및 통합 문서에 대한 권한 부여(2003 시스템) 참조)
자세한 내용은 증명 정보를 참조하십시오.
Visual Studio에서는 프로젝트를 빌드할 때 이러한 프로젝트에 완전 신뢰를 부여하기 위해 URL 증명을 사용합니다. Visual Studio에서 Visual Studio Tools for Office 프로젝트를 빌드하면 Office 프로젝트의 빌드 위치에 완전 신뢰가 부여되도록 사용자 수준 보안 정책이 변경됩니다. 사용자 지정 또는 추가 기능이 실행될 때 로더에서는 정책 시스템에 어셈블리 위치의 URL을 제공하고, 정책 시스템에서는 특정 위치에 완전 신뢰를 부여합니다.
사용자의 컴퓨터에서 작업을 수행하는 경우에는 일반적으로 이러한 보안 수준이 충분하지만 솔루션을 배포할 때 이러한 증명을 사용하면 보안 문제가 발생할 수 있습니다. 어셈블리를 배포하기 전에 좀더 강력한 형식의 증명을 부여해야 합니다. 다음과 같은 두 가지 이유로 인해 보다 강력한 형식의 증명 정보를 사용해야 합니다.
웹 위치에 완전 신뢰를 부여하는 경우 해당 위치에 대한 쓰기 권한이 있는 악의적인 사용자가 어셈블리를 자신의 코드로 대체하여 다른 사용자가 해당 코드를 실행하도록 유도할 수 있습니다.
컴퓨터 수준 기본 정책에서는 모든 웹 사이트에 부분 신뢰를 부여하지만, 이 경우에는 완전 신뢰가 필요하므로 사용자 수준 정책을 설정하여 URL에 완전 신뢰를 부여하는 것만으로는 충분하지 않습니다.
URL 증명 정보를 사용하는 경우 사용자 정책 수준이 아닌 컴퓨터 정책 수준의 인트라넷 영역 분기에서 정책을 설정해야 합니다. 또한 신뢰할 수 있는 사용자만 쓰기 권한을 갖는 위치에만 완전 신뢰를 부여해야 합니다. 가능하면 정책에서 강력한 이름 등 암호화 방식의 강력한 증명 정보와 위치를 조합하여 사용하는 것이 좋습니다. 강력한 이름은 항상 위치 정보와 함께 사용해야 합니다. 이렇게 하면 강력한 이름이 부여된 응용 프로그램이 손상된 경우 안전하게 패치할 수 있습니다.
문서 수준 사용자 지정의 경우 문서에도 위치 기반 증명 정보가 있으므로, 악의적인 사용자가 코드를 원래 의도와 다른 목적으로 사용하는 문서를 만들어 신뢰되는 코드를 악용할 가능성이 낮아집니다. 관리 코드 확장이 있는 문서가 완전 신뢰되는 위치에 있지 않으면 어셈블리가 실행되지 않습니다. 기본적으로 MyComputer 영역은 완전히 신뢰되므로 사용자 컴퓨터의 문서가 코드를 실행할 수 있지만 인터넷 영역은 완전히 신뢰되지 않습니다.
관리 코드 확장을 가진 문서는 Offcie 인증서 저장소에 의존하는 Office 매크로 보안을 사용하지 않습니다. 매크로 보안은 어셈블리 보안과 관련이 없습니다.
.NET Framework의 보안에 대한 자세한 내용은 코드 액세스 보안 기본 사항, .NET Framework의 보안 및 보안 정책 관리 개요를 참조하십시오.
어셈블리 보안 개요
어셈블리 위치 |
기본 설정 |
설정 방법 |
---|---|---|
개발 컴퓨터 |
Office 프로젝트를 빌드할 때 컴퓨터에 있는 주 어셈블리 및 로컬 복사가 true로 설정되어 있는 모든 참조 어셈블리에는 완전 신뢰가 부여됩니다. |
아무런 작업도 수행할 필요가 없습니다. |
공유 네트워크 위치 |
어셈블리가 신뢰되지 않습니다. |
관리자가 해당 위치를 신뢰하는 네트워크 보안 정책을 설정하고 어셈블리에 대한 보안을 설정해야 합니다(예: 디지털 서명 사용). 자세한 내용은 어셈블리 보안 고려 사항을 참조하십시오. |
최종 사용자 컴퓨터 |
어셈블리가 신뢰되지 않습니다. |
관리자가 사용자의 보안 정책에서 해당 어셈블리에 신뢰를 부여해야 합니다. 자세한 내용은 보안 정책 배포를 참조하십시오. |
문서 보안 개요
문서 위치 |
기본 설정 |
설정 방법 |
---|---|---|
개발 컴퓨터 |
문서가 완전 신뢰됩니다. |
아무런 작업도 수행할 필요가 없습니다. |
공유 네트워크 위치 |
문서가 신뢰되지 않습니다. |
관리자가 해당 위치를 신뢰하는 네트워크 보안 정책을 설정해야 합니다. Office 문서만 신뢰하도록 하는 사용자 지정 정책을 선택적으로 사용할 수 있습니다. 자세한 내용은 방법: 공유 위치의 문서 및 통합 문서에 대한 권한 부여(2003 시스템)를 참조하십시오. |
최종 사용자 컴퓨터 |
문서가 완전 신뢰됩니다. |
아무런 작업도 수행할 필요가 없습니다. |
개발 컴퓨터 보안
개발자가 Visual Studio에서 Office 프로젝트를 빌드할 때 기본적으로 어셈블리 이름을 포함하는 어셈블리의 전체 경로가 사용자 수준에서 .NET Framework 보안 정책에 추가되므로 어셈블리에 완전 신뢰가 부여됩니다. 프로젝트가 빌드되면 프로젝트의 출력 폴더에 있는 참조 어셈블리에도 완전 신뢰가 부여됩니다.
기본 설정을 변경하지 않는 경우 Visual Studio Tools for Office에서는 솔루션을 빌드할 때마다 캐시에서 보안 정책을 검사합니다. 어셈블리에 완전 신뢰가 부여되어 있지 않은 경우에는 Visual Studio Tools for Office에서 완전 신뢰를 부여합니다. 이렇게 하면 어셈블리의 이름을 변경하거나 프로젝트를 새 위치로 옮기는 경우에도 프로젝트의 신뢰 수준을 유지할 수 있습니다.
신뢰 어셈블리 위치 속성을 false로 설정하여 기본 신뢰 설정을 변경하면 Visual Studio에서 어셈블리에 완전 신뢰를 부여하지 않게 되어 코드가 실행되지 않습니다. 다시 코드를 실행하려면 신뢰 어셈블리 위치 속성을 true로 변경하고 솔루션을 다시 빌드해야 합니다. 프로젝트 폴더와 하위 폴더에서 실행되는 모든 코드에 완전 신뢰가 부여되도록 전역 규칙을 설정할 수도 있습니다.
프로젝트의 신뢰 옵션을 설정하고 폴더에 완전 신뢰를 부여하는 방법에 대한 자세한 내용은 방법: 폴더 및 어셈블리에 대한 권한 부여(2003 시스템)를 참조하십시오.
보안 정책 캐싱
공용 언어 런타임은 각 프로세스에 대해 보안 정책을 캐시합니다. Visual Studio에서는 프로젝트를 빌드할 때 이 캐시를 확인하여 어셈블리에 완전 신뢰가 부여되어 있는지 여부를 확인합니다. Visual Studio를 시작했을 때 어셈블리에 이미 완전 신뢰가 부여되어 있는 경우 Visual Studio에서는 빌드 프로세스 중에 해당 어셈블리에 대한 정책을 만들지 않습니다.
Visual Studio 실행 중에 프로젝트에 관련된 보안 정책을 변경하는 경우 Visual Studio에서는 이러한 변경 내용을 검색하지 않습니다. 변경 내용으로 인해 프로젝트가 실행되지 않는 경우 Visual Studio에서 정책을 다시 만들어 어셈블리에 완전 신뢰를 부여하지 않으므로 응용 프로그램에서는 보안 예외를 throw합니다. Visual Studio에서 보안 정책 변경 내용을 검색하도록 설정하려면 Visual Studio를 닫은 다음 다시 열어야 합니다.
이전 버전을 사용하여 만든 솔루션
컴퓨터에 설치되어 있는 모든 버전의 Microsoft .NET Framework에는 그와 관련된 보안 정책이 있습니다. Visual Studio Tools for Office 솔루션은 .NET Framework 버전에 대해 작성한 보안 정책을 검사합니다. 따라서 Visual Studio Tools for Office, Version 2003을 사용하여 솔루션을 만든 경우에는 항상 .NET Framework 버전 1.1의 보안 정책을 확인하고, Visual Studio 2005 Tools for Office를 사용하여 솔루션을 만든 경우에는 항상 .NET Framework 버전 2.0의 보안 정책을 확인합니다.
Visual Studio Tools for the Office System 3.0 솔루션은 .NET Framework 버전 3.5의 보안 정책을 확인하지만 Office 2003용 솔루션은 .NET Framework 2.0을 사용하도록 설정할 수 있습니다. 자세한 내용은 방법: 대상 .NET Framework 변경을 참조하십시오.
네트워크에서 만든 프로젝트
공유 네트워크 위치에 프로젝트를 만들 수 있지만 이 경우 컴퓨터 수준에서 완전 신뢰를 부여해야만 네트워크에서 해당 프로젝트를 실행할 수 있습니다. 기본적으로 Visual Studio Tools for Office에서는 사용자 수준에서 URL 증명을 부여합니다. 이러한 어셈블리에는 컴퓨터 수준에서 직접 완전 신뢰를 부여해야 합니다.
URL 증명 정보만 사용하여 네트워크 위치에 완전 신뢰를 부여하는 경우 해당 위치에 대해 쓰기 권한이 있는 악의적인 사용자가 어셈블리를 자신의 코드로 대체하여 다른 사용자가 해당 코드를 실행하도록 유도할 수 있습니다. 다른 형식의 증명 정보를 URL 증명 정보 대신 사용하거나 함께 사용하는 것이 좋습니다. 자세한 내용은 이 항목의 증명 형식 부분을 참조하십시오.
최종 사용자 보안
최종 사용자는 일반적인 문서를 열 때와 같은 방법으로 관리 코드 확장이 포함된 문서를 엽니다. 문서가 최종 사용자의 컴퓨터에 있거나 네트워크 공유 위치에서 문서에 신뢰가 부여된 경우 Word 또는 Excel에서 어셈블리가 로드 및 실행됩니다. 추가 기능은 사용자가 Microsoft Office 응용 프로그램을 시작할 때 로드됩니다.
Microsoft Office 응용 프로그램에서는 보안 정책을 확인하고 다음 작업 중 하나를 수행합니다.
어셈블리와 문서(가능한 경우)에 명시적으로 권한이 부여되었으면 어셈블리가 실행됩니다. 최종 사용자의 컴퓨터에서 보안 정책을 설정하는 방법에 대한 자세한 내용은 보안 정책 배포를 참조하십시오.
권한을 확인하는 데 사용할 수 있는 유일한 증명이 모든 코드 또는 영역을 기반으로 하는 경우에는 코드가 실행되지 않고 사용자에게는 현재 보안 정책으로 인해 코드를 실행할 수 없다는 오류 메시지가 표시됩니다. 코드를 실행할 수 있도록 정책을 설정하려면 관리자에게 문의해야 합니다.
기본적으로 Visual Studio Tools for Office 보안 정책에서는 사용자 지정 영역의 코드 실행을 허용하지 않습니다. 기본적으로 보안 정책에서는 내 컴퓨터 영역을 신뢰하지만 관리 코드 확장이 포함된 문서의 응용 프로그램 도메인 정책에서는 코드에 대한 신뢰가 명시적으로 부여되지 않는 한 내 컴퓨터 영역의 코드 실행을 허용하지 않습니다. 개발자나 최종 사용자가 이 기본 설정을 그대로 사용하는 경우는 드물지만 이렇게 하면 데스크톱의 보안 기능을 높일 수 있습니다. 또한 최종 사용자는 신뢰되지 않는 코드를 실행할 수 있도록 Office 내의 보안 옵션을 변경할 수 없습니다. 관리 코드 확장을 실행하려면 명시적으로 .NET 보안 정책을 변경해야 합니다.
Office 문서 신뢰
대부분의 경우 Office 문서는 내 컴퓨터 영역에서 실행되며, 특별한 작업을 하지 않아도 문서가 제대로 열립니다. 그러나 이 경우에도 응용 프로그램을 실행하기 위해서는 어셈블리를 완전히 신뢰해야 합니다. 문서가 전자 메일 첨부 파일로 제공된 경우에는 문서가 신뢰되는 어셈블리를 가리키는 경우라 해도 솔루션을 실행하기 전에 사용자의 바탕 화면 같은 컴퓨터의 특정 위치에 문서를 저장해야 합니다. 첨부 파일은 인터넷 영역에 있으므로 완전 신뢰가 부여되지 않기 때문입니다.
문서가 네트워크 위치에 있는 경우 관리자는 해당 문서에 대한 권한도 부여해야 합니다. 템플릿 같은 정적 문서의 경우 관리자는 전체 경로(URL)를 기반으로 문서를 신뢰할 수 있습니다. SharePoint 목록 같이 여러 사용자가 임의의 콘텐트를 업로드할 수 있는 보다 일반적인 저장소의 경우 관리자가 해당 공유 위치에 있는 Office 문서만 신뢰하도록 선택할 수 있습니다. 자세한 내용은 방법: 공유 위치의 문서 및 통합 문서에 대한 권한 부여(2003 시스템)를 참조하십시오.
어셈블리에서 신뢰 제거
조직에 보안 문제가 있을 경우 관리자는 모든 코드에 대해 어떠한 실행 권한도 부여하지 않는 정책을 적용하여 모든 관리 코드를 일시적으로 비활성화할 수 있습니다. 일부 관리 코드가 필요한 경우 관리자는 코드의 고유 속성(예: 위치, 강력한 이름 또는 서명)을 선택하고 필요한 권한을 부여함으로써 실행에 필요한 코드만 사용할 수 있도록 정책을 좀더 세밀하게 수정할 수 있습니다. 보안 문제가 해결된 후 보안 정책을 이전 상태로 되돌리기만 하면 관리 코드가 다시 활성화됩니다. 자세한 내용은 방법: 폴더 및 어셈블리에서 권한 제거(2003 시스템)를 참조하십시오.
참고 항목
개념
Office 솔루션에서 최선의 보안 방법(2003 시스템)