SeAssignSecurity 함수(wdm.h)

SeAssignSecurity 루틴은 부모 디렉터리의 보안 설명자와 개체에 대해 원래 요청된 보안을 고려하여 새 개체에 대한 자체 상대 보안 설명자를 빌드합니다.

구문

NTSTATUS SeAssignSecurity(
  [in, optional] PSECURITY_DESCRIPTOR      ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR      ExplicitDescriptor,
  [out]          PSECURITY_DESCRIPTOR      *NewDescriptor,
  [in]           BOOLEAN                   IsDirectoryObject,
  [in]           PSECURITY_SUBJECT_CONTEXT SubjectContext,
  [in]           PGENERIC_MAPPING          GenericMapping,
  [in]           POOL_TYPE                 PoolType
);

매개 변수

[in, optional] ParentDescriptor

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

[in, optional] ExplicitDescriptor

새 개체에 적용된 사용자가 지정한 SECURITY_DESCRIPTOR 포함하는 버퍼에 대한 포인터입니다. ExplicitDescriptorNULL이거나 NULL SACL 또는 NULL DACL이 있을 수 있습니다.

[out] NewDescriptor

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

[in] IsDirectoryObject

새 개체가 디렉터리 개체인지 여부를 지정합니다. TRUE 는 개체에 다른 개체가 포함되어 있음을 나타냅니다.

[in] SubjectContext

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

[in] GenericMapping

각 제네릭 권한에서 암시적 비일관적 권한으로의 매핑을 설명하는 GENERIC_MAPPING 구조체에 대한 포인터입니다.

[in] PoolType

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

반환 값

SeAssignSecurity 는 다음 중 하나를 반환할 수 있습니다.

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

설명

호출자에게 반환된 최종 보안 설명자에는 정보가 혼합되어 있을 수 있으며, 일부는 새 개체의 부모로부터 명시적으로 제공될 수 있습니다.

SeAssignSecurity 는 권한 검사가 수행되지 않았다고 가정합니다. 이 루틴은 권한 검사를 수행합니다.

시스템 및 임의 ACL의 할당은 다음 표에 설명된 논리에 의해 제어됩니다.

명시적(기본이 아닌) ACL이 지정됨 명시적 기본 ACL 지정 ACL이 지정되지 않음
부모로부터 상속 가능한 ACL 지정된 ACL 할당 상속된 ACL 할당 상속된 ACL 할당
부모로부터 상속할 수 있는 ACL 없음 지정된 ACL 할당 기본 ACL 할당 ACL 할당 없음
 

기본 ACL이든 아니든 명시적으로 지정된 ACL은 비어 있거나 null일 수 있습니다. 호출자는 커널 모드 클라이언트이거나 기본 또는 비기본 시스템 ACL을 명시적으로 할당할 수 있는 적절한 권한이 있어야 합니다.

새 개체의 소유자 및 그룹의 할당은 다음 논리에 의해 제어됩니다.

  • 전달된 보안 설명자에 소유자가 포함된 경우 새 개체의 소유자로 할당됩니다. 그렇지 않으면 호출자의 토큰이 소유자를 결정하는 것으로 간주됩니다. 토큰 내에서 기본 소유자(있는 경우)가 할당됩니다. 그렇지 않으면 호출자의 사용자 ID가 할당됩니다.
  • 전달된 보안 설명자에 그룹이 포함된 경우 새 개체의 그룹으로 할당됩니다. 그렇지 않으면 호출자의 토큰이 그룹을 결정하는 것으로 간주됩니다. 토큰 내에서 기본 그룹(있는 경우)이 할당됩니다. 그렇지 않으면 호출자의 기본 그룹 ID가 할당됩니다.

요구 사항

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

추가 정보

GENERIC_MAPPING

IoGetFileObjectGenericMapping

SECURITY_DESCRIPTOR

SeDeassignSecurity