Microsoft Intune에 대한 사용자 지정 규정 준수 검색 스크립트

Microsoft Intune 을 준수하기 위해 사용자 지정 설정을 사용하려면 먼저 디바이스에서 사용할 수 있는 사용자 지정 준수 설정을 검색할 수 있는 스크립트를 정의해야 합니다. 사용하는 스크립트는 플랫폼에 따라 달라집니다.

  • Windows 디바이스는 PowerShell 스크립트를 사용합니다.
  • Linux 디바이스는 해당 인터프리터가 디바이스에 설치 및 구성되는 한 모든 언어로 스크립트를 실행할 수 있습니다.

검색 스크립트는 사용자 지정 규정 준수 정책의 일부로 디바이스에 배포됩니다. 디바이스에서 규정 준수가 실행되면 스크립트는 사용자 지정 규정 준수 정책을 통해 제공하는 JSON 파일로 정의된 설정을 검색합니다.

모든 검색 스크립트:

  • 준수 정책을 만들기 전에 Intune에 추가됩니다. 추가된 후에는 사용자 지정 설정을 사용하여 준수 정책을 만들 때 스크립트를 선택할 수 있습니다.
    • 각 검색 스크립트는 하나의 준수 정책에서만 사용할 수 있으며 각 규정 준수 정책에는 하나의 검색 스크립트만 포함될 수 있습니다.
    • 준수 정책에 할당된 검색 스크립트는 정책에서 스크립트를 할당하지 않을 때까지 삭제할 수 없습니다.
  • 준수 정책을 수신하는 디바이스에서 실행합니다. 스크립트는 사용자 지정 규정 준수 정책을 만들 때 업로드하는 JSON 파일의 조건을 평가합니다.
  • JSON에 정의된 대로 하나 이상의 설정을 식별하고 해당 설정에 대해 검색된 값 목록을 반환합니다. 각 정책에 단일 스크립트를 할당할 수 있으며 여러 설정 검색을 지원합니다.

또한 Windows용 PowerShell 스크립트는 다음과 같습니다.

  • 출력 결과로 한 줄로 압축해야 합니다.
  • 예: $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent} 스크립트의 끝에 다음 줄을 포함해야 합니다. return $hash | ConvertTo-Json -Compress

제한

규정 준수 데이터를 Intune에 성공적으로 반환하려면 작성하는 스크립트가 다음 제한 내에 있어야 합니다.

  • 스크립트는 각각 1MB(메가바이트)를 초과할 수 없습니다.
  • 각 스크립트에서 생성된 출력은 1MB를 초과할 수 없습니다.
  • 스크립트에는 제한된 런타임이 있어야 합니다.
    • Linux에서 스크립트를 실행하는 데 5분 미만이 소요되어야 합니다.
    • Windows에서 스크립트를 실행하는 데 10분 미만이 소요되어야 합니다.

Windows용 샘플 검색 스크립트

다음 예제는 Windows 디바이스에 사용할 수 있는 샘플 PowerShell 스크립트입니다.

$WMI_ComputerSystem = Get-WMIObject -class Win32_ComputerSystem
$WMI_BIOS = Get-WMIObject -class Win32_BIOS 
$TPM = Get-Tpm

$hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent}
return $hash | ConvertTo-Json -Compress

다음은 Windows 샘플 스크립트 출력의 예입니다.

{"BiosVersion":"1.24","Manufacturer":"Microsoft Corporation","TPMChipPresent":true}

Linux용 샘플 검색 스크립트

참고

Linux의 검색 스크립트는 사용자의 컨텍스트에서 실행되므로 권한 상승이 필요한 시스템 수준 설정을 확인할 수 없습니다. 이 예제는 파일의 입니다 state/hash/etc/sudoers .

Linux용 검색 스크립트는 요구 사항을 충족하는 모든 인터프리터를 호출할 수 있습니다. 선택한 인터프리터가 스크립트를 배포하기 전에 대상 디바이스에 올바르게 설치되고 구성되었는지 확인합니다. 스크립트의 인터프리터를 지정하려면 스크립트 맨 위에 인터프리터 이진 파일의 경로를 나타내는 shebang 줄을 포함합니다.

예를 들어 스크립트에서 Bash 셸을 인터프리터로 사용해야 하는 경우 스크립트 맨 위에 다음 줄을 추가합니다.

[ !/bin/bash ]

스크립트에 Python을 사용하려면 인터프리터가 설치된 위치를 지정합니다. 예를 들어 스크립트 [ !/usr/bin/python3 ] 의 맨 위에 다음을 추가합니다. 또는 [ !/usr/bin/env python ]

권장 모범 사례: 스크립트가 인터럽트 또는 취소 신호와 같은 시나리오를 처리할 수 있도록 하려면 정상적인 종료 메커니즘을 구현합니다. 스크립트가 이러한 신호를 올바르게 캐시하고 처리하는 경우 스크립트는 정리 작업을 수행하고 정상적으로 존재하여 리소스가 올바르게 해제되도록 할 수 있습니다. 예를 들어 SIGINT(인터럽트 신호) 또는 SIGTERM(종료 신호)과 같은 특정 신호를 catch하고 이러한 신호가 수신될 때 실행할 사용자 지정 작업을 정의할 수 있습니다. 이러한 작업에는 열려 있는 파일 닫기, 획득한 잠금 해제 또는 임시 리소스 정리가 포함될 수 있습니다. 적절한 신호 처리는 스크립트 무결성을 유지하고 전반적인 사용자 환경을 개선하는 데 도움이 됩니다.

자세한 내용은 Intune Linux 사용자 지정 규정 준수 샘플 가이드를 참조하세요.

Intune에 검색 스크립트 추가

프로덕션 환경에서 스크립트를 배포하기 전에 격리된 환경에서 테스트하여 사용하는 구문이 예상대로 작동하는지 확인합니다.

  1. Microsoft Intune 관리 센터에 로그인하고 엔드포인트 보안>디바이스 준수>스크립트>추가>(플랫폼 선택)로 이동합니다.

  2. 기본 사항에서 이름을 입력합니다.

  3. 설정에서 검색 스크립트에 스크립트를 추가합니다. 스크립트를 신중하게 검토합니다. Intune은 구문 또는 프로그래밍 오류에 대한 스크립트의 유효성을 검사하지 않습니다.

  4. Windows 전용 - 설정에서 PowerShell 스크립트에 대해 다음 동작을 구성합니다.

    • 로그온한 자격 증명을 사용하여 이 스크립트를 실행 합니다. 기본적으로 스크립트는 디바이스의 시스템 컨텍스트에서 실행됩니다. 로그온한 사용자의 컨텍스트에서 실행되도록 하려면 이 값을 예로 설정합니다. 사용자가 로그인하지 않은 경우 스크립트는 기본적으로 시스템 컨텍스트로 다시 설정됩니다.
    • 스크립트 서명 검사 적용 – 자세한 내용은 PowerShell 설명서의 about_Signing 참조하세요.
    • 64비트 PowerShell 호스트에서 스크립트 실행 – 기본적으로 스크립트는 32비트 PowerShell 호스트를 사용하여 실행됩니다. 대신 64비트 호스트를 사용하여 스크립트를 강제로 실행하려면 이 값을 예로 설정합니다.
  5. 스크립트 만들기 프로세스를 완료합니다. 이제 스크립트가 Microsoft Intune 관리 센터의 스크립트 창에 표시되며 규정 준수 정책을 구성할 때 선택할 수 있습니다.

이러한 스크립트를 Microsoft Intune 관리 센터에 업로드하는 워크플로는 범위 태그를 지원하지 않으므로 사용자 지정 규정 준수 검색 스크립트를 만들거나 편집하거나 볼 기본 범위 태그를 할당받아야 합니다.

다음 단계