보안 상태 이해

securityPosture는 현재 기기 상태에 따라 결정되는 기기의 보안 평가입니다. 현재 기기 상태는 기기가 루팅되었는지, 맞춤 ROM을 실행 중인지 등의 요인에 따라 결정됩니다.

securityPosture는 응답에서 devicePosturesecurityRisk 필드가 포함된 추가 postureDetails 목록으로 분류됩니다.

securityRisk 필드는 기기가 가장 안전한 상태로 간주되지 않는 이유를 알려 주고 advice 목록은 기기의 보안 상태를 개선하기 위한 작업을 실행하는 데 도움이 됩니다. 예를 들면 다음과 같습니다.

 {
  "devicePosture": "POTENTIALLY_COMPROMISED",
  "postureDetails": [
    {
      "securityRisk": "UNKNOWN_OS",
      "advice": [
        {
          "defaultMessage": "The user should lock their device's bootloader."
        }
      ]
    },
    {
      "securityRisk": "HARDWARE_BACKED_EVALUATION_FAILED"
    }
  ]
}

보안 태세 평가

기본적으로 securityPosture는 키 증명, 특히 해당하는 경우 하드웨어 지원 키 증명 (HBKA)을 사용하여 평가되며, 보안 하드웨어에서 증명을 생성하고 서명함에 따라 신뢰할 수 있는 보안 확인 결과를 제공합니다.

이 평가에 HBKA를 사용할 수 없는 경우도 있습니다. 이를 반영하기 위해 securityRisk는 'HARDWARE_BACKED_EVALUATION_FAILED'를 반환합니다. 즉, securityPosture는 평가할 수 있지만 HBKA는 평가할 수 없습니다. 즉, 기기의 부팅 무결성 상태가 손상될 수 있으며 (예: 기기가 루팅될 수 있음) 소프트웨어 기반 감지에서는 감지되지 않을 수 있습니다.

보안 상태 확인 결과 이해하기

devicePosturesecurityRisk의 다양한 조합을 해석하여 기기의 전반적인 보안을 파악할 수 있습니다. 아래 목록은 일부일 뿐 전체 목록이 아닙니다.

  • devicePosture가 'SECURE'를 반환하고 securityRisk가 'HARDWARE_BACKED_EVALUATION_FAILED'를 반환하면 기기의 무결성이 안전하지만 HBKA에서 이를 확인할 수 없습니다.
  • devicePosture가 'POTENTIALLY_COMPROMISED'를 반환하고 securityRisk 결과가 반환되지 않으면 평가에 HBKA가 사용되고 기기가 손상된 것으로 간주됩니다.
  • devicePosture가 'POTENTIALLY_COMPROMISED'를 반환하고 securityRisk가 'HARDWARE_BACKED_EVALUATION_FAILED'를 반환하면 소프트웨어 기반 검사만 실행할 수 있지만 무결성 위협 신호가 충분히 강력하여 기기를 손상된 것으로 간주할 수 있습니다.
  • devicePosture가 'POSTURE_UNSPECIFIED'를 반환하면 보안 평가를 완료할 수 없습니다. 새 확인 결과가 반환될 때 발생하는 HBKA 재발급을 기다렸다가 특정 값을 반환할 수 있는지 확인하는 것이 좋습니다. 그러나 초기 설치 시 'POSTURE_UNSPECIFIED'가 잠시 발생할 수 있습니다.

Android Management API와 Play Integrity API 매핑

다음 표에는 AM API 확인 결과와 Play Integrity API 확인 결과 응답 간의 매핑 등가가 나와 있습니다.

AM API DevicePosture AM API Posture.Detail.SecurityRisk Play Integrity API 결과에 상응하는 값
SECURE SECURITY_RISK_UNSPECIFIED MEETS_STRONG_INTEGRITY
SECURE 포함: HARDWARE_BACKED_EVALUATION_FAILED MEETS_DEVICE_INTEGRITY
POTENTIALLY_COMPROMISED 포함: UNKNOWN_OS MEETS_BASIC_INTEGRITY
POTENTIALLY_COMPROMISED 포함: COMPROMISED_OS <unset>
POSTURE_UNSPECIFIED <any> <unset>