Share via


ConvertToAutoInheritPrivateObjectSecurity 함수(securitybaseapi.h)

ConvertToAutoInheritPrivateObjectSecurity 함수는 보안 설명자와 ACL(액세스 제어 목록)을 상속 가능한 ACE(액세스 제어 항목)의 자동 전파를 지원하는 형식으로 변환합니다.

구문

BOOL ConvertToAutoInheritPrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in]           PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  [in, optional] GUID                 *ObjectType,
  [in]           BOOLEAN              IsDirectoryObject,
  [in]           PGENERIC_MAPPING     GenericMapping
);

매개 변수

[in, optional] ParentDescriptor

개체의 부모 컨테이너에 대한 보안 설명자에 대한 포인터입니다. 부모 컨테이너가 없는 경우 이 매개 변수는 NULL입니다.

[in] CurrentSecurityDescriptor

개체의 현재 보안 설명자에 대한 포인터입니다.

[out] NewSecurityDescriptor

새로 할당된 자체 상대 보안 설명자에 대한 포인터를 수신하는 변수에 대한 포인터입니다. 이 보안 설명자를 해제하기 위해 DestroyPrivateObjectSecurity 함수를 호출하는 것은 호출자의 책임입니다.

[in, optional] ObjectType

CurrentSecurityDescriptor 매개 변수와 연결된 개체의 형식을 식별하는 GUID 구조체에 대한 포인터입니다. 개체에 GUID가 없는 경우 이 매개 변수는 NULL이어야 합니다.

[in] IsDirectoryObject

TRUE이면 새 개체는 컨테이너이며 다른 개체를 포함할 수 있습니다. FALSE이면 새 개체가 컨테이너가 아닙니다.

[in] GenericMapping

개체에 대한 각 제네릭 권한에서 특정 권한으로의 매핑을 지정하는 GENERIC_MAPPING 구조체에 대한 포인터입니다.

반환 값

함수가 성공하면 함수는 0이 아닌 값을 반환합니다.

함수가 실패하면 0을 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

ConvertToAutoInheritPrivateObjectSecurity 함수는 현재 보안 설명자의 DACL(임의 액세스 제어 목록) 및 SACL(시스템 액세스 제어 목록)의 ACE가 부모 보안 설명자에서 상속되었는지 여부를 확인하려고 시도합니다. 함수는 ParentDescriptor 매개 변수를 CreatePrivateObjectSecurityEx 함수에 전달하여 상속된 ACL만 포함하는 ACL을 가져옵니다. 그런 다음, 이러한 ACE를 원래 보안 설명자의 ACE와 비교하여 상속된 원래 ACE를 확인합니다. ACE는 일대일로 일치시킬 필요가 없습니다. instance 경우 트러스티에 대한 읽기 및 쓰기 액세스를 허용하는 ACE는 읽기 액세스를 허용하는 ACE와 쓰기 액세스를 허용하는 ACE의 두 API와 같을 수 있습니다.

부모 보안 설명자에서 상속된 ACE와 동일한 원래 보안 설명자의 모든 ACE는 INHERITED_ACE 플래그로 표시되고 새 보안 설명자에 추가됩니다. 원래 보안 설명자의 다른 모든 ACE는 새 보안 설명자에 편집되지 않은 ACE로 추가됩니다.

원래 DACL에 상속된 ACE가 없는 경우 함수는 새 보안 설명자의 컨트롤 비트에 SE_DACL_PROTECTED 플래그를 설정합니다. 마찬가지로 SACL의 ACE가 상속되지 않으면 SE_SACL_PROTECTED 플래그가 설정됩니다.

API를 상속한 DACL의 경우 함수는 ACE를 두 그룹으로 다시 정렬합니다. 첫 번째 그룹에는 개체에 직접 적용된 ACE가 있습니다. 두 번째 그룹은 ACE를 상속했습니다. 이 순서를 지정하면 상속된 ACE보다 일관성이 없는 ACE가 우선적으로 적용됩니다. 자세한 내용은 DACL의 ACE 순서를 참조하세요.

함수는 새 보안 설명자의 컨트롤 비트에 SE_DACL_AUTO_INHERITED 및 SE_SACL_AUTO_INHERITED 플래그를 설정합니다.

이렇게 하면 결과 보안 설명자의 의미 체계가 변경되므로 함수는 DACL에서 액세스 거부 API와 관련하여 액세스 허용 ACE의 순서를 변경하지 않습니다. 함수가 의미 체계를 변경하지 않고 DACL을 변환할 수 없는 경우 DACL을 변경하지 않고 SE_DACL_PROTECTED 플래그를 설정합니다.

새 보안 설명자에는 원래 보안 설명자와 동일한 소유자 및 기본 그룹이 있습니다.

새 보안 설명자는 원래 보안 설명자와 동일하므로 호출자는 보안 설명자를 새 형식으로 업데이트하기 위해 액세스 권한이나 권한이 필요하지 않습니다.

이 함수는 ACL_REVISION 및 ACL_REVISION_DS ACL에서 작동합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 securitybaseapi.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

클라이언트/서버 Access Control

클라이언트/서버 Access Control 함수

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID