ACCESS_ALLOWED_OBJECT_ACE 구조체(winnt.h)

ACCESS_ALLOWED_OBJECT_ACE 구조체는 개체, 속성 집합 또는 속성에 대한 허용된 액세스를 제어하는 ACE(액세스 제어 항목)를 정의합니다. ACE에는 액세스 권한 집합, 개체 유형을 식별하는 GUID, 시스템에서 액세스 권한을 부여할 트러스티를 식별하는 SID(보안 식별자)가 포함됩니다. 또한 ACE에는 자식 개체에 의한 ACE 상속을 제어하는 GUID 및 플래그 집합이 포함되어 있습니다.

통사론

typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
  ACE_HEADER  Header;
  ACCESS_MASK Mask;
  DWORD       Flags;
  GUID        ObjectType;
  GUID        InheritedObjectType;
  DWORD       SidStart;
} ACCESS_ALLOWED_OBJECT_ACE, *PACCESS_ALLOWED_OBJECT_ACE;

회원

Header

ACE의 크기와 형식을 지정하는 ACE_HEADER 구조체입니다. 또한 자식 개체에 의한 ACE의 상속을 제어하는 플래그도 포함되어 있습니다. ACE_HEADER 구조체의 AceType 멤버는 ACCESS_ALLOWED_OBJECT_ACE_TYPE 설정해야 하며 AceSize 멤버는 ACCESS_ALLOWED_OBJECT_ACE 구조에 할당된 총 바이트 수로 설정해야 합니다.

Mask

시스템에서 트러스티허용하는 액세스 권한을 지정하는 ACCESS_MASK.

Flags

ObjectTypeInheritedObjectType 멤버가 있는지 여부를 나타내는 비트 플래그 집합입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.

의미
0
ObjectTypeInheritedObjectType 없습니다. SidStart 멤버는 Flags 멤버 바로 뒤를 따릅니다.
ACE_OBJECT_TYPE_PRESENT
ObjectType 있으며 GUID포함합니다.

이 값을 지정하지 않으면 InheritedObjectType 멤버는 Flags 멤버 바로 뒤에 잇습니다.

ACE_INHERITED_OBJECT_TYPE_PRESENT
InheritedObjectType 있으며 GUID포함합니다.

이 값을 지정하지 않으면 모든 유형의 자식 개체가 ACE를 상속할 수 있습니다.

ObjectType

이 멤버는 ACE_OBJECT_TYPE_PRESENT 비트가 Flags 멤버에 설정된 경우에만 존재합니다. 그렇지 않으면 InheritedObjectType 멤버가 Flags 멤버 바로 뒤에 잇습니다.

이 멤버가 있는 경우 속성 집합, 속성, 확장된 오른쪽 또는 자식 개체의 형식을 식별하는 GUID 구조체입니다. 이 GUID 목적은 Mask 멤버에 지정된 액세스 권한에 따라 달라집니다.

의미
ADS_RIGHT_DS_CONTROL_ACCESS
ObjectTypeGUID 확장된 액세스 권한을 식별합니다.
ADS_RIGHT_DS_CREATE_CHILD
ObjectTypeGUID 자식 개체의 형식을 식별합니다. ACE는 이러한 유형의 자식 개체를 만들 수 있는 트러스티의 권한을 제어합니다.
ADS_RIGHT_DS_READ_PROP
ObjectTypeGUID 개체의 속성 집합 또는 속성을 식별합니다. ACE는 속성 또는 속성 집합을 읽을 수 있는 트러스티의 권한을 제어합니다.
ADS_RIGHT_DS_WRITE_PROP
ObjectTypeGUID 개체의 속성 집합 또는 속성을 식별합니다. ACE는 속성 또는 속성 집합을 쓸 수 있는 트러스티의 권한을 제어합니다.
ADS_RIGHT_DS_SELF
ObjectTypeGUID 유효성이 검사된 쓰기를 식별합니다.

InheritedObjectType

이 멤버는 ACE_INHERITED_OBJECT_TYPE_PRESENT 비트가 Flags 멤버에 설정된 경우에만 존재합니다.

이 멤버가 있는 경우 ACE를 상속할 수 있는 자식 개체의 형식을 식별하는 GUID 구조체입니다. 상속은 ACE_HEADER상속 플래그뿐만 아니라 자식 개체에 배치된 상속에 대한 보호에도 의해 제어됩니다.

이 멤버의 오프셋은 다를 수 있습니다. Flags 멤버에 ACE_OBJECT_TYPE_PRESENT 플래그가 없으면 InheritedObjectType 멤버는 ObjectType 멤버로 지정된 오프셋에서 시작됩니다.

SidStart

액세스 권한이 부여된 트러스티를 식별하는 SID의 첫 번째 DWORD 지정합니다. SID의 나머지 바이트는 SidStart 멤버 이후 연속 메모리에 저장됩니다. 이 SID는 애플리케이션 데이터에 추가할 수 있습니다.

이 멤버의 오프셋은 다를 수 있습니다. Flags 멤버가 0이면 ObjectType 멤버가 지정한 오프셋에서 SidStart 멤버가 시작됩니다. Flags 플래그가 하나만 포함된 경우(ACE_OBJECT_TYPE_PRESENT 또는 ACE_INHERITED_OBJECT_TYPE_PRESENT) SidStart 멤버는 InheritedObjectType 멤버가 지정한 오프셋에서 시작합니다.

발언

ObjectType 또는 InheritedObjectTypeGUID 지정되지 않은 경우 ACCESS_ALLOWED_OBJECT_ACE 구조체는 ACCESS_ALLOWED_ACE 구조체에서 사용하는 의미 체계와 동일합니다. 이 경우 더 작고 효율적이므로 ACCESS_ALLOWED_ACE 구조를 사용합니다.

ACCESS_ALLOWED_OBJECT_ACE 포함하는 ACL은 ACL 헤더에 ACL_REVISION_DS 수정 번호를 지정해야 합니다.

Mask 멤버가 지정한 액세스 권한은 SidStart 멤버에 저장된 SID와 일치하는 활성화된 SID를 소유한 트러스티 부여됩니다.

ACCESS_ALLOWED_OBJECT_ACE 구조는 AddAccessAllowedObjectAce 함수를 호출하여 ACL(액세스 제어 목록)에서 만들 수 있습니다. 이 함수를 사용하는 경우 ObjectType GUID 구조를 수용하고 InheritedObjectType 멤버 중 하나 또는 둘 다 있는 경우, 트러스티의 SID를 수용하는 데 필요한 올바른 양의 메모리가 자동으로 할당됩니다. 또한 Header.AceTypeHeader.AceSize 멤버의 값이 자동으로 설정됩니다. ACL 외부에서 ACCESS_ALLOWED_OBJECT_ACE 구조체가 만들어지면 ObjectType GUID 구조체와 InheritedObjectType 멤버를 수용할 수 있을 뿐만 아니라 SidStart 멤버에 있는 트러스티의 전체 SID를 수용할 수 있도록 충분한 메모리를 할당해야 합니다. 또한 Header.AceTypeHeader.AceSize 멤버의 값은 애플리케이션에서 명시적으로 설정해야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
헤더 winnt.h(Windows.h 포함)

참고 항목

ACE

ACL

AddAccessAllowedObjectAce

GUID

SID