보안 디바이스 설치 만들기

드라이버 패키지를 만들 때 디바이스 설치가 항상 안전한 방식으로 수행되도록 해야 합니다. 보안 디바이스 설치는 다음을 수행하는 디바이스 설치입니다.

  • 디바이스 및 해당 디바이스 인터페이스 클래스에 대한 액세스를 제한합니다.

  • 디바이스에 대해 만들어진 드라이버 서비스에 대한 액세스를 제한합니다.

  • 수정 또는 삭제로부터 드라이버 파일 보호

  • 디바이스의 레지스트리 항목에 대한 액세스를 제한합니다.

  • 디바이스의 WMI 클래스에 대한 액세스를 제한합니다.

  • SetupAPI 함수를 올바르게 사용

디바이스 설치 보안은 보안 설명자에 의해 제어됩니다. 보안 설명자를 지정하기 위한 기본 매체는 INF 파일입니다. 시스템은 기본 보안 설명자를 제공하며 대부분의 경우 이러한 설명자를 재정의할 필요가 없습니다.

디바이스 및 인터페이스에 대한 보안 설정

시스템은 시스템에서 제공하는 모든 디바이스 설정 클래스에 대한 기본 보안 설명자를 제공합니다. 일반적으로 이러한 설명자는 시스템 관리자에 대한 모든 액세스 및 사용자에 대한 읽기/쓰기/실행 액세스를 허용합니다. (디바이스에 대한 액세스를 제어하는 보안 설명자는 디바이스의 디바이스 인터페이스 클래스에 대한 액세스도 제어합니다(있는 경우).

WDM 드라이버용 INF 파일은 시스템의 기본 설정을 재정의하는 클래스 또는 디바이스당 보안 설정을 지정할 수 있습니다. 새 디바이스 설정 클래스를 만드는 공급업체는 클래스에 대한 보안 설명자를 지정해야 합니다. 일반적으로 디바이스별 보안 설명자를 지정할 필요는 없습니다. 동일한 클래스에 속하는 여러 유형의 디바이스에 상당히 다른 유형의 사용자가 있는 경우 디바이스별 보안 설명자를 제공하는 것이 유용할 수 있습니다.

WDM 디바이스 설정 클래스에 속하는 모든 디바이스에 대한 보안 설명자를 지정하려면 클래스 설치 관리자의 INF 파일의 INF ClassInstall32 섹션 내에서 INFAddReg 지시문을 사용합니다. AddReg 지시문은 DeviceType보안 레지스트리 항목에 대한 값을 설정하는 추가 레지스트리 섹션을 가리킵니다. 이러한 레지스트리 값은 지정된 디바이스 유형의 모든 디바이스에 대한 보안 설명자를 지정합니다.

WDM 디바이스 설정 클래스에 속하는 단일 디바이스에 대한 보안 설명자를 지정하려면 디바이스의 INF 파일의 INF DDInstall.HW 섹션 내에서 INFAddReg 지시문을 사용합니다. AddReg 지시문은 DeviceType보안 레지스트리 항목에 대한 값을 설정하는 추가 레지스트리 섹션을 가리킵니다. 이러한 레지스트리 값은 연결된 INF 모델 섹션에서 지정한 하드웨어 ID 또는 호환 ID와 일치하는 모든 디바이스에 대한 보안 설명자를 지정합니다.

기본적으로 시스템은 디바이스에 대한 보안 설명자 집합을 디바이스를 나타내는 디바이스 개체를 여는 요청에 적용합니다(예: NT 디바이스 이름이 \Device\DeviceName인 디바이스 열기 요청).

그러나 시스템은 기본적으로 디바이스의 네임스페이스에서 개체를 여는 요청에 디바이스에 대한 보안 설명자 집합을 적용하지 않습니다. 여기서 디바이스 네임스페이스에는 이름이 \Device\DeviceName\ObjectName 형식인 모든 개체가 포함됩니다. 디바이스의 네임스페이스에 있는 개체에 대한 열기 요청에 동일한 보안 설정이 적용되도록 하려면 디바이스에 대한 FILE_DEVICE_SECURE_OPEN 디바이스 특성 플래그를 설정합니다. 보안 디바이스 액세스에 대한 자세한 내용은 디바이스 네임스페이스 액세스 제어(Windows 드라이버)를 참조하세요. FILE_DEVICE_SECURE_OPEN 디바이스 특성 플래그를 설정하는 방법에 대한 자세한 내용은 디바이스 특성 지정(Windows 드라이버)을 참조하세요.

PnP 관리자는 드라이버의 AddDevice 루틴을 호출한 후 디바이스 개체에 보안 값을 설정합니다. 일부 WDM 드라이버는 IoCreateDeviceSecure를 호출하여 PDO(물리적 디바이스 개체)를 만들 때 디바이스별 보안 설명자를 지정할 수 있습니다. 자세한 내용은 디바이스 개체 보안을 참조하세요.

드라이버 파일에 대한 보안 설정

INF CopyFiles 지시문을 사용하여 파일을 복사할 때 file-list-section을 지정할 수 있습니다. 보안 섹션. 이 섹션에서는 CopyFiles 지시문에 의해 복사되는 모든 파일에 대한 보안 설명자를 지정합니다. 그러나 설치 대상이 %SystemRoot%의 시스템 하위 디렉터리 중 하나인 경우 공급업체는 드라이버 파일에 대한 보안 설명자를 지정할 필요가 없습니다. (이러한 하위 디렉터리에 대한 자세한 내용은 Dirids 사용을 참조하세요.) 시스템은 이러한 하위 디렉터리에 대한 기본 보안 설명자를 제공하며 기본 설명자는 재정의해서는 안 됩니다.

드라이버 서비스에 대한 보안 설정

드라이버 INF 파일의 service-install-section ( INF AddService 지시문 참조) 내에서 보안 항목을 포함할 수 있습니다. 이 항목은 디바이스와 연결된 드라이버 서비스 시작, 중지 및 구성과 같은 작업을 수행하는 데 필요한 권한을 지정합니다. 그러나 시스템은 드라이버 서비스에 대한 기본 보안 설명자를 제공하며, 이 기본 설명자는 일반적으로 재정의할 필요가 없습니다.

디바이스 및 드라이버 레지스트리 항목에 대한 보안 설정

INF AddReg 지시문을 사용하여 INF 파일에서 레지스트리 항목을 지정할 때 추가 레지스트리 섹션을 포함할 수 있습니다. 각 추가 레지스트리 섹션에 대한 보안 섹션입니다. add-registry-section입니다. 보안 섹션은 연결된 추가 레지스트리 섹션 섹션에서 만든 레지스트리 항목에 대한 액세스 권한을 지정합니다. 시스템은 HKR 상대 루트에서 만든 모든 레지스트리 항목에 대한 기본 보안 설명자를 제공합니다. 따라서 상대 루트 아래에 레지스트리 항목을 만들 때 보안 설명자를 지정할 필요가 없습니다.

WMI 클래스에 대한 보안 설정

시스템은 WMI 클래스를 식별하는 GUID에 기본 보안 설명자를 할당합니다. Windows XP 및 이전 운영 체제 버전의 경우 WMI GUID에 대한 기본 보안 설명자를 사용하면 모든 사용자에게 모든 권한을 부여할 수 있습니다. Windows Server 2003부터 기본 보안 설명자는 관리자에 대한 액세스만 허용합니다.

드라이버가 WMI 클래스를 정의하고 이러한 클래스에 대해 시스템의 기본 보안 설명자를 사용하지 않으려는 경우 디바이스의 INF 파일 내에서 INF DDInstall.WMI 섹션 을 사용하여 보안 설명자를 제공할 수 있습니다.

SetupAPI 함수를 올바르게 사용

드라이버 패키지에 설치 관리자, 공동 설치 관리자 또는 SetupAPI 함수를 호출하는 다른 설치 애플리케이션이 포함된 경우 SetupAPI 사용에 대한 지침을 따라야 합니다.

설치 보안 설정 테스트

SetupAPI 로깅을 사용하여 디바이스 설치와 관련된 보안 설정이 올바르게 지정되었는지 확인합니다. 로깅 수준을 자세한 정보 표시(0x0000FFFF)로 설정한 다음, 다양한 설치 시나리오를 시도합니다.

이러한 시나리오에는 사용자 계정과 시스템 관리자 계정 모두에서 초기 설치 및 다시 설치가 모두 포함되어야 합니다. 소프트웨어를 설치하기 전에 디바이스에 연결해 보세요. 그 반대의 경우도 마찬가지입니다.

설치에 성공하면 로그를 확인하여 오류가 발생하지 않았는지 확인합니다. 설치에 실패하면 로그를 확인하여 실패의 원인을 확인합니다.

또한 설치가 완료되면 다음을 수행할 수 있습니다.

  • 레지스트리 편집기를 사용하여 레지스트리 항목에 할당된 보안 설정을 봅니다.

  • 내 컴퓨터를 사용하여 파일에 할당된 보안 설정을 봅니다.