파일 및 레지스트리 키의 보안 설명자

ADSI(Active Directory Service Interfaces)를 사용하여 사용자가 만든 파일 또는 파일 공유에서 ACL을 설정하거나 수정하는 기능을 포함하여 organization 내에서 파일 시스템을 관리하고 보호할 수 있습니다. IADsSecurityDescriptor, IADsAccessControlListIADsAccessControlEntry와 같은 보안 인터페이스는 Active Directory, Exchange, 파일, 파일 공유 또는 레지스트리 키 개체에 ACL을 설정합니다. 이러한 인터페이스를 사용하기 전에 인터페이스와 다른 형식을 사용하는 경우 또는 보안 관리자 그룹의 구성원이 아니므로 보안 설명자의 SACL에 대한 액세스 권한이 없는 경우 보안 설명자를 수정해야 할 수 있습니다.

보안 설명자를 가져오기, 설정 또는 수정하려면 IADsSecurityUtility 인터페이스를 사용합니다. 이 인터페이스를 사용하면 ADSI 형식 IADsSecurityDescriptor, 원시 보안 설명자 또는 Exchange 5.5에서 사용되는 16진수 문자열과 같이 원래 형식의 다양한 리소스에서 보안 설명자를 검색할 수 있습니다. 검색할 때 원시 보안 설명자에서 IADsSecurityDescriptor로 변환할 수 있습니다. 그런 다음 새 형식을 리소스에 다시 쓸 수 있습니다.

AccessMaskAceFlags와 같은 일부 IADsAccessControlEntry 속성 값은 서로 다른 개체 형식에 따라 다릅니다. 예를 들어 Active Directory 개체는 IADsAccessControlEntry.AccessMask 속성에 대한 ADS_RIGHTS_ENUM 열거형의 ADS_RIGHT_GENERIC_READ 멤버를 사용하지만 파일 개체에 대한 동등한 액세스 권한은 FILE_GENERIC_READ. Active Directory 개체 및 비 Active Directory 개체에 대해 모든 속성 값이 동일하다고 가정하는 것은 안전하지 않습니다. 다음 목록에서는 비 Active Directory 개체에 대해 다르고 적절한 값을 가져올 수 있는 IADsAccessControlEntry 속성을 보여 줍니다.

AccessMask

파일 또는 파일 공유 개체에 대한 자세한 내용과 가능한 값 목록은 파일 보안 및 액세스 권한을 참조하세요.

레지스트리 개체에 대한 자세한 내용과 가능한 값 목록은 레지스트리 키 보안 및 액세스 권한을 참조하세요.

AceType

자세한 내용은 ACE_HEADER 구조체의 AceType 멤버를 참조하세요.

AceFlags

자세한 내용은 ACE_HEADER 구조체의 AceFlags 멤버를 참조하세요.

플래그

WinNT.h에서 다음 값 중 하나 이상의 조합 또는 0을 포함합니다.

ACE_OBJECT_TYPE_PRESENT (1)

ObjectType 에는 유효한 값이 포함되어 있습니다.

ACE_INHERITED_OBJECT_TYPE_PRESENT (2)

InheritedObjectType 에는 유효한 값이 포함되어 있습니다.

ObjectType

자세한 내용은 ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE 및 유사한 구조체의 ObjectType 멤버를 참조하세요. 이 속성은 비 Active Directory 개체에 대해 설정하거나 수정해서는 안 됩니다.

InheritedObjectType

자세한 내용은 ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE 및 유사한 구조체의 InheritedObjectType 멤버를 참조하세요. 이 속성은 비 Active Directory 개체에 대해 설정하거나 수정해서는 안 됩니다.

일반적으로 IADsSecurityUtility.GetSecurityDescriptor 는 소유자, 그룹, SACL 또는 DACL과 같은 보안 설명자의 모든 부분을 검색합니다. 마찬가지로 IADsSecurityUtility.SetSecurityDescriptor 는 기본적으로 보안 설명자의 모든 부분을 덮어씁니다. IADsSecurityUtility.SecurityMask 속성을 사용하여 검색하거나 설정할 보안 설명자의 개별 부분을 지정할 수 있습니다. 예를 들어 보안 설명자의 다른 부분을 검색하지 않고 DACL만 검색하도록 GetSecurityDescriptor를 호출하기 전에 SecurityMaskADS_SECURITY_INFO_DACL 설정할 수 있습니다.

IADsSecurityUtility 인터페이스를 사용하여 파일에 ACE를 추가하는 코드 예제 및 자세한 내용은 파일에 ACE를 추가하기 위한 예제 코드를 참조하세요.

다음 예제 코드는 Visual Basic 및 Microsoft Visual Basic Scripting Edition에서 사용할 AccessMask, AceType, AceFlagsFlags 속성에 대한 파일, 파일 공유 및 레지스트리 개체에 대한 상수 식별자를 제공합니다.

' Identifiers for the IADsAccessControlEntry.AccessMask property for file,
' file share, and registry objects.
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000

Const STANDARD_RIGHTS_REQUIRED = &HF0000

Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000

Const STANDARD_RIGHTS_ALL = &H1F0000

Const SPECIFIC_RIGHTS_ALL = &HFFFF

' Identifiers for the IADsAccessControlEntry.AccessMask property for file and
' file share objects.
Const FILE_READ_DATA = &H1                  '  file & pipe
Const FILE_LIST_DIRECTORY = &H1             '  directory

Const FILE_WRITE_DATA = &H2                 '  file & pipe
Const FILE_ADD_FILE = &H2                   '  directory

Const FILE_APPEND_DATA = &H4                '  file
Const FILE_ADD_SUBDIRECTORY = &H4           '  directory
Const FILE_CREATE_PIPE_INSTANCE = &H4       '  named pipe

Const FILE_READ_EA = &H8                    '  file & directory

Const FILE_WRITE_EA = &H10                  '  file & directory

Const FILE_EXECUTE = &H20                   '  file
Const FILE_TRAVERSE = &H20                  '  directory

Const FILE_DELETE_CHILD = &H40              '  directory

Const FILE_READ_ATTRIBUTES = &H80           '  all

Const FILE_WRITE_ATTRIBUTES = &H100         '  all

Const FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF

Const FILE_GENERIC_READ = STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or _
                          FILE_READ_EA Or SYNCHRONIZE

Const FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or _
                           FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE

Const FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE


' Identifiers for the IADsAccessControlEntry.AccessMask property for registry
' objects.
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WOW64_32KEY = &H200
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_RES = &H300

Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
                  (Not SYNCHRONIZE))

Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))

Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))

Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
                         KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
    

' Identifiers for the IADsAccessControlEntry.AceFlags property for file and
' file share objects.
Const OBJECT_INHERIT_ACE = &H1
Const CONTAINER_INHERIT_ACE = &H2
Const NO_PROPAGATE_INHERIT_ACE = &H4
Const INHERIT_ONLY_ACE = &H8
Const INHERITED_ACE = &H10
    

' Identifiers for the IADsAccessControlEntry.Flags property.
Const ACE_OBJECT_TYPE_PRESENT = 1
Const ACE_INHERITED_OBJECT_TYPE_PRESENT = 2