다음을 통해 공유


ACL 기술 요약

업데이트: 2007년 11월

이 항목에서는 DACL(임의 액세스 제어 목록), SACL(시스템 액세스 제어 목록) 및 ACE(액세스 제어 항목)의 관리되는 API에 대한 정보를 요약하여 설명합니다. System.Security.AccessControl 네임스페이스의 클래스를 사용하여 .NET Framework 버전 2.0 이상에서 여러 형식의 보호되는 리소스에 대한 DACL, SACL 및 ACE에 프로그래밍 방식으로 액세스할 수 있습니다.

관리되는 ACL API에는 다양한 세부 정보를 관리하는 여러 클래스가 있어 ACL에 대한 작업을 관리되지 않는 구현보다 간편하게 수행할 수 있습니다. 예를 들어, 관리되는 구현에서는 null DACL을 만들 수 없으므로 순서가 잘못 지정된 ACE로 인해 안전하지 않은 DACL이 만들어지는 것에 대해 더 이상 신경을 쓸 필요가 없습니다.

키워드

ACL(액세스 제어 목록), DACL(임의 액세스 제어 목록), SACL(시스템 액세스 제어 목록), ACE(액세스 제어 항목), 감사 ACE

네임스페이스

System.Security.AccessControl

관련 기술

.NET Framework의 보안

배경

줄여서 ACL이라고도 하는 DACL(임의 액세스 제어 목록)은 Microsoft Windows NT 이상에서 파일과 폴더 같은 리소스를 보호하는 데 사용되는 메커니즘입니다. DACL에는 보안 주체(대개 사용자 계정 또는 계정 그룹)를 리소스 사용 관리 규칙과 연결하는 여러 ACE(액세스 제어 항목)가 포함되어 있습니다. DACL 및 ACE를 사용하면 사용자 계정과 연결할 수 있는 권한을 기준으로 리소스에 대한 권한을 허용하거나 거부할 수 있습니다. 예를 들어, ACE를 만들어 파일의 DACL에 적용하면 관리자를 제외한 다른 사람이 파일을 읽지 못하게 할 수 있습니다.

감사 ACE라고도 하는 SACL(시스템 액세스 제어 목록)은 리소스와 연결된 감사 메시지를 제어하는 메커니즘입니다. DACL과 마찬가지로 SACL에는 지정된 리소스의 감사 규칙을 정의하는 ACE가 포함되어 있습니다. 감사 ACE를 사용하면 리소스에 대한 액세스 시도의 성공 또는 실패 여부를 기록할 수는 있지만 리소스를 사용할 수 있는 계정을 제어하지 않는다는 점에서 액세스 ACE와 다릅니다. 예를 들어, ACE를 만들어 파일의 SACL에 적용하면 성공한 모든 파일 열기 시도를 기록할 수 있습니다.

ACL 클래스 요약

다음 표에서는 여러 기술 영역에 대해 ACL을 쉽게 만들고 수정하는 데 사용할 수 있는 기본 클래스를 보여 줍니다. 이 목록은 System.Security.AccessControl 네임스페이스의 전체 목록이 아니라 ACL에 대해 작업할 때 사용해야 하는 기본 클래스 목록입니다.

기술 영역

클래스

암호화 키

CryptoKeySecurity

CryptoKeyAccessRule

CryptoKeyAuditRule

디렉터리

DirectorySecurity

FileSystemAccessRule

FileSystemAuditRule

이벤트 대기 핸들

EventWaitHandleSecurity

EventWaitHandleAccessRule

EventWaitHandleAuditRule

파일

FileSecurity

FileSystemAccessRule

FileSystemAuditRule

뮤텍스

MutexSecurity

MutexAccessRule

MutexAuditRule

레지스트리 키

RegistrySecurity

RegistryAccessRule

RegistryAuditRule

세마포

SemaphoreSecurity

SemaphoreAccessRule

SemaphoreAuditRule

리소스에 대한 기존 ACL 정보를 쿼리하거나 수정된 ACL 정보를 리소스에 적용하려면 기존 리소스의 ACL에 대한 액세스를 제공하는 여러 메서드 중 하나를 사용해야 합니다. 위 표에 나오는 클래스에서는 ACL을 구성하고 편집하는 메서드는 제공하지만 ACL을 쿼리하거나 적용하는 방법은 제공하지 않습니다.

모든 리소스에는 리소스가 만들어지는 동안(대개 생성자 오버로드) ACL을 적용하고 기존 리소스에 대한 ACL을 검색하고 ACL을 기존 리소스에 적용하는 연관된 메서드가 있습니다.

다음 표에서는 각 기술 영역에 대한 ACL을 가져오고 설정하는 데 사용되는 메서드를 보여 줍니다. 이러한 메서드는 System.Security.AccessControl 네임스페이스를 제외한 여러 네임스페이스에 있고 특정 리소스를 나타내는 고급 클래스의 일부입니다. 예를 들어, 지정한 디렉터리에 대한 ACL을 쿼리하려면 Directory.GetAccessControl 메서드를 사용하여 해당 디렉터리의 DACL 및 SACL을 캡슐화하는 DirectorySecurity 개체를 가져옵니다. 파일과 디렉터리 같은 일부 리소스는 ACL에 대한 액세스를 제공하는 서로 다른 클래스에 여러 개의 동일한 메서드를 가지고 있습니다.

기술 영역

ACL을 가져오고 설정하는 메서드

암호화 키

CspParameters.CryptoKeySecurity

CspParameters.CspParameters

CspParameters.CspParameters

CspKeyContainerInfo.CryptoKeySecurity

디렉터리

Directory.GetAccessControl

Directory.SetAccessControl

DirectoryInfo.GetAccessControl

DirectoryInfo.SetAccessControl

DirectoryInfo.Create

이벤트 대기 핸들

EventWaitHandle.GetAccessControl

EventWaitHandle.SetAccessControl

EventWaitHandle.EventWaitHandle

파일

FileStream.GetAccessControl

FileStream.SetAccessControl

FileStream.FileStream

File.GetAccessControl

File.SetAccessControl

File.Create

FileInfo.GetAccessControl

FileInfo.SetAccessControl

뮤텍스

Mutex.GetAccessControl

Mutex.SetAccessControl

Mutex.Mutex

레지스트리 키

RegistryKey.GetAccessControl

RegistryKey.SetAccessControl

RegistryKey.CreateSubKey

세마포

Semaphore.GetAccessControl

Semaphore.SetAccessControl

Semaphore.Semaphore

참고 항목

기타 리소스

ACL 기술 개요

.NET Framework의 보안