방법: Caspol.exe를 사용하여 어셈블리 권한 문제 분석
코드 액세스 보안 정책 도구(Caspol.exe)를 사용하여 어셈블리가 실행되지 않거나, 보호된 리소스에 액세스하거나, 실행되지 말아야 할 때 실행되는 문제를 해결할 수 있습니다.
실행되지 않는 어셈블리의 문제를 분석하려면
–all 및 –resolveperm 옵션을 사용하여 정책이 어셈블리에 부여한 권한을 확인합니다.
caspol –all –resolveperm assembly-file
실행 플래그가 SecurityPermission 클래스에서 설정되어 있는지 확인하여 어셈블리가 실행 권한을 가지고 있는지 여부를 결정합니다. 어셈블리에 실행 권한이 있는 경우 보안 권한 집합이 제한되어 있지 않거나 플래그 특성이 실행 플래그를 포함합니다.
어셈블리가 보호된 리소스에 액세스(예: 디스크에 액세스, 창 만들기, 레지스트리에 쓰기 등)해야 하는 경우 해당 권한이 설정되어 있는지 확인합니다.
엔터프라이즈, 컴퓨터 및 사용자 정책 수준에 의해 부여된 권한은 논리곱 권한이기 때문에 어셈블리가 권한을 받기 위해서는 권한이 모든 수준에서 설정되어야 합니다. 어셈블리가 불충분한 권한을 가지고 있는 경우 각 정책 수준에서 어셈블리에 부여된 권한을 확인합니다.
caspol –enterprise –resolveperm assembly-file
caspol –machine –resolveperm assembly-file
caspol –user –resolveperm assembly-file
어셈블리가 멤버 자격 조건이 너무 제한되어 있는 코드 그룹의 일부이거나 또는 어셈블리와 연결된 권한 집합에 어셈블리가 작동하는 데 필요한 권한이 포함되지 않은 코드 그룹의 일부인 경우, 어셈블리가 제대로 실행되지 않습니다. 코드에 부여된 권한이 불충분한 경우 어셈블리에 필요한 권한을 부여하는 새로운 코드 그룹을 만들 수 있습니다.
또한, 기존의 코드 그룹 중 하나와 연결된 권한 집합 또는 멤버 자격 조건을 수정하여 어셈블리가 알맞은 권한을 받을 수 있도록 할 수 있습니다. 이를 수행하는 방법에 대한 자세한 내용은 방법: Caspol.exe를 사용하여 코드 그룹 변경을 참조하십시오.
보호된 리소스에 액세스하거나 실행되지 말아야 할 때 실행되는 어셈블리를 분석하려면
- 어셈블리가 실행은 되지만 실행되어서는 안 되거나 어셈블리가 액세스하지 말아야 하는 리소스(대화 상자를 만들기 위해 필요한 리소스 등)에 액세스하는 경우, 어셈블리에 너무 많은 권한이 부여된 것일 수 있습니다. –resolveperm 옵션을 사용하여 어셈블리에 어떤 권한이 부여되었는지 확인합니다. 그런 다음, –resolvegroups 옵션을 사용하여 어셈블리가 어떤 코드 그룹에 속해 있는지 확인합니다. 해당 코드 그룹의 멤버 자격 조건이나 연결된 권한 집합을 변경하여 어셈블리에 부여되는 권한을 제한합니다.