다음을 통해 공유


ACL 기술 아키텍처

업데이트: 2007년 11월

System.Security.AccessControl 네임스페이스는 Windows ACL(액세스 제어 목록) 보안 시스템의 복잡성 대부분을 추상화하는 편리한 클래스를 통해 ACL에 액세스할 수 있도록 합니다. 또한 System.Security.AccessControl 네임스페이스에는 Windows ACL 보안 시스템에 대한 고급 액세스를 제공하는 여러 클래스가 들어 있습니다.

.NET Framework에서는 다음 리소스의 ACL에 대한 액세스를 제공합니다.

  • 암호화 키

  • 디렉터리

  • 이벤트 대기 핸들

  • 파일

  • 뮤텍스

  • 레지스트리 키

  • 세마포

이러한 각 리소스에는 ACL을 만들고 수정하는 데 사용할 수 있는 여러 클래스가 있습니다.

ACL 클래스의 계층 구조

대부분의 경우에는 고급 클래스 대신 더 높은 수준의 추상화된 클래스를 사용하여 ACL을 만들고 수정할 수 있습니다. 각 리소스의 경우 더 높은 수준의 클래스는 다음과 같은 형식을 사용합니다.

  • DACL(임의 액세스 제어 목록) 및 SACL(시스템 액세스 제어 목록)을 캡슐화하는 클래스입니다. 이 클래스는 <Resource Name>Security 이름을 사용합니다. 예를 들어, FileSecurityDirectorySecurity 클래스는 파일과 폴더의 DACL과 SACL을 캡슐화합니다.

  • ACE(액세스 제어 항목)를 캡슐화하는 클래스입니다. 이 클래스는 <Resource Name>AccessRule 이름을 사용합니다.

  • 감사 ACE를 캡슐화하는 클래스입니다. 이 클래스는 <Resource Name>AuditRule 이름을 사용합니다.

  • 특정 액세스와 감사 규칙을 만들 수 있는 여러 가지 열거형입니다.

  • 모든 고급 ACL 클래스의 전체 목록을 보려면 ACL 기술 요약을 참조하십시오.

ACL에 ACE 추가

액세스 규칙 또는 감사 규칙 클래스 중 하나를 사용하여 ACE를 만든 후 규칙을 리소스에 추가하거나 규칙을 사용하여 리소스에서 기존 규칙을 제거할 수 있습니다. 예를 들어, 관리자만 파일을 열 수 있도록 지정하는 FileSystemAccessRule 클래스를 사용하여 규칙을 만들 수 있습니다. 그런 다음 해당 규칙을 FileSecurity 개체에 추가하거나 FileSecurity 개체에서 비슷한 규칙을 제거할 수 있습니다.

액세스 권한을 부여하는 ACE를 추가해도 거부 규칙이 허용 규칙보다 항상 우선하므로 보안 주체가 액세스를 수신하지 못할 수도 있습니다. 예를 들어, 시스템 계정에 대한 허용 액세스 규칙을 파일에 추가한 경우에도 다른 규칙에 의해 이 파일에 대한 액세스가 거부될 수 있습니다.

리소스와 연결된 각 <Resource Name>Security 개체는 액세스 규칙과 감사 규칙을 추가하거나 제거할 수 있도록 다음 메서드를 제공합니다.

메서드

설명

AddAccessRule

-및-

AddAuditRule

새 규칙과 병합할 수 있는 액세스 또는 감사 규칙을 검색합니다. 아무 것도 발견되지 않으면 새 규칙을 추가합니다.

SetAccessRule

지정한 규칙과 같은 사용자와 AccessControlType 값(Allow 또는 Deny)을 가진 모든 액세스 제어 규칙을 제거한 다음 지정한 규칙을 추가합니다.

SetAuditRule

AuditFlags 값에 상관없이 지정한 규칙과 같은 사용자를 가진 모든 감사 규칙을 제거한 다음 지정한 규칙을 추가합니다.

ResetAccessRule

AccessControlType 값에 상관없이 지정한 규칙과 같은 사용자를 가진 모든 액세스 제어 규칙을 제거한 다음 지정한 규칙을 추가합니다.

RemoveAccessRule

지정한 규칙과 같은 사용자와 AccessControlType 값(Allow 또는 Deny)을 가지고 있고 호환되는 상속 및 전파 플래그가 설정된 액세스 제어 규칙을 검색합니다. 해당 규칙이 있으면 지정한 액세스 규칙에 포함된 권한이 규칙에서 제거됩니다.

RemoveAuditRule

지정한 규칙과 같은 사용자를 가지고 있고 호환되는 상속 및 전파 플래그가 설정된 감사 제어 규칙을 검색합니다. 해당 규칙이 있으면 지정한 규칙에 포함된 권한이 규칙에서 제거됩니다.

RemoveAccessRuleAll

지정한 규칙과 같은 사용자와 AccessControlType 값(Allow 또는 Deny)을 가진 모든 액세스 규칙을 검색하고 해당 규칙이 있을 경우 제거합니다.

RemoveAuditRuleAll

지정한 규칙과 같은 사용자를 가진 모든 감사 규칙을 검색하고 해당 규칙이 있을 경우 제거합니다.

RemoveAccessRuleSpecific

-및-

RemoveAuditRuleSpecific

지정한 규칙과 정확히 일치하는 액세스 또는 감사 규칙을 검색하고 해당 규칙을 있을 경우 제거합니다.

AddAccessRule

-및-

AddAuditRule

새 규칙과 병합할 수 있는 액세스 또는 감사 규칙을 검색합니다. 아무 것도 발견되지 않으면 새 규칙을 추가합니다.

ACL 가져오기 및 설정

보호되는 각 리소스에는 리소스와 연결된 <Resource Name>Security 개체를 가져오고 설정하는 메서드가 있습니다. 특정 리소스에 대한 기존 ACL을 검색하려면 리소스와 연결된 GetAccessControl 메서드 중 하나를 사용합니다. 변경 내용을 리소스로 다시 전파하려면 리소스와 연결된 SetAccesscontrol 메서드 중 하나를 사용합니다. set 메서드 중 하나를 사용하여 변경 내용을 명시적으로 다시 적용해야 변경 내용이 리소스에 다시 전파됩니다.

보호되는 각 리소스에 대한 모든 get 및 set 메서드의 전체 목록을 보려면 ACL 기술 요약을 참조하십시오.

참고 항목

기타 리소스

ACL 기술 개요

.NET Framework의 보안