상속 가능한 AES의 자동 전파

SetNamedSecurityInfoSetSecurityInfo 함수는 상속 가능한 ACE(액세스 제어 항목)의 자동 전파를 지원합니다. 예를 들어 이러한 함수를 사용하여 NTFS의 디렉터리에 상속 가능한 ACE를 추가하는 경우 시스템은 기존 하위 디렉터리 또는 파일의 ACL( 액세스 제어 목록 )에 적절한 ACE를 적용합니다.

직접 적용된 AES는 상속된 ACE보다 우선합니다. 시스템은 DACL( 임의 액세스 제어 목록 )에서 상속된 API보다 직접 적용된 API를 배치하여 이 우선 순위를 구현합니다. SetNamedSecurityInfoSetSecurityInfo 함수를 호출하여 개체의 보안 정보를 설정하면 시스템은 대상 개체 아래의 계층 구조에 있는 모든 개체의 ACL에 현재 상속 모델을 적용합니다. 현재 상속 모델로 변환된 개체의 경우 SE_DACL_AUTO_INHERITED 및 SE_SACL_AUTO_INHERITED 비트는 개체의 보안 설명자의 제어 필드에 설정됩니다.

현재 상속 모델을 반영하는 새 보안 설명자를 빌드하는 경우 보안 설명자의 의미 체계를 변경하지 않도록 주의해야 합니다. 따라서 허용 및 거부 AES는 서로 간에 이동되지 않습니다. 이러한 이동이 필요한 경우(instance ACL의 전면에 모든 무인 ACL을 배치하려면) 의미 체계 변경을 방지하기 위해 ACL이 보호된 것으로 표시됩니다.

시스템은 상속된 AES를 자식 개체에 전파할 때 다음 규칙을 사용합니다.

  • DACL이 없는 자식 개체가 ACE를 상속하는 경우 결과는 상속된 ACE만 포함하는 DACL이 있는 자식 개체입니다.
  • 빈 DACL이 있는 자식 개체가 ACE를 상속하는 경우 결과는 상속된 ACE만 포함하는 DACL이 있는 자식 개체입니다.
  • 부모 개체에서 상속 가능한 ACE를 제거하면 자동 상속은 자식 개체에 의해 상속된 ACE의 복사본을 모두 제거합니다.
  • 자동 상속으로 인해 자식 개체의 DACL에서 모든 API가 제거되는 경우 자식 개체에는 DACL이 아닌 빈 DACL이 있습니다.

이러한 규칙은 DACL이 없는 개체를 빈 DACL이 있는 개체로 변환하는 예기치 않은 결과를 가질 수 있습니다. DACL이 없는 개체는 모든 권한을 허용하지만 DACL이 비어 있는 개체는 액세스할 수 없습니다. 이러한 규칙이 빈 DACL을 만드는 방법의 예로 개체 트리의 루트 개체에 상속 가능한 ACE를 추가한다고 가정합니다. 자동 상속은 상속 가능한 ACE를 트리의 모든 개체에 전파합니다. DACL 없이 시작된 자식 개체에는 이제 상속된 ACE가 있는 DACL이 있습니다. 루트 개체에서 상속 가능한 ACE를 제거하면 시스템에서 자동으로 자식 개체에 변경 내용이 전파됩니다. DACL 없이 시작된 자식 개체(전체 액세스 허용)에는 이제 빈 DACL(액세스 허용 안 함)이 있습니다.

DACL이 없는 자식 개체가 상속 가능한 API의 영향을 받지 않도록 하려면 개체의 보안 설명자에서 SE_DACL_PROTECTED 플래그를 설정합니다.

DACL을 올바르게 만드는 방법에 대한 자세한 내용은 DACL 만들기를 참조하세요.