Office 솔루션에서 최선의 보안 방법(2003 시스템)
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다. 프로젝트 형식
Microsoft Office 버전
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
문서 수준 사용자 지정 및 응용 프로그램 수준 추가 기능의 보안 정책을 계획할 때 다음과 같은 문제점을 고려해야 합니다.
보안 정책에 조건 추가
Microsoft .NET Framework에서는 정책을 배포하기 위한 두 가지 주요한 방법을 제공합니다.
.NET Framework 구성 도구를 사용하여 Windows Installer 파일(.msi)을 빌드합니다. 자세한 내용은 보안 정책 배포를 참조하십시오.
코드 액세스 보안 정책 도구(Caspol.exe)에 대한 스크립트를 작성하여 정책을 직접 수정합니다. 자세한 내용은 코드 액세스 보안 정책 도구(Caspol.exe)를 사용하여 보안 정책 구성을 참조하십시오.
Windows Installer 파일을 사용하면 전체 보안 수준(대개 엔터프라이즈 또는 컴퓨터 수준)이 최종 사용자의 컴퓨터에 복사되므로 정책 평가를 더 정확하게 예측할 수 있지만 회사 내의 각기 다른 그룹에서 서로 독립적으로 정책을 게시하려 하거나 개별 사용자가 해당 정책을 변경해야 하는 경우에는 충돌이 발생할 수 있습니다.
Caspol.exe를 사용하여 정책을 수정하면 각기 다른 사용자가 서로 독립적으로 정책을 업데이트할 수 있지만 서로 다른 코드 그룹 사이에 상호 작용을 확인할 수 없으므로 임의의 특정 정책을 변경하여 원하는 결과를 얻을 수 있는지 보장할 수 없습니다. 예를 들어 한 부서에서 특정 인트라넷 사이트에 대한 완전 신뢰를 부여하는 정책 변경 내용을 배포하는 경우 이 부서에서는 해당 사이트의 모든 코드를 신뢰할 수 있기를 기대합니다. 그러나 다른 부서에서 이 사이트에 대한 액세스를 거부하는 Exclusive 특성이 포함된 정책을 배포하면 코드가 실행되지 않습니다. Exclusive 특성에 대한 자세한 내용은 코드 그룹 특성을 사용한 관리 및 방법: 코드 그룹을 Exclusive 또는 Level Final로 만들기를 참조하십시오.
관리자는 정책 업데이트 방법을 결정할 때 Windows Installer 파일의 예측 가능성과 Caspol.exe의 융통성 사이에 균형을 유지해야 합니다.
Microsoft .NET Framework API를 통해 직접 정책을 조작하도록 관리 코드를 작성할 수도 있지만 이렇게 하면 정책을 올바로 만들기가 어려우므로 이 방법은 사용하지 않는 것이 좋습니다.
현재 정책 검사
어셈블리가 실행되지 않으면 해당 어셈블리에 할당된 권한을 검토하여 가능한 원인을 조사할 수 있습니다. Microsoft .NET Framework에서는 어셈블리의 현재 정책을 검사하기 위한 두 가지 방법을 제공합니다.
Microsoft .NET Framework 2.0 구성 도구에 포함된 어셈블리 확인 마법사를 사용합니다. 이 마법사에 액세스하는 방법에 대한 자세한 내용은 방법: .NET Framework 구성 도구(Mscorcfg.msc)를 사용하여 일반 보안 정책 작업 수행을 참조하십시오.
Caspol.exe에서 다음 명령을 실행합니다.
caspol -all -lg caspol -rsg path_to_assembly
Caspol.exe 명령에 대한 자세한 내용은 코드 액세스 보안 정책 도구(Caspol.exe)를 참조하십시오.
이러한 도구는 어셈블리에 적용된 보안 정책을 표시하고 CLR(공용 언어 런타임)에 어셈블리의 증명이 해당 규칙에 매핑되는 방식을 표시합니다. 이러한 결과를 통해 정책이 올바르게 설정되어 있는지 여부와 어셈블리가 올바른 코드 그룹에 일치하는지 여부를 확인할 수 있습니다. 이 방법으로 확인할 수 있는 주요 문제는 다음과 같습니다.
LocalIntranet에 있어야 하는 네트워크 규칙(예: https://server/에 대한 완전 신뢰 부여)을 MyComputer 영역에 추가했거나 TrustedSites에 있어야 하는 규칙을 LocalIntranet에 추가했습니다.
파일 이름이나 URL에 오류가 있습니다.
해당 폴더 아래의 모든 파일과 하위 폴더가 정책에 포함되어야 함을 나타내는 별표(*)가 디렉터리 경로에 없습니다.
자세한 내용은 Caspol.exe를 사용하여 보안 정책 문제 해결을 참조하십시오.
엔터프라이즈의 기본 정책 설정
Visual Studio를 사용하면 엔터프라이즈에서 고유한 자체 기본 정책을 정의할 수 있습니다. 일반적으로 보안 정책을 다시 설정하면 Framework를 설치할 당시의 기본 설정으로 정책이 되돌아갑니다. 엔터프라이즈 전용 기본 정책을 사용하면 특정 엔터프라이즈에서 정의한 기본 정책으로 보안 정책을 다시 설정할 수 있습니다. 예를 들어 엔터프라이즈에서 신뢰할 수 있는 게시자를 엔터프라이즈 수준에 추가하고 인터넷 영역의 코드를 모두 차단할 수 있습니다.
기본 정책으로 되돌리는 방법에 대한 자세한 내용은 방법: Caspol.exe를 사용하여 기본 보안 정책 설정으로 돌아가기 및 .NET Framework 구성 도구(Mscorcfg.msc)를 참조하십시오. 기본 보안 정책에 대한 자세한 내용은 기본 보안 정책을 참조하십시오.
일반 권장 사항
Office 솔루션에 대한 정책을 결정할 때는 다음 지침을 염두에 두어야 합니다.
해당 번호에 의존하는 대신 항상 명명된 코드 그룹을 사용합니다. 예를 들어 1.1 대신 MyComputer_Zone을 사용합니다. Internet의 이름을 MyComputer로 변경하는 경우와 같이 사용자가 그룹 이름을 변경할 수도 있지만 이보다는 번호가 변경될 가능성이 더 높습니다.
규칙을 적용할 코드에 대해서는 가능한 한 제한적이어야 합니다. 컴퓨터 수준에서 All_Code 그룹에 규칙을 추가하지 말아야 합니다. 항상 영역이나 영역 아래의 다른 하위 그룹에 규칙을 추가해야 합니다. 사용을 원하지 않는 코드에 대한 규칙은 사용하지 않는 것이 좋습니다.
가장 넓은 대상부터 규칙을 적용해야 합니다. 예를 들어 게시자, 사이트, 영역 순으로 규칙을 적용하는 대신 영역, 사이트, 게시자 순으로 규칙을 적용합니다. 이렇게 하면 특정 코드에 특정 영역 규칙을 적용할 수 있지만 제한이 필요한지 여부를 확인하기 전에는 해당 영역 규칙이 게시자의 모든 코드에 적용되지 않습니다.
LocalIntranet_Zone 그룹 같은 부모 그룹이 더는 존재하지 않으면 이 그룹을 다시 만들어야 합니다. 이 경우 Nothing 권한 집합을 사용해야 합니다. Nothing 권한 집합을 사용하면 관리자가 코드 그룹을 삭제하여 해제한 기본 권한이 적용되지 않습니다. 예를 들어 관리자가 LocalIntranet_Zone을 삭제하면 모든 로컬 인트라넷 코드가 실행되지 않습니다. 코드 그룹을 다시 만들고 Nothing 권한 집합을 사용하는 경우 이전에 적용되지 않은 권한은 추가되지 않습니다.
배치 파일에서 정책 변경 경고를 해제한 경우 처음에 이 경고가 설정되어 있었으면 경고를 나중에 다시 설정해야 합니다. 이렇게 하면 배치 파일이 중지되지 않고 사용자의 입력을 기다립니다. 이 설정은 현재 사용자뿐만 아니라 모든 사용자에게 적용됩니다. 자세한 내용은 방법: Caspol.exe를 사용하여 정책 변경 경고 해제를 참조하십시오.
Caspol.exe를 사용하는 경우 기본값을 사용하지 말고 수정할 정책 수준(엔터프라이즈, 컴퓨터 또는 사용자)을 명시적으로 지정해야 합니다. 기본값이 수정하는 정책에 맞지 않을 수도 있습니다. 자세한 내용은 보안 정책 수준을 참조하십시오.
Exclusive 또는 Level-Final 특성은 이 특성이 반드시 필요한 경우가 아니면 사용하지 말아야 합니다. 이러한 특성을 사용하면 새 코드 그룹을 추가할 때 예기치 않은 동작이 발생할 수 있기 때문입니다. 자세한 내용은 코드 그룹 특성을 참조하십시오.
참고 항목
개념
Office 솔루션 실행을 위한 보안 요구 사항(2003 시스템)