SeAssignSecurityEx 함수(wdm.h)

SeAssignSecurityEx 루틴은 개체의 부모 디렉터리의 보안 설명자, 개체에 대한 명시적 보안 설명자 및 개체 형식과 같은 선택적 매개 변수가 지정된 경우 새 개체에 대한 자체 상대 보안 설명자를 빌드합니다.

구문

NTSTATUS SeAssignSecurityEx(
  [in, optional] PSECURITY_DESCRIPTOR      ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR      ExplicitDescriptor,
  [out]          PSECURITY_DESCRIPTOR      *NewDescriptor,
  [in, optional] GUID                      *ObjectType,
  [in]           BOOLEAN                   IsDirectoryObject,
  [in]           ULONG                     AutoInheritFlags,
  [in]           PSECURITY_SUBJECT_CONTEXT SubjectContext,
  [in]           PGENERIC_MAPPING          GenericMapping,
  [in]           POOL_TYPE                 PoolType
);

매개 변수

[in, optional] ParentDescriptor

생성되는 새 개체를 포함하는 부모 개체의 SECURITY_DESCRIPTOR 대한 포인터입니다. ParentDescriptorNULL이거나 NULL SACL(시스템 액세스 제어 목록) 또는 NULLDACL(임의 액세스 제어 목록)이 있을 수 있습니다.

[in, optional] ExplicitDescriptor

새 개체에 적용되는 명시적 SECURITY_DESCRIPTOR 대한 포인터입니다. ExplicitDescriptorNULL이거나 NULL SACL 또는 NULL DACL이 있을 수 있습니다.

[out] NewDescriptor

반환된 SECURITY_DESCRIPTOR 대한 포인터를 받습니다. SeAssignSecurityEx 는 페이징된 메모리 풀에서 버퍼를 할당합니다.

[in, optional] ObjectType

생성되는 개체의 형식에 대한 GUID에 대한 포인터입니다. 개체에 GUID가 없으면 ObjectTypeNULL로 설정해야 합니다.

[in] IsDirectoryObject

새 개체가 디렉터리 개체인지 여부를 지정합니다. IsDirectoryObjectTRUE로 설정된 경우 새 개체는 디렉터리 개체이고, 그렇지 않으면 새 개체가 디렉터리 개체가 아닙니다.

[in] AutoInheritFlags

ParentDescriptor에서 지정한 ACL(액세스 제어 목록)의 ACE(액세스 제어 항목)에 적용되는 자동 상속 유형을 지정합니다. 또한 AutoInheritFlags는NewDescriptor에 대한 권한 검사, 소유자 확인 및 기본 소유자 및 그룹 설정을 제어합니다. AutoInheritFlags는 다음 값 중 하나 이상의 논리적 OR로 설정해야 합니다.

의미
SEF_DACL_AUTO_INHERIT ParentDescriptor의 DACL에 있는 ACE는 ExplicitDescriptor에서 지정한 명시적 ACE 외에도 NewDescriptor에 의해 상속됩니다.
SEF_SACL_AUTO_INHERIT ParentDescriptor의 SACL에 있는 ACE는 ExplicitDescriptor에서 지정한 명시적 ACE 외에도 NewDescriptor에서 상속됩니다.
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT ExplicitDescriptorObjectType에 지정된 개체 형식의 기본 설명자입니다. ACL이 ParentDescriptor 에서 상속되는 경우에는 ExplicitDescriptor가 사용되지 않습니다.
SEF_AVOID_PRIVILEGE_CHECK 권한 검사가 수행되지 않습니다. 이 플래그는 업데이트해야 하는 각 자식에 대한 권한 검사를 방지하므로 자동 상속에 유용합니다.
SEF_AVOID_OWNER_CHECK 소유자 확인이 완료되지 않았습니다.
SEF_DEFAULT_OWNER_FROM_PARENT 소유자가 ExplicitDescriptor로 지정된 경우 이 플래그는 사용되지 않으며 NewDescriptor의 소유자는 ExplictDescriptor에서 지정한 소유자로 설정됩니다.

ExplicitDescriptor에서 소유자를 지정하지 않은 경우 이 플래그는 다음과 같은 방식으로 사용됩니다. 플래그가 설정되면 NewDescriptor의 소유자가 ParentDescriptor의 소유자로 설정됩니다. 그렇지 않으면 NewDescriptor의 소유자가 SubjectContext에서 지정한 소유자로 설정됩니다.

SEF_DEFAULT_GROUP_FROM_PARENT ExplicitDescriptor에서 그룹을 지정하는 경우 이 플래그는 사용되지 않으며 NewDescriptor 그룹은 ExplictDescriptor에서 지정한 그룹으로 설정됩니다.

ExplicitDescriptor에서 그룹을 지정하지 않은 경우 이 플래그는 다음과 같은 방식으로 사용됩니다. 플래그가 설정된 경우 NewDescriptor 그룹은 ParentDescriptor 그룹으로 설정됩니다. 그렇지 않으면 NewDescriptor 그룹이 SubjectContext에 지정된 그룹으로 설정됩니다.

 

시스템 및 임의 ACL 할당은 다음 표에 설명되어 있습니다.

기본이 아닌 명시적 설명자(1) 기본 명시적 설명자(2) Null 명시적 설명자
ACL은 부모 설명자(3)에서 상속됩니다. 상속된 ACL과 명시적 ACL(5)(6)을 모두 할당합니다. 상속된 ACL을 할당합니다. 상속된 ACL을 할당합니다.
ACL은 부모 설명자(4)에서 상속되지 않습니다. 기본이 아닌 ACL을 할당합니다. 기본 ACL을 할당합니다. ACL을 할당하지 않습니다.
 

과제 참고 사항

  1. SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 플래그가 지정되지 않았습니다.
  2. SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 플래그가 지정됩니다.
  3. ACL에 대한 자동 상속 플래그가 지정됩니다(SEF_DACL_AUTO_INHERIT 또는 SEF_SACL_AUTO_INHERIT).
  4. ACL에 대한 자동 상속 플래그가 지정되지 않았습니다.
  5. aceFlags 멤버에 설정된 INHERITED_ACE 비트가 있는 ACE는 할당된 보안 설명자에 복사되지 않습니다.
  6. 부모 설명자에서 상속되는 ACE는 명시적 설명자에 의해 지정된 ACE 다음에 추가됩니다.

[in] SubjectContext

개체를 만드는 주체의 보안 컨텍스트에 대한 포인터입니다. SubjectContext 는 기본 소유자, 기본 그룹 및 임의 액세스 제어를 포함하여 새 개체에 대한 기본 보안 정보를 검색하는 데 사용됩니다.

[in] GenericMapping

개체별 권한에 대한 각 제네릭 권한 간의 매핑을 지정하는 액세스 마스크 값 배열에 대한 포인터입니다.

[in] PoolType

이 매개 변수는 사용되지 않습니다. 새 보안 설명자를 저장할 버퍼는 항상 페이징 풀에서 할당됩니다.

반환 값

SeAssignSecurityEx 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
할당이 성공했습니다.
STATUS_INVALID_OWNER
새 보안 설명자의 소유자로 제공되는 SID는 호출자가 개체의 소유자로 할당할 권한이 있는 SID가 아닙니다.
STATUS_PRIVILEGE_NOT_HELD
호출자에게 지정된 SACL을 명시적으로 할당하는 데 필요한 권한(SeSecurityPrivilege)이 없습니다.

설명

SeAssignSecurityEx 는 다음과 같은 방법으로 SeAssignSecurity 의 기본 작업을 확장합니다.

  • ObjectType 은 필요에 따라 개체 형식을 지정합니다. 개체별 상속은 개체별 ACE의 다음 멤버인 Flags, InheritedObjectTypeHeader.AceFlags에 의해 제어됩니다.
  • AutoInheritFlags는 사용되는 ACE의 자동 상속 유형을 지정합니다. 또한 AutoInheritFlags는 NewDescriptor에 대한 권한 검사, 소유자 확인 및 기본 소유자 및 그룹 설정을 제어합니다.
보안 및 액세스 제어에 대한 자세한 내용은 Microsoft Windows SDK 이러한 topics 대한 설명서를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport)

추가 정보

GENERIC_MAPPING

SECURITY_DESCRIPTOR

SeAssignSecurity

SeDeassignSecurity