Caspol.exe(코드 액세스 보안 정책 도구)Caspol.exe (Code Access Security Policy Tool)

CAS(코드 액세스 보안 정책 도구)(Caspol.exe)를 사용하면 사용자나 관리자가 컴퓨터 정책 수준, 사용자 정책 수준 및 엔터프라이즈 정책 수준의 보안 정책을 수정할 수 있습니다.The Code Access Security (CAS) Policy tool (Caspol.exe) enables users and administrators to modify security policy for the machine policy level, the user policy level, and the enterprise policy level.

중요

.NET Framework 4.NET Framework 4부터는 Caspol.exe가 CAS 정책에 영향을 주려면 <legacyCasPolicy> 요소true로 설정해야 합니다.Starting with the .NET Framework 4.NET Framework 4, Caspol.exe does not affect CAS policy unless the <legacyCasPolicy> element is set to true. CasPol.exe에 의해 표시 또는 수정되는 모든 설정은 CAS 정책을 사용하도록 선택하는 애플리케이션에만 영향을 줍니다.Any settings shown or modified by CasPol.exe will only affect applications that opt into using CAS policy. 자세한 내용은 보안 변경 내용을 참조하세요.For more information, see Security Changes.

참고

64비트 컴퓨터에 64비트 및 32비트 버전의 보안 정책이 포함됩니다.64-bit computers include both 64-bit and 32-bit versions of security policy. 정책 변경 내용을 32비트와 64비트 애플리케이션에 적용하도록 하려면, Caspol.exe의 32비트와 64비트 버전을 모두 실행해야 합니다.To ensure that your policy changes apply to both 32-bit and 64-bit applications, run both the 32-bit and 64-bit versions of Caspol.exe.

코드 액세스 보안 정책 도구는 .NET Framework와 Visual Studio와 함께 자동으로 설치됩니다.The Code Access Security Policy tool is automatically installed with the .NET Framework and with Visual Studio. Caspol.exe는 32비트 시스템의 경우 %windir%\Microsoft.NET\Framework\version에서, 64비트 시스템의 경우 %windir%\Microsoft.NET\Framework64\version에서 찾을 수 있습니다.You can find Caspol.exe in %windir%\Microsoft.NET\Framework\version on 32-bit systems or %windir%\Microsoft.NET\Framework64\version on 64-bit systems. (예를 들어 위치는 64비트 시스템의 .NET Framework 4인 경우 %windir%\Microsoft.NET\Framework64\v4.030319\caspol.exe입니다.) 컴퓨터에 여러 .NET Framework 버전이 함께 실행 중인 경우 도구의 여러 버전을 설치할 수 있습니다.(For example, the location is %windir%\Microsoft.NET\Framework64\v4.030319\caspol.exe for the .NET Framework 4 on a 64-bit system.) Multiple versions of the tool might be installed if your computer is running multiple versions of the .NET Framework side by side. 설치 디렉터리에서 도구를 실행할 수 있습니다.You can run the tool from the installation directory. 하지만 설치 폴더로 이동할 필요가 없는 명령 프롬프트를 사용하는 것이 좋습니다.However, we recommend that you use the Command Prompts, which does not require you to navigate to the installation folder.

명령 프롬프트에 다음을 입력합니다.At the command prompt, type the following:

구문Syntax

caspol [options]  

매개 변수Parameters

옵션Option 설명Description
-addfulltrust assembly_file-addfulltrust assembly_file

또는or

-af assembly_file-af assembly_file
사용자 지정 보안 개체(예: 사용자 지정 권한, 사용자 지정 멤버 자격 조건 등)를 구현하는 어셈블리를 특정 정책 수준에서 완전 신뢰 어셈블리 목록에 추가합니다.Adds an assembly that implements a custom security object (such as a custom permission or a custom membership condition) to the full trust assembly list for a specific policy level. assembly_file 인수는 추가할 어셈블리를 지정합니다.The assembly_file argument specifies the assembly to add. 이 파일은 강력한 이름으로 서명되어야 합니다.This file must be signed with a strong name. Sn.exe(강력한 이름 도구)를 사용하여 강력한 이름으로 어셈블리에 서명할 수 있습니다.You can sign an assembly with a strong name using the Strong Name Tool (Sn.exe).

사용자 지정 권한이 포함된 권한 집합을 정책에 추가할 때마다 해당 사용자 지정 권한을 구현하는 어셈블리를 해당 정책 수준의 완전 신뢰 목록에 추가해야 합니다.Whenever a permission set containing a custom permission is added to policy, the assembly implementing the custom permission must be added to the full trust list for that policy level. 보안 정책(예: 컴퓨터 정책)에 사용된 사용자 지정 보안 개체(예: 사용자 지정 코드 그룹, 멤버 자격 조건 등)를 구현하는 어셈블리는 항상 완전 신뢰 어셈블리 목록에 추가해야 합니다.Assemblies that implement custom security objects (such as custom code groups or membership conditions) used in a security policy (such as the machine policy) should always be added to the full trust assembly list. 주의: 사용자 지정 보안 개체를 구현하는 어셈블리가 다른 어셈블리를 참조하는 경우에는 먼저 참조되는 어셈블리를 완전 신뢰 어셈블리 목록에 추가해야 합니다.Caution: If the assembly implementing the custom security object references other assemblies, you must first add the referenced assemblies to the full trust assembly list. Visual Basic, C++ 및 JScript를 사용하여 만들어진 사용자 지정 보안 개체는 Microsoft.VisualBasic.dll, Microsoft.VisualC.dll 또는 Microsoft.JScript.dll을 각각 참조합니다.Custom security objects created using Visual Basic, C++, and JScript reference either Microsoft.VisualBasic.dll, Microsoft.VisualC.dll, or Microsoft.JScript.dll, respectively. 이러한 어셈블리는 기본적으로 완전 신뢰 어셈블리 목록에 들어 있지 않습니다.These assemblies are not in the full trust assembly list by default. 따라서 사용자 지정 보안 개체를 추가하기 전에 적절한 어셈블리를 완전 신뢰 목록에 추가해야 합니다.You must add the appropriate assembly to the full trust list before you add a custom security object. 이렇게 하지 않으면 보안 시스템이 중단되어 모든 어셈블리를 로드할 수 없게 됩니다.Failure to do so will break the security system, causing all assemblies to fail to load. 이 경우 Caspol.exe -all -reset 옵션은 보안을 복구하지 않습니다.In this situation, the Caspol.exe -all -reset option will not repair security. 보안을 복구하려면 수동으로 보안 파일을 편집하여 사용자 지정 보안 개체를 제거해야 합니다.To repair security, you must manually edit the security files to remove the custom security object.
-addgroup {parent_label | parent_name} mship pset_name [flags]-addgroup {parent_label | parent_name} mship pset_name [flags]

또는or

-ag {parent_label | parent_name} mship pset_name [flags]-ag {parent_label | parent_name} mship pset_name [flags]
코드 그룹 계층 구조에 새로운 코드 그룹을 추가합니다.Adds a new code group to the code group hierarchy. parent_label 또는 parent_name을 지정할 수 있습니다.You can specify either the parent_label or parent_name. parent_label 인수는 추가되는 코드 그룹의 부모인 코드 그룹의 레이블(예: 1.The parent_label argument specifies the label (such as 1. 또는 1.1.)을 지정합니다.or 1.1.) of the code group that is the parent of the code group being added. parent_name 인수는 추가되는 코드 그룹의 부모 코드 그룹의 이름을 지정합니다.The parent_name argument specifies the name of the code group that is the parent of the code group being added. parent_labelparent_name은 서로 교환하여 사용할 수 있으므로 Caspol.exe에서 이 두 인수를 구별할 수 있어야 합니다.Because parent_label and parent_name can be used interchangeably, Caspol.exe must be able to distinguish between them. 따라서 parent_name은 숫자로 시작할 수 없습니다.Therefore, parent_name cannot begin with a number. 또한 parent_name에는 A-Z, 0-9 및 밑줄 문자만 사용할 수 있습니다.Additionally, parent_name can only contain A-Z, 0-9 and the underscore character.

mship 인수는 새 코드 그룹의 멤버 자격 조건을 지정합니다.The mship argument specifies the membership condition for the new code group. 자세한 내용은 이 섹션의 뒷부분에 나오는 mship 인수 표를 참조하세요.For more information, see the table of mship arguments later in this section.

pset_name 인수는 새 코드 그룹과 연결될 권한 집합의 이름입니다.The pset_name argument is the name of the permission set that will be associated with the new code group. 새 그룹에 대해 flags를 하나 이상 설정할 수도 있습니다.You can also set one or more flags for the new group. 자세한 내용은 이 섹션의 뒷부분에 나오는 flags 인수 표를 참조하세요.For more information, see the table of flags arguments later in this section.
-addpset {psfile | psfile pset_name}-addpset {psfile | psfile pset_name}

또는or

-ap {namedpsfile | psfile pset_name}-ap {namedpsfile | psfile pset_name}
명명된 새 권한 집합을 정책에 추가합니다.Adds a new named permission set to policy. 권한 집합은 XML로 작성되어 .xml 파일에 저장되어야 합니다.The permission set must be authored in XML and stored in an .xml file. XML 파일에 권한 집합의 이름이 포함되어 있으면 해당 파일(psfile)만 지정됩니다.If the XML file contains the name of the permission set, only that file (psfile) is specified. XML 파일에 권한 집합의 이름이 포함되어 있지 않으면 XML 파일 이름(psfile)과 권한 집합 이름(pset_name)을 모두 지정해야 합니다.If the XML file does not contain the permission set name, you must specify both the XML file name (psfile) and the permission set name (pset_name).

권한 집합에 사용되는 모든 권한은 전역 어셈블리 캐시에 포함된 어셈블리에 정의되어 있어야 합니다.Note that all permissions used in a permission set must be defined in assemblies contained in the global assembly cache.
-a[ll]-a[ll] 이 옵션 다음의 모든 옵션이 컴퓨터 정책, 사용자 정책 및 엔터프라이즈 정책에 적용됨을 나타냅니다.Indicates that all options following this one apply to the machine, user, and enterprise policies. -all 옵션은 항상 현재 로그온한 사용자의 정책을 참조합니다.The -all option always refers to the policy of the currently logged-on user. 현재 사용자 이외의 사용자에 대한 사용자 정책을 참조하려면 -customall 옵션을 참조하세요.See the -customall option to refer to the user policy of a user other than the current user.
-chggroup {label |name} {mship | pset_name |-chggroup {label |name} {mship | pset_name |

flags }flags }

또는or

-cg {label |name} {mship | pset_name |-cg {label |name} {mship | pset_name |

flags }flags }
코드 그룹의 멤버 자격 조건, 권한 집합 또는 플래그(exclusive, levelfinal, name 또는 description)의 설정을 변경합니다.Changes a code group's membership condition, permission set, or the settings of the exclusive, levelfinal, name, or description flags. label 또는 name 중 하나를 지정할 수 있습니다.You can specify either the label or name. label 인수는 코드 그룹의 레이블(예: 1.The label argument specifies the label (such as 1. 또는 1.1.)을 지정합니다.or 1.1.) of the code group. name 인수는 변경할 코드 그룹의 이름을 지정합니다.The name argument specifies the name of the code group to change. labelname은 서로 교환하여 사용할 수 있으므로 Caspol.exe에서 이 두 인수를 구별할 수 있어야 합니다.Because label and name can be used interchangeably, Caspol.exe must be able to distinguish between them. 따라서 name은 숫자로 시작할 수 없습니다.Therefore, name cannot begin with a number. 또한 name에는 A-Z, 0-9 및 밑줄 문자만 사용할 수 있습니다.Additionally, name can only contain A-Z, 0-9 and the underscore character.

pset_name 인수는 코드 그룹과 연결될 권한 집합의 이름을 지정합니다.The pset_name argument specifies the name of the permission set to associate with the code group. mshipflags 인수에 대한 내용은 이 섹션의 뒷부분에 나오는 표를 참조하세요.See the tables later in this section for information on the mship and flags arguments.
-chgpset psfile pset_name-chgpset psfile pset_name

또는or

-cp psfile pset_name-cp psfile pset_name
명명된 권한 집합을 변경합니다.Changes a named permission set. psfile 인수는 권한 집합을 새로 정의합니다. 즉, XML 형식의 serialize된 권한 집합 파일입니다.The psfile argument supplies the new definition for the permission set; it is a serialized permission set file in XML format. pset_name 인수는 변경할 권한 집합의 이름을 지정합니다.The pset_name argument specifies the name of the permission set you want to change.
-customall path-customall path

또는or

-ca path-ca path
이 옵션 다음의 모든 옵션이 컴퓨터 정책, 엔터프라이즈 정책 및 지정된 사용자 지정 사용자 정책에 적용됨을 나타냅니다.Indicates that all options following this one apply to the machine, enterprise, and the specified custom user policies. path 인수를 사용하여 사용자 지정 사용자의 보안 구성 파일에 대한 위치를 지정해야 합니다.You must specify the location of the custom user's security configuration file with the path argument.
-cu[stomuser] path-cu[stomuser] path 현재 Caspol.exe가 실행되고 있는 대상 사용자에 속하지 않는 사용자 지정 사용자 정책의 관리를 허용합니다.Allows the administration of a custom user policy that does not belong to the user on whose behalf Caspol.exe is currently running. path 인수를 사용하여 사용자 지정 사용자의 보안 구성 파일에 대한 위치를 지정해야 합니다.You must specify the location of the custom user's security configuration file with the path argument.
-enterprise-enterprise

또는or

-en-en
이 옵션 다음의 모든 옵션이 엔터프라이즈 수준 정책에 적용됨을 나타냅니다.Indicates that all options following this one apply to the enterprise level policy. 엔터프라이즈 관리자가 아닌 사용자는 엔터프라이즈 정책을 볼 수는 있지만 수정할 수 있는 권한은 없습니다.Users who are not enterprise administrators do not have sufficient rights to modify the enterprise policy, although they can view it. 비엔터프라이즈 시나리오에서, 이 정책은 기본적으로 컴퓨터 및 사용자 정책과 상충되지 않습니다.In nonenterprise scenarios, this policy, by default, does not interfere with machine and user policy.
-e[xecution] {on | off}-e[xecution] {on | off} 코드가 실행되기 전에 권한이 실행되도록 하는 메커니즘을 설정하거나 설정 해제합니다.Turns on or off the mechanism that checks for the permission to run before code starts to execute. 참고: .NET Framework 4.NET Framework 4 이상 버전에서는 이 스위치가 제거되었습니다.Note: This switch is removed in the .NET Framework 4.NET Framework 4 and later versions. 자세한 내용은 보안 변경 내용을 참조하세요.For more information, see Security Changes.
-f[orce]-f[orce] 도구의 자동 소멸 테스트 기능을 억제하고 해당 정책을 사용자가 지정한 대로 변경합니다.Suppresses the tool's self-destruct test and changes the policy as specified by the user. 일반적으로, Caspol.exe가 올바르게 실행되지 못하도록 하는 정책 변경 내용이 있는지 여부를 확인한 다음, 그러한 정책 변경 내용이 있으면 해당 정책 변경 내용을 저장하지 않고 오류 메시지를 인쇄합니다.Normally, Caspol.exe checks whether any policy changes would prevent Caspol.exe itself from running properly; if so, Caspol.exe does not save the policy change and prints an error message. 이로 인해 Caspol.exe가 실행되지 않더라도 Caspol.exe에서 강제로 정책을 변경하려면 –force 옵션을 사용합니다.To force Caspol.exe to change policy even if this prevents Caspol.exe itself from running, use the –force option.
-h[elp]-h[elp] Caspol.exe의 명령 구문 및 옵션을 표시합니다.Displays command syntax and options for Caspol.exe.
-l[ist]-l[ist] 지정된 컴퓨터, 사용자, 엔터프라이즈 또는 모든 정책 수준에 대한 코드 그룹 계층 구조와 권한 집합을 표시합니다.Lists the code group hierarchy and the permission sets for the specified machine, user, enterprise, or all policy levels. Caspol.exe를 사용하여 코드 그룹의 레이블을 먼저 표시한 다음 이름(null이 아닌 경우)을 표시합니다.Caspol.exe displays the code group's label first, followed by the name, if it is not null.
-listdescription-listdescription

또는or

-ld-ld
지정된 정책 수준에 대한 모든 코드 그룹 설명을 표시합니다.Lists all code group descriptions for the specified policy level.
-listfulltrust-listfulltrust

또는or

-lf-lf
지정된 정책 수준에서 완전 신뢰 어셈블리 목록의 내용을 표시합니다.Lists the contents of the full trust assembly list for the specified policy level.
-listgroups-listgroups

또는or

-lg-lg
지정된 정책 수준 또는 모든 정책 수준의 코드 그룹을 표시합니다.Displays the code groups of the specified policy level or all policy levels. Caspol.exe를 사용하여 코드 그룹의 레이블을 먼저 표시한 다음 이름(null이 아닌 경우)을 표시합니다.Caspol.exe displays the code group's label first, followed by the name, if it is not null.
-listpset 또는 -lp-listpset or -lp 지정된 정책 수준 또는 모든 정책 수준의 권한 집합을 표시합니다.Displays the permission sets for the specified policy level or all policy levels.
-m[achine]-m[achine] 이 옵션 다음의 모든 옵션이 컴퓨터 수준 정책에 적용됨을 나타냅니다.Indicates that all options following this one apply to the machine level policy. 관리자가 아닌 사용자는 컴퓨터 정책을 볼 수는 있지만 수정할 수 있는 권한은 없습니다.Users who are not administrators do not have sufficient rights to modify the machine policy, although they can view it. 관리자의 경우 -machine이 기본값입니다.For administrators, -machine is the default.
-polchgprompt {on | off}-polchgprompt {on | off}

또는or

-pp {on | off}-pp {on | off}
정책을 변경시키는 옵션을 사용하여 Caspol.exe를 실행할 때마다 표시되는 프롬프트를 활성화하거나 비활성화합니다.Enables or disables the prompt that is displayed whenever Caspol.exe is run using an option that would cause policy changes.
-quiet-quiet

또는or

-q-q
정책을 변경시키는 옵션에 대해 일반적으로 표시되는 프롬프트를 일시적으로 비활성화합니다.Temporarily disables the prompt that is normally displayed for an option that causes policy changes. 전역 변경 프롬프트 설정은 변경되지 않습니다.The global change prompt setting does not change. 모든 Caspol.exe 명령에 대한 프롬프트가 비활성화되지 않도록 하려면 개별 명령에 대해서만 이 옵션을 사용하십시오.Use the option only on a single command basis to avoid disabling the prompt for all Caspol.exe commands.
-r[ecover]-r[ecover] 백업 파일에서 정책을 복구합니다.Recovers policy from a backup file. 정책이 변경될 때마다 Caspol.exe를 실행하여 기존 정책을 백업 파일에 저장합니다.Whenever a policy change is made, Caspol.exe stores the old policy in a backup file.
-remfulltrust assembly_file-remfulltrust assembly_file

또는or

-rf assembly_file-rf assembly_file
정책 수준의 완전 신뢰 목록에서 어셈블리를 제거합니다.Removes an assembly from the full trust list of a policy level. 이 작업은 사용자 지정 권한이 포함된 권한 집합을 정책에서 더 이상 사용하지 않을 경우 수행해야 합니다.This operation should be performed if a permission set that contains a custom permission is no longer used by policy. 그러나 사용자 지정 권한을 구현하는 어셈블리가 아직 사용되고 있는 다른 사용자 지정 권한을 구현하지 않는 경우에만 해당 어셈블리를 완전 신뢰 목록에서 제거해야 합니다.However, you should remove an assembly that implements a custom permission from the full trust list only if the assembly does not implement any other custom permissions that are still being used. 어셈블리를 목록에서 제거할 때에는 해당 어셈블리가 종속되는 다른 어셈블리도 모두 제거해야 합니다.When you remove an assembly from the list, you should also remove any other assemblies that it depends on.
-remgroup {label |name}-remgroup {label |name}

또는or

-rg {label | name}-rg {label | name}
해당 레이블 또는 이름으로 지정된 코드 그룹을 제거합니다.Removes the code group specified by either its label or name. 지정된 코드 그룹에 자식 코드 그룹이 있으면 자식 코드 그룹도 모두 제거됩니다.If the specified code group has child code groups, Caspol.exe also removes all the child code groups.
-rempset pset_name-rempset pset_name

또는or

-rp pset_name-rp pset_name
지정된 권한 집합을 정책에서 제거합니다.Removes the specified permission set from policy. pset_name 인수는 제거할 권한 집합을 나타냅니다.The pset_name argument indicates which permission set to remove. Caspol.exe를 실행하여 코드 그룹과 관련되지 않은 권한 집합만 제거합니다.Caspol.exe removes the permission set only if it is not associated with any code group. 기본 제공 권한 집합은 제거할 수 없습니다.The default (built-in) permission sets cannot be removed.
-reset-reset

또는or

-rs-rs
정책을 기본 상태로 되돌린 다음 디스크에 보유합니다.Returns policy to its default state and persists it to disk. 이 기능은 변경된 정책을 복구할 수 없을 것 같아서 설치 기본값으로 다시 시작하려는 경우에 유용합니다.This is useful whenever a changed policy seems to be beyond repair and you want to start over with the installation defaults. 다시 설정은 또한 기본 정책을 시작 지점으로 사용하여 특정 보안 구성 파일을 수정하려는 경우에도 유용합니다.Resetting can also be convenient when you want to use the default policy as a starting point for modifications to specific security configuration files. 자세한 내용은 직접 보안 구성 파일 편집을 참조하세요.For more information, see Manually Editing the Security Configuration Files.
-resetlockdown-resetlockdown

또는or

-rsld-rsld
기본 상태의 보다 제한적인 버전에 정책을 반환하고 이를 디스크에 유지시킵니다. 이전 컴퓨터 정책의 백업을 만들어 security.config.bac라는 이름의 파일에 유지시킵니다.Returns policy to a more restrictive version of the default state and persists it to disk; creates a backup of the previous machine policy and persists it to a file called security.config.bac. 잠긴 정책은 기본 정책과 유사하지만 Local Intranet, Trusted SitesInternet 영역에서 코드에 권한을 부여하지 않으며 해당 코드 그룹에 자식 노드 그룹이 없다는 점에서 다릅니다.The locked down policy is similar to the default policy, except that the policy grants no permission to code from the Local Intranet, Trusted Sites, and Internet zones and the corresponding code groups have no child code groups.
-resolvegroup assembly_file-resolvegroup assembly_file

또는or

-rsg assembly_file-rsg assembly_file
특정 어셈블리(assembly_file)가 속한 코드 그룹을 표시합니다.Shows the code groups that a specific assembly (assembly_file) belongs to. 기본적으로 이 옵션은 어셈블리가 속한 컴퓨터, 사용자 및 엔터프라이즈 정책 수준을 표시합니다.By default, this option displays the machine, user, and enterprise policy levels to which the assembly belongs. 하나의 정책 수준만 보려면 -machine, -user 또는 -enterprise 옵션 중 하나와 함께 이 옵션을 사용합니다.To view only one policy level, use this option with either the -machine, -user, or -enterprise option.
-resolveperm assembly_file-resolveperm assembly_file

또는or

-rsp assembly_file-rsp assembly_file
해당 어셈블리의 실행이 가능한 경우, 지정된(또는 기본) 보안 정책 수준이 해당 어셈블리에 부여하는 모든 권한을 표시합니다.Displays all permissions that the specified (or default) level of security policy would grant the assembly if the assembly were allowed to run. assembly_file 인수는 해당 어셈블리를 지정합니다.The assembly_file argument specifies the assembly. -all 옵션을 지정하면 Caspol.exe에서 사용자, 컴퓨터 또는 엔터프라이즈 정책에 따라 해당 어셈블리의 권한을 계산합니다. 그렇지 않으면 기본 동작 규칙이 적용됩니다.If you specify the -all option, Caspol.exe calculates the permissions for the assembly based on user, machine, and enterprise policy; otherwise, default behavior rules apply.
-s[ecurity] {on | off}-s[ecurity] {on | off} 코드 액세스 보안을 설정하거나 설정 해제합니다.Turns code access security on or off. -s off 옵션을 지정하면 역할 기반 보안을 사용하도록 설정할 수 있습니다.Specifying the -s off option does not disable role-based security. 참고: .NET Framework 4.NET Framework 4 이상 버전에서는 이 스위치가 제거되었습니다.Note: This switch is removed in the .NET Framework 4.NET Framework 4 and later versions. 자세한 내용은 보안 변경 내용을 참조하세요.For more information, see Security Changes. 주의: 코드 액세스 보안을 해제하면 모든 코드 액세스 요청이 성공합니다.Caution: When code access security is disabled, all code access demands succeed. 그러나 코드 액세스 보안을 해제하면 시스템이 바이러스나 웜과 같은 악의적 코드를 사용한 공격에 취약해집니다.Disabling code access security makes the system vulnerable to attacks by malicious code such as viruses and worms. 보안을 해제하면 성능이 약간 향상되지만 다른 보안 방법을 통해 전반적인 시스템 보안을 유지한 경우에만 보안을 해제해야 합니다.Turning off security gains some extra performance but should only be done when other security measures have been taken to help make sure overall system security is not breached. 다른 보안 예방 조치의 예로 공용 네트워크에서 연결을 끊거나 컴퓨터를 물리적으로 보호하는 경우를 들 수 있습니다.Examples of other security precautions include disconnecting from public networks, physically securing computers, and so on.
-u[ser]-u[ser] 이 옵션 다음의 모든 옵션이 현재 Caspol.exe가 실행되고 있는 대상 사용자의 사용자 수준 정책에 적용됨을 나타냅니다.Indicates that all options following this one apply to the user level policy for the user on whose behalf Caspol.exe is running. 관리자가 아닌 사용자의 경우 -user가 기본값입니다.For nonadministrative users, -user is the default.
-?-? Caspol.exe의 명령 구문 및 옵션을 표시합니다.Displays command syntax and options for Caspol.exe.

코드 그룹의 멤버 자격 조건을 지정하는 mship 인수는 -addgroup-chggroup 옵션과 함께 사용할 수 있습니다.The mship argument, which specifies the membership condition for a code group, can be used with the -addgroup and -chggroup options. mship 인수는 .NET Framework 클래스로 구현됩니다.Each mship argument is implemented as a .NET Framework class. mship을 지정하려면 다음 인수 중 하나를 사용합니다.To specify mship, use one of the following.

인수Argument 설명Description
-allcode-allcode 모든 코드를 지정합니다.Specifies all code. 이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.AllMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.AllMembershipCondition.
-appdir-appdir 애플리케이션 디렉터리를 지정합니다.Specifies the application directory. –appdir를 멤버 자격 조건으로 지정하면 코드의 URL 증명 정보가 해당 코드의 애플리케이션 디렉터리 증명 정보와 비교됩니다.If you specify –appdir as the membership condition, the URL evidence of code is compared with the application directory evidence of that code. 두 증명 정보 값이 모두 동일하면 이 멤버 자격 조건이 충족됩니다.If both evidence values are the same, this membership condition is satisfied. 이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.ApplicationDirectoryMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.ApplicationDirectoryMembershipCondition.
-custom xmlfile-custom xmlfile 사용자 지정 멤버 자격 조건을 추가합니다.Adds a custom membership condition. 필수 xmlfile 인수는 사용자 지정 멤버 자격 조건의 XML serialization이 포함된 .xml 파일을 지정합니다.The mandatory xmlfile argument specifies the .xml file that contains XML serialization of the custom membership condition.
-hash hashAlg {-hex hashValue | -file assembly_file }-hash hashAlg {-hex hashValue | -file assembly_file } 지정된 어셈블리 해시가 포함된 코드를 지정합니다.Specifies code that has the given assembly hash. 해시를 코드 그룹 멤버 자격 조건으로 사용하려면 해시 값 또는 어셈블리 파일 중 하나를 지정해야 합니다.To use a hash as a code group membership condition, you must specify either the hash value or the assembly file. 이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.HashMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.HashMembershipCondition.
-pub { -cert cert_file_name |-pub { -cert cert_file_name |

-file signed_file_name | -hex hex_string }-file signed_file_name | -hex hex_string }
인증서 파일, 파일의 서명 또는 X509 인증서의 16진수 표시가 나타내는 것처럼 지정된 소프트웨어 게시자가 포함된 코드를 지정합니다.Specifies code that has the given software publisher, as denoted by a certificate file, a signature on a file, or the hexadecimal representation of an X509 certificate. 이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.PublisherMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.PublisherMembershipCondition.
-site website-site website 지정된 원본 사이트가 포함된 코드를 지정합니다.Specifies code that has the given site of origin. 예:For example:

-site** www.proseware.com

이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.SiteMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.SiteMembershipCondition.
-strong -file file_name {name | -noname} {version | -noversion}-strong -file file_name {name | -noname} {version | -noversion} 파일 이름, 문자열 형식의 어셈블리 이름 및 major.minor.build.revision 형식의 어셈블리 버전으로 지정된 강력한 이름의 코드를 지정합니다.Specifies code that has a specific strong name, as designated by the file name, the assembly name as a string, and the assembly version in the format major.minor.build.revision. 예:For example:

-strong -file myAssembly.exe myAssembly 1.2.3.4-strong -file myAssembly.exe myAssembly 1.2.3.4

이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.StrongNameMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.StrongNameMembershipCondition.
-url URL-url URL 지정된 URL에서 시작되는 코드를 지정합니다.Specifies code that originates from the given URL. URL은 http:// 또는 ftp://와 같은 프로토콜을 포함해야 합니다.The URL must include a protocol, such as http:// or ftp://. 또한 와일드카드 문자(*)를 사용하여 특정 URL에서 여러 어셈블리를 지정할 수 있습니다.Additionally, a wildcard character (*) can be used to specify multiple assemblies from a particular URL. 참고: URL은 여러 이름을 사용하여 식별될 수 있으므로 URL을 멤버 자격 조건으로 사용하는 것은 코드의 ID를 정확하게 식별하기 위한 안전한 방법이 아닙니다.Note: Because a URL can be identified using multiple names, using a URL as a membership condition is not a safe way to ascertain the identity of code. 가능한 경우 강력한 이름 멤버 자격 조건, 게시자 멤버 자격 조건 또는 해시 멤버 자격 조건을 사용합니다.Where possible, use a strong name membership condition, a publisher membership condition, or the hash membership condition.

이 멤버 자격 조건에 대한 자세한 내용은 System.Security.Policy.UrlMembershipCondition을 참조하세요.For more information about this membership condition, see System.Security.Policy.UrlMembershipCondition.
-zone zonename-zone zonename 지정된 원본 영역이 포함된 코드를 지정합니다.Specifies code with the given zone of origin. zonename 인수는 다음 값 중 하나가 될 수 있습니다. MyComputer, 인트라넷, 트러스트됨, 인터넷 또는 트러스트되지 않음.The zonename argument can be one of the following values: MyComputer, Intranet, Trusted, Internet, or Untrusted. 이 멤버 자격 조건에 대한 자세한 내용은 ZoneMembershipCondition 클래스를 참조하십시오.For more information about this membership condition, see the ZoneMembershipCondition Class.

–addgroup–chggroup 옵션과 함께 사용할 수 있는 flags 인수는 다음 중 하나를 사용하여 지정합니다.The flags argument, which can be used with the –addgroup and –chggroup options, is specified using one of the following.

인수Argument 설명Description
-description "description"-description "description" –addgroup 옵션과 함께 사용하는 경우 추가할 코드 그룹에 대한 설명을 지정합니다.If used with the –addgroup option, specifies the description for a code group to add. –chggroup 옵션과 함께 사용하는 경우 편집할 코드 그룹에 대한 설명을 지정합니다.If used with the –chggroup option, specifies the description for a code group to edit. description 인수는 큰따옴표로 묶어야 합니다.The description argument must be enclosed in double quotes.
-exclusive {on|off}-exclusive {on|off} on으로 설정하면 일부 코드가 코드 그룹의 멤버 자격 조건을 충족할 때 추가하거나 수정하는 코드 그룹과 연결된 권한 집합만 고려합니다.When set to on, indicates that only the permission set associated with the code group you are adding or modifying is considered when some code fits the membership condition of the code group. off로 설정하면 Caspol.exe는 정책 수준에서 일치하는 모든 코드 그룹의 권한 집합을 고려합니다.When this option is set to off, Caspol.exe considers the permission sets of all matching code groups in the policy level.
-levelfinal {on|off}-levelfinal {on|off} on으로 설정하면 추가 또는 수정된 코드 그룹이 발생하는 정책 수준의 하위 수준은 고려되지 않음을 나타냅니다.When set to on, indicates that no policy level below the level in which the added or modified code group occurs is considered. 일반적으로 이 옵션은 컴퓨터 정책 수준에서 사용됩니다.This option is typically used at the machine policy level. 예를 들어, 컴퓨터 수준의 코드 그룹에 이 플래그를 설정하고 일부 코드가 이 코드 그룹의 멤버 자격 조건과 일치하면 이 코드에 대해 사용자 수준 정책이 계산되거나 적용되지 않습니다.For example, if you set this flag for a code group at the machine level and some code matches this code group's membership condition, Caspol.exe does not calculate or apply the user level policy for this code.
-name "name"-name "name" –addgroup 옵션과 함께 사용하는 경우 추가할 코드 그룹의 스크립팅 이름을 지정합니다.If used with the –addgroup option, specifies the scripting name for a code group to add. -chggroup 옵션과 함께 사용하는 경우 편집할 코드 그룹의 스크립팅 이름을 지정합니다.If used with the -chggroup option, specifies the scripting name for a code group to edit. name 인수는 큰따옴표로 묶어야 합니다.The name argument must be enclosed in double quotes. 또한 name 인수는 숫자로 시작할 수 없으며, A-Z, 0-9 및 밑줄 문자만 사용할 수 있습니다.The name argument cannot begin with a number, and can only contain A-Z, 0-9, and the underscore character. 코드 그룹은 숫자 레이블 대신 이 name으로 참조될 수 있습니다.Code groups can be referred to by this name instead of by their numeric label. name은 스크립팅 용도로도 매우 유용합니다.The name is also highly useful for scripting purposes.

주의Remarks

보안 정책은 컴퓨터 정책, 사용자 정책 및 엔터프라이즈 정책의 세 가지 정책 수준으로 표현됩니다.Security policy is expressed using three policy levels: machine policy, user policy, and enterprise policy. 어셈블리에서 받아들이는 권한 집합은 이러한 세 가지 정책 수준에서 허용하는 권한 집합의 교집합 부분에 의해 결정됩니다.The set of permissions that an assembly receives is determined by the intersection of the permission sets allowed by these three policy levels. 각 정책 수준은 코드 그룹의 계층 구조로 표시됩니다.Each policy level is represented by a hierarchical structure of code groups. 모든 코드 그룹에는 해당 그룹의 멤버가 되는 코드를 결정하는 멤버 자격 조건이 있습니다.Every code group has a membership condition that determines which code is a member of that group. 또한 명명된 권한 집합이 각 코드 그룹에 연결됩니다.A named permission set is also associated with each code group. 이 권한 집합에서는 런타임에서 해당 멤버 자격 조건을 충족하는 코드에 허용할 권한을 지정합니다.This permission set specifies the permissions the runtime allows code that satisfies the membership condition to have. 코드 그룹 계층 구조에서는 해당 코드 그룹에 연결된 명명된 권한 집합과 함께 보안 정책의 각 수준을 정의하고 유지합니다.A code group hierarchy, along with its associated named permission sets, defines and maintains each level of security policy. –user, -customuser, –machine-enterprise 옵션을 사용하여 보안 정책의 수준을 설정할 수 있습니다.You can use the –user, -customuser, –machine and -enterprise options to set the level of security policy.

보안 정책 및 런타임에서 코드에 부여할 권한을 결정하는 방법에 대한 자세한 내용은 보안 정책 관리를 참조하세요.For more information about security policy and how the runtime determines which permissions to grant to code, see Security Policy Management.

코드 그룹 및 권한 집합 참조Referencing Code Groups and Permission Sets

계층 구조의 코드 그룹을 쉽게 참조하려면 -list 옵션을 사용하여 숫자 레이블(예: 1, 1.1, 1.1.1 등)과 함께 들여쓴 코드 그룹 목록을 표시합니다.To facilitate references to code groups in a hierarchy, the -list option displays an indented list of code groups along with their numerical labels (1, 1.1, 1.1.1, and so on). 코드 그룹을 대상으로 하는 다른 명령줄 작업에서도 숫자 레이블을 사용하여 특정 코드 그룹을 참조합니다.The other command-line operations that target code groups also use the numerical labels to refer to specific code groups.

명명된 권한 집합은 이름으로 참조됩니다.Named permission sets are referenced by their names. -list 옵션은 코드 그룹 목록 다음에 해당 정책에서 사용할 수 있는 명명된 권한 집합 목록을 표시합니다.The –list option displays the list of code groups followed by a list of named permission sets available in that policy.

Caspol.exe 동작Caspol.exe Behavior

-s[ecurity] {on | off}를 제외한 모든 옵션에서는 Caspol.exe가 설치되어 있는 .NET Framework 버전을 사용합니다.All options except -s[ecurity] {on | off} use the version of the .NET Framework that Caspol.exe was installed with. X 버전의 런타임과 함께 설치된 Caspol.exe를 실행하면 해당 버전에만 변경 내용이 적용됩니다.If you run the Caspol.exe that was installed with version X of the runtime, the changes apply only to that version. 설치된 다른 버전의 런타임(있는 경우)에는 적용되지 않습니다.Other side-by-side installations of the runtime, if any, are not affected. 특정 런타임 버전의 디렉터리가 아닌 다른 경로에서 명령줄을 사용하여 Caspol.exe를 실행하면 이 도구는 해당 경로의 첫 번째 런타임 버전 디렉터리(대개, 최근에 설치된 런타임 버전)에서 실행됩니다.If you run Caspol.exe from the command line without being in a directory for a specific runtime version, the tool is executed from the first runtime version directory in the path (usually the most recent runtime version installed).

-s[ecurity] {on | off} 옵션은 컴퓨터 전체에 영향을 주는 작업입니다.The -s[ecurity] {on | off} option is a computer-wide operation. 코드 액세스 보안을 해제하면 컴퓨터의 모든 관리 코드와 모든 사용자에 대한 보안 검사가 중단됩니다.Turning off code access security terminates security checks for all managed code and for all users on the computer. .NET Framework의 side-by-side 버전이 설치된 경우 이 명령을 실행하면 컴퓨터에 설치된 모든 버전의 보안이 해제됩니다.If side-by-side versions of the .NET Framework are installed, this command turns off security for every version installed on the computer. -list 옵션은 해제된 보안 상태를 표시하지만, 이 방법 이외에는 다른 사용자가 보안이 해제되었음을 알 수 없습니다.Although the -list option shows that security is turned off, nothing else clearly indicates for other users that security has been turned off.

관리자 권한이 없는 사용자가 Caspol.exe를 실행할 때 –machine 옵션이 지정되어 있지 않으면 모든 옵션에서 사용자 수준 정책을 참조합니다.When a user without administrative rights runs Caspol.exe, all options refer to the user level policy unless the –machine option is specified. 또한 관리자가 Caspol.exe를 실행할 때 –user 옵션이 지정되어 있지 않으면 모든 옵션에서 컴퓨터 정책을 참조합니다.When an administrator runs Caspol.exe, all options refer to the machine policy unless the –user option is specified.

Caspol.exe가 작동하려면 Everything 권한 집합과 동일한 권한 집합을 Caspol.exe에 부여해야 합니다.Caspol.exe must be granted the equivalent of the Everything permission set to function. 이 도구에는 Caspol.exe를 실행하는 데 필요한 권한을 부여하지 않는 방식으로 정책이 수정되지 않도록 하는 보호 메커니즘이 있습니다.The tool has a protective mechanism that prevents policy from being modified in ways that would prevent Caspol.exe from being granted the permissions it needs to run. 즉, 변경을 시도하면 Caspol.exe는 요청한 정책 변경으로 인해 해당 도구가 중단되므로 해당 변경 내용이 거부됨을 알립니다.If you try to make such changes, Caspol.exe notifies you that the requested policy change will break the tool, and the policy change is rejected. –force 옵션을 사용하여 지정된 명령에 대해 이 보호 메커니즘을 해제할 수 있습니다.You can turn this protective mechanism off for a given command by using the –force option.

직접 보안 구성 파일 편집Manually Editing the Security Configuration Files

세 가지 보안 구성 파일은 각각 Caspol.exe로 지원되는 세 가지 정책 수준(컴퓨터 정책, 특정 사용자 정책 및 엔터프라이즈 정책)에 해당합니다.Three security configuration files correspond to the three policy levels supported by Caspol.exe: one for the machine policy, one for a given user's policy, and one for the enterprise policy. 이러한 파일은 Caspol.exe를 사용하여 컴퓨터, 사용자 또는 엔터프라이즈 정책이 변경된 경우에만 디스크에 만들어집니다.These files are created on disk only when machine, user, or enterprise policy is changed using Caspol.exe. 필요한 경우 Caspol.exe의 –reset 옵션을 사용하여 기본 보안 정책을 디스크에 저장할 수 있습니다.You can use the –reset option in Caspol.exe to save the default security policy to disk, if needed.

대부분의 경우에는 보안 구성 파일을 직접 편집하지 않는 것이 좋습니다.In most cases, manually editing the security configuration files is not recommended. 그러나 관리자가 특정 사용자에 대해 보안 구성을 편집하려는 경우처럼 이러한 파일들을 꼭 수정해야 하는 경우도 있습니다.But there might be scenarios in which modifying these files becomes necessary, such as when an administrator wants to edit the security configuration for a particular user.

예제Examples

-addfulltrust-addfulltrust

사용자 지정 권한이 포함된 권한 집합이 컴퓨터 정책에 추가된 것으로 가정합니다.Assume that a permission set containing a custom permission has been added to machine policy. 이 사용자 지정 권한은 MyPerm.exeMyPerm.exeMyOther.exe 참조 클래스에서 구현됩니다.This custom permission is implemented in MyPerm.exe, and MyPerm.exe references classes in MyOther.exe. 두 어셈블리는 모두 완전 신뢰 어셈블리 목록에 추가되어야 합니다.Both assemblies must be added to the full trust assembly list. 다음 명령을 사용하여 MyPerm.exe 어셈블리를 컴퓨터 정책에 대해 완전 신뢰 목록에 추가합니다.The following command adds the MyPerm.exe assembly to the full trust list for the machine policy.

caspol -machine -addfulltrust MyPerm.exe  

다음 명령을 사용하여 MyOther.exe 어셈블리를 컴퓨터 정책에 대해 완전 신뢰 목록에 추가합니다.The following command adds the MyOther.exe assembly to the full trust list for the machine policy.

caspol -machine -addfulltrust MyOther.exe  

-addgroup-addgroup

다음 명령을 사용하여 컴퓨터 정책 코드 그룹 계층 구조의 루트에 자식 코드 그룹을 추가합니다.The following command adds a child code group to the root of the machine policy code group hierarchy. 새 코드 그룹은 Internet 영역의 멤버이며 Execution 권한 집합에 연결됩니다.The new code group is a member of the Internet zone and is associated with the Execution permission set.

caspol -machine -addgroup 1.  -zone Internet Execution  

다음 명령은 공유 \\netserver\netshare에 로컬 인트라넷 권한을 제공하는 자식 코드 그룹을 추가합니다.The following command adds a child code group that gives the share \\netserver\netshare local intranet permissions.

caspol -machine -addgroup 1. -url \\netserver\netshare\* LocalIntranet  

-addpset-addpset

다음 명령을 사용하여 사용자 정책에 Mypset 권한 집합을 추가합니다.The following command adds the Mypset permission set to the user policy.

caspol -user -addpset Mypset.xml Mypset  

-chggroup-chggroup

다음 명령은 1.2. 레이블이 지정된 코드 그룹의 사용자 정책에 포함된 권한 집합을The following command changes the permission set in the user policy of the code group labeled 1.2. Execution 권한 집합으로 변경합니다.to the Execution permission set.

caspol -user -chggroup 1.2. Execution  

다음 명령은 1.2.1. 레이블이 지정된 코드 그룹의 기본 정책에 포함된 멤버 자격 조건과The following command changes the membership condition in the default policy of the code group labeled 1.2.1. exclusive 플래그 설정을 변경합니다.and changes the setting of the exclusive flag. 즉 멤버 자격 조건이 Internet영역에서 시작하고 exclusive 플래그는 on으로 설정된 코드로 정의됩니다.The membership condition is defined to be code that originates from the Internet zone and the exclusive flag is switched on.

caspol -chggroup 1.2.1. -zone Internet -exclusive on  

-chgpset-chgpset

다음 명령을 사용하여 Mypset이라는 권한 집합을 newpset.xml에 포함된 권한 집합으로 변경합니다.The following command changes the permission set with name Mypset to the permission set contained in newpset.xml. 현재 릴리스에서는 코드 그룹 계층 구조에서 사용할 권한 집합을 변경할 수 없습니다.Note that the current release does not support changing permission sets that are being used by the code group hierarchy.

caspol -chgpset Mypset newpset.xml  

-force-force

다음 명령은 사용자 정책의 루트 코드 그룹(1 레이블 지정)이 Nothing으로 명명된 권한 집합에 연결되도록 합니다.The following command causes the user policy's root code group (labeled 1) to be associated with the Nothing named permission set. 이렇게 하면 Caspol.exe가 실행되지 않습니다.This prevents Caspol.exe from running.

caspol -force -user -chggroup 1 Nothing  

-recover-recover

다음 명령을 사용하여 가장 최근에 저장한 컴퓨터 정책을 복구합니다.The following command recovers the most recently saved machine policy.

caspol -machine -recover  

-remgroup-remgroup

다음 명령을 사용하여 레이블이 1.1.인 코드 그룹을 제거합니다.The following command removes the code group labeled 1.1. 이 코드 그룹에 자식 코드 그룹이 있으면 해당 그룹도 삭제됩니다.If this code group has any child code groups, those groups are also deleted.

caspol -remgroup 1.1.  

-rempset-rempset

다음 명령은 사용자 정책에서 Execution 권한 집합을 제거합니다.The following command removes the Execution permission set from the user policy.

caspol -user -rempset Execution  

다음 명령을 사용하여 사용자 정책 수준에서 Mypset을 제거합니다.The following command removes Mypset from the user policy level.

caspol -rempset MyPset  

-resolvegroup-resolvegroup

다음 명령은 myassembly가 속한 컴퓨터 정책의 모든 코드 그룹을 표시합니다.The following command shows all code groups of the machine policy that myassembly belongs to.

caspol -machine -resolvegroup myassembly  

다음 명령을 사용하여 myassembly가 속해 있는 컴퓨터 정책, 엔터프라이즈 정책 및 특정 사용자 지정 사용자 정책의 모든 코드 그룹을 표시합니다.The following command shows all code groups of the machine, enterprise, and specified custom user policy that myassembly belongs to.

caspol -customall "c:\config_test\security.config" -resolvegroup myassembly  

-resolveperm-resolveperm

다음 명령을 사용하여 컴퓨터 정책 수준 및 사용자 정책 수준에 따라 testassembly에 대한 권한을 계산합니다.The following command calculates the permissions for testassembly based on the machine and user policy levels.

caspol -all -resolveperm testassembly  

참고 항목See also