보안 배포(2003 시스템)
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다. 프로젝트 형식
Microsoft Office 버전
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
Visual Studio Tools for Office 솔루션을 만들면 프로젝트의 코드가 실행될 수 있도록 로컬 보안 정책이 자동으로 업데이트됩니다. 그러나 솔루션을 배포할 때는 Office 개체 모델에 액세스하고 실행할 수 있는 어셈블리 코드 권한을 부여할 수 있도록 해당 솔루션이 사용되는 각 컴퓨터에서 보안 정책을 명시적으로 업데이트해야 합니다.
문서 수준 사용자 지정의 경우 문서를 네트워크 위치에 배포하면 문서의 보안 정책도 업데이트해야 합니다. 최종 사용자의 컴퓨터에서 보안 정책을 설정하는 방법에 대한 자세한 내용은 보안 정책 배포를 참조하십시오. 문서 수준 사용자 지정에 대한 자세한 내용은 문서 수준 사용자 지정 아키텍처를 참조하십시오.
강력한 이름 및 인증서
솔루션을 안전하게 배포하기 위해 권장되는 방법은 어셈블리에 강력한 이름을 사용하거나 Authenticode(x.509) 인증서를 통해 어셈블리를 서명하거나 이 두 가지 방법을 모두 수행하여 보안과 관리 효율성을 향상시키는 것입니다. 강력한 이름과 Authenticode 서명을 사용하면 높은 수준의 보안이 가능합니다. 강력한 이름 또는 서명까지 무효화하지 않고서는 다른 사용자가 코드를 수정하기가 매우 어렵기 때문입니다. Authenticode 서명을 사용하면 다음과 같은 추가 이점이 있습니다.
Authenticode 서명에는 타임스탬프를 기록할 수 있습니다.
인증서를 해지할 수 있습니다.
인증서로 게시자의 ID를 알 수 있습니다.
강력한 이름의 어셈블리에 대한 자세한 내용은 강력한 이름의 어셈블리 및 강력한 이름의 어셈블리 만들기 및 사용을 참조하십시오.
Authenticode 서명에 대한 자세한 내용은 배포 및 Authenticode 서명을 참조하십시오.
보안 수준 선택
엄격한 규칙의 보안상 이점과 느슨한 규칙의 관리상 이점을 비교하여 적절한 신뢰 수준을 선택합니다. 예를 들어 솔루션을 항상 \\appserver\라는 서버에 배포하고 회사 인증서로 서명하는 경우 \\appserver\에서 로드될 때 회사 인증서만 신뢰하는 규칙을 선택합니다. 이렇게 하면 \\appserver\에서 로드되지 않는 코드는 신뢰되지 않으므로 악의적인 사용자가 인터넷에서 인증서를 도용하거나 코드를 게시하는 것을 방지할 수 있습니다. 그러나 나중에 어셈블리를 다른 서버에 저장하려는 경우 보안 정책을 다시 업데이트해야 하는 불편함이 있습니다.
솔루션을 배포할 위치를 정확하게 알지 못하는 경우 로컬 컴퓨터와 로컬 인트라넷을 통해 인증서 또는 강력한 이름을 신뢰하도록 적절하게 균형을 유지하는 것이 좋습니다. 웹을 통해 코드를 배포하려는 경우 Internet Explorer의 보안 옵션에 있는 신뢰할 수 있는 사이트 영역을 사용할 수도 있습니다. 업무상 반드시 필요한 경우가 아니면 인터넷 영역, 제한된 사이트 영역 또는 최상위 수준(모든 코드)에서 인증서를 신뢰하는 것은 좋지 않으며, 불가피한 경우에는 악의적인 사용자가 코드를 확보하더라도 코드의 안전을 지킬 수 있도록 적절한 예방 조치를 취해야 합니다. 자세한 내용은 코드 액세스 보안을 참조하십시오.
가능한 위협에 대한 내용은 Office 솔루션에 대한 특정 보안 고려 사항을를 참조하십시오.
어셈블리에 대한 액세스 권한 부여
문서 수준 사용자 지정의 배포 옵션 중 하나는 문서를 각 사용자에게 로컬로 배포하고 어셈블리를 네트워크 위치에 배포하는 것입니다. 응용 프로그램 수준 추가 기능의 경우에도 마찬가지로 추가 기능 어셈블리를 네트워크 위치에 배포할 수 있습니다. 어셈블리가 신뢰되지 않으면 Office 솔루션에서 실행되지 않습니다. 어셈블리에 디지털 서명하고 시스템 관리자(및 어셈블리를 수정해야 하는 사람)에게만 해당 위치에 대한 쓰기 권한을 부여합니다. 배포하기 전의 어셈블리 보안에 대한 자세한 내용은 어셈블리 보안 고려 사항을 참조하십시오.
Microsoft .NET Framework 2.0 구성 도구 또는 코드 액세스 보안 정책 도구(Caspol.exe)를 사용하여 어셈블리를 신뢰하는 엔터프라이즈 수준의 정책을 설정합니다.
.NET Framework 구성 도구에 대한 자세한 내용은 .NET Framework 구성 도구(Mscorcfg.msc)를 참조하십시오. Caspol.exe에 대한 자세한 내용은 코드 액세스 보안 정책 도구(Caspol.exe) 및 코드 액세스 보안 정책 도구(Caspol.exe)를 사용하여 보안 정책 구성을 참조하십시오.
어셈블리를 최종 위치에 배포하거나 배포된 어셈블리를 업데이트하기 전에 보안 정책을 검사하여 위험을 최소화하는 데 사용할 증명의 종류를 결정합니다. 자세한 내용은 Office 솔루션 실행을 위한 보안 요구 사항(2003 시스템)을 참조하십시오.
네트워크에서 문서 보안
문서 수준 사용자 지정의 경우 문서가 서버 또는 네트워크 공유 위치에 있으면 문서의 URL을 완전 신뢰해야 합니다. 이는 신뢰할 수 있는 사용자에게만 수정 권한이 있는 개별 문서 또는 템플릿에 적합합니다. 신뢰할 수 없는 사용자에게는 공유 위치의 문서를 수정하거나 바꿀 수 있는 권한이 부여되지 않도록 해야 합니다.
SharePoint 포털 같은 공개 공유 위치에 있는 문서에 사용자가 액세스할 수 있도록 하려면 해당 문서에 대한 새 코드 그룹이 포함되도록 관리자가 정책을 수정해야 합니다. 코드 그룹이 증명의 일부로서 Office 문서를 조회하는 멤버 조건을 충족하면 관리자는 어셈블리를 명시적으로 신뢰하도록 코드 그룹을 추가하듯이 이에 따라 신뢰 수준을 결정할 수 있습니다. 자세한 내용은 방법: 공유 위치의 문서 및 통합 문서에 대한 권한 부여(2003 시스템)를 참조하십시오.
전자 메일 배포
문서 수준 사용자 지정의 경우 전자 메일 메시지에서 문서를 직접 열면 기본적으로 어셈블리가 실행되지 않습니다. 그러나 문서를 로컬 하드 디스크에 저장하면 보통 때처럼 문서를 열 수 있습니다. 문서의 응용 프로그램 매니페스트에 완전히 신뢰할 수 있는 어셈블리의 전체 경로가 포함되어 있는 경우 솔루션이 실행됩니다.
Outlook의 임시 폴더에서 문서를 통해 코드를 호스팅하도록 할 수 있지만 권장되는 방법은 아닙니다. 이렇게 하면 완전 신뢰된 배포 어셈블리에 취약점이 있는 경우 악의적인 사용자가 전자 메일 메시지에 어셈블리를 가리키는 문서를 첨부한 다음 받는 사람이 이를 열 수 있도록 하여 해당 취약점을 악용할 수 있으므로 중하위 수준의 보안 문제가 발생할 수 있습니다. 예를 들어 공격에 성공한 공격자는 대상 사용자의 자격 증명을 사용하여 보안 인트라넷 사이트에 액세스할 수 있습니다. 이 경우에도 어셈블리에는 명시적으로 완전 신뢰가 부여되어야 합니다. 공격자는 원하는 대로 어셈블리와 문서를 만들어서 사용자가 이를 실행하도록 유도할 수 없습니다.
보안 정책 변경
관리자가 문서 또는 어셈블리에 대한 권한을 조정한 경우 변경 내용이 적용되려면 사용자가 모든 Office 응용 프로그램을 종료한 다음 다시 시작해야 합니다.
사용자가 Office 응용 프로그램을 종료한 후에도 해당 프로세스가 계속 실행되는 경우가 있으며, 이 경우 보안 정책 변경 내용이 적용되지 않습니다. 작업 관리자에서 Office 응용 프로그램이 활성 프로세스 목록에 없는지 확인합니다.
Office 응용 프로그램을 호스팅하는 다른 응용 프로그램으로 인해 새로운 권한이 적용되지 않을 수도 있습니다. 보안 정책이 변경되면 사용자는 Internet Explorer를 포함하여 Office를 사용하는 호스팅 또는 독립 실행형 응용 프로그램을 모두 종료해야 합니다.
문서 수준 사용자 지정에 의한 코드 실행 방지
관리자는 레지스트리를 사용하여 컴퓨터에서 모든 문서 수준 사용자 지정이 실행되지 않게 할 수 있습니다. 관리 코드를 확장하는 Word 문서나 Excel 통합 문서가 열려 있는 경우 Visual Studio Tools for Office 런타임은 Disabled라는 이름을 갖는 항목이 컴퓨터의 다음 레지스트리 키 중 하나에 존재하는지 여부를 확인합니다.
HKEY_CURRENT_USER\Software\Microsoft\VSTO
HKEY_LOCAL_MACHINE\Software\Microsoft\VSTO
문서 수준 사용자 지정에서 코드가 실행되지 않게 하려면 이러한 레지스트리 키 중 하나 또는 둘 다에 Disabled 항목을 만들어서 Disabled에 대해 다음 데이터 형식 및 값 중 하나를 지정합니다.
0(영) 이외의 문자열로 설정된 REG_SZ 또는 REG_EXPAND_SZ
0(영) 이외의 값으로 설정된 REG_DWORD
문서 수준 사용자 지정이 비활성화되어 있는 동안 사용자는 계속 문서를 열 수 있고 변경할 수 있지만 어셈블리의 코드는 실행되지 않습니다. 문서 수준 사용자 지정에서 코드를 실행하도록 설정하려면 Disabled 항목을 둘 다 0으로 설정하거나 레지스트리 항목을 삭제합니다.
참고 항목
작업
방법: 문서에서 관리 코드 확장 제거(2003 시스템)
방법: 오프라인으로 사용할 문서 배포(2003 시스템)