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 대한 포인터입니다. ParentDescriptor는 NULL이거나 NULL SACL(시스템 액세스 제어 목록) 또는 NULLDACL(임의 액세스 제어 목록)이 있을 수 있습니다.
[in, optional] ExplicitDescriptor
새 개체에 적용되는 명시적 SECURITY_DESCRIPTOR 대한 포인터입니다. ExplicitDescriptor는 NULL이거나 NULL SACL 또는 NULL DACL이 있을 수 있습니다.
[out] NewDescriptor
반환된 SECURITY_DESCRIPTOR 대한 포인터를 받습니다. SeAssignSecurityEx 는 페이징된 메모리 풀에서 버퍼를 할당합니다.
[in, optional] ObjectType
생성되는 개체의 형식에 대한 GUID에 대한 포인터입니다. 개체에 GUID가 없으면 ObjectType 을 NULL로 설정해야 합니다.
[in] IsDirectoryObject
새 개체가 디렉터리 개체인지 여부를 지정합니다. IsDirectoryObject가 TRUE로 설정된 경우 새 개체는 디렉터리 개체이고, 그렇지 않으면 새 개체가 디렉터리 개체가 아닙니다.
[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 | ExplicitDescriptor 는 ObjectType에 지정된 개체 형식의 기본 설명자입니다. 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을 할당하지 않습니다. |
과제 참고 사항
- SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 플래그가 지정되지 않았습니다.
- SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 플래그가 지정됩니다.
- ACL에 대한 자동 상속 플래그가 지정됩니다(SEF_DACL_AUTO_INHERIT 또는 SEF_SACL_AUTO_INHERIT).
- ACL에 대한 자동 상속 플래그가 지정되지 않았습니다.
- aceFlags 멤버에 설정된 INHERITED_ACE 비트가 있는 ACE는 할당된 보안 설명자에 복사되지 않습니다.
- 부모 설명자에서 상속되는 ACE는 명시적 설명자에 의해 지정된 ACE 다음에 추가됩니다.
[in] SubjectContext
개체를 만드는 주체의 보안 컨텍스트에 대한 포인터입니다. SubjectContext 는 기본 소유자, 기본 그룹 및 임의 액세스 제어를 포함하여 새 개체에 대한 기본 보안 정보를 검색하는 데 사용됩니다.
[in] GenericMapping
개체별 권한에 대한 각 제네릭 권한 간의 매핑을 지정하는 액세스 마스크 값 배열에 대한 포인터입니다.
[in] PoolType
이 매개 변수는 사용되지 않습니다. 새 보안 설명자를 저장할 버퍼는 항상 페이징 풀에서 할당됩니다.
반환 값
SeAssignSecurityEx 는 다음 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
할당이 성공했습니다. |
|
새 보안 설명자의 소유자로 제공되는 SID는 호출자가 개체의 소유자로 할당할 권한이 있는 SID가 아닙니다. |
|
호출자에게 지정된 SACL을 명시적으로 할당하는 데 필요한 권한(SeSecurityPrivilege)이 없습니다. |
설명
SeAssignSecurityEx 는 다음과 같은 방법으로 SeAssignSecurity 의 기본 작업을 확장합니다.
- ObjectType 은 필요에 따라 개체 형식을 지정합니다. 개체별 상속은 개체별 ACE의 다음 멤버인 Flags, InheritedObjectType 및 Header.AceFlags에 의해 제어됩니다.
- AutoInheritFlags는 사용되는 ACE의 자동 상속 유형을 지정합니다. 또한 AutoInheritFlags는 NewDescriptor에 대한 권한 검사, 소유자 확인 및 기본 소유자 및 그룹 설정을 제어합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport) |