제로 트러스트 신호

Android는 관리자가 신호를 보내어 메시지를 전송하는 데 사용할 수 있는 기기의 보안 상태를 결정합니다 제로 트러스트 보안 모델에서, 이러한 신호는 기기에서 사용할 수 있습니다.

기능 설명 완전 관리형 기기 회사 소유 기기의 직장 프로필 개인 소유 기기 (BYOD)의 직장 프로필 비관리 기기
재생 Integrity API 신뢰 브로커는 다음 신호를 검색할 수 있습니다.
  • 기기 무결성
  • 앱 무결성
  • Play 라이선스 세부정보
  • 새로운 Play 프로텍트 확인 결과를 포함한 환경 세부정보
  • 보안 하드웨어 있음/키 증명 신뢰 브로커는 PKI 사용자 인증 정보가 생성되어 안전한 하드웨어에 저장되었는지 확인할 수 있습니다.
    기기 속성 증명 키 증명의 일부로 기기 속성을 인증 레코드의
    기기 보안 패치 수준 트러스트 브로커는 OS 보안 패치 수준을 검증할 수 있음
    기기에 대기 중인 OTA가 있나요? 신뢰 브로커는 대기 중인 기기 OS 업데이트가 있는지 확인할 수 있습니다. 사용 가능 해당 사항 없음
    메인라인 보안 패치 수준 트러스트 브로커는 설치된 앱의 보안 패치 수준을 읽을 수 있습니다. 간선 기차
    등록별 ID 트러스트 브로커는 고유한 기기 ID에 액세스할 수 있습니다. 제공합니다 이 ID는 직장 프로필 재생성 및 기기 초기화 후에도 유지됩니다. 재설정 해당 사항 없음
    관리 상태 (및 관리 앱) 신뢰 브로커는 이를 사용하여 기기가 관리되는지 확인할 수 있습니다. 해당 사항 없음
    디스크 암호화 트러스트 브로커는 기기가 암호화되었는지 확인할 수 있습니다 (Android 8 지원이 필요한 경우).
    OS 버전 신뢰 브로커는 기기 OS 버전을 확인하고 다음을 초과하는지 확인할 수 있습니다. 특정 버전
    네트워크 상태 액세스(네트워크 상태 및 Wi-Fi 상태) 트러스트 브로커는 활성 네트워크 상태에 대한 정보를 가져올 수 있음 (셀룰러 및 Wi-Fi)
    Wi-Fi 상태에 액세스합니다(Android 11 이하, Android 12 이상은 콜백 또는 주문형 접근 방식을 모두 지원함). 트러스트 브로커는 활성 Wi-Fi 네트워크에 관한 정보를 가져올 수 있습니다.
    프록시 설정 신뢰 브로커는 현재 기본 HTTP 프록시 설정에 관한 정보를 가져올 수 있습니다.
    화면 잠금 품질 검사 신뢰 브로커는 기기에 특정 품질의 화면 잠금이 있는지 확인할 수 있습니다. 액세스 권한을 부여하기 전에
    개발자 옵션 사용 설정됨 개발자 옵션이 사용 설정된 경우 신뢰 브로커는 기기를 더 광범위한 공격 노출 영역이 있는 것으로 식별할 수 있습니다.
    다음과 같음 DNS over TLS 사용 설정됨 신뢰 브로커는 이를 활용하여 비공개 DNS 모드가 사용 설정되어 있는지 확인할 수 있습니다.
    SafetyNet 세이프 브라우징 트러스트 브로커는 특정 URL이 알려진 위협으로 분류했습니다.
    외부 미디어 장착됨 외부 저장소가 마운트되면 트러스트 브로커가 알림을 받을 수 있음
    UsageStatsManager 트러스트 브로커는 개별 앱의 사용 패턴 연구 가능 1
    보안 로깅 트러스트 브로커는 이 데이터를 컨텍스트의 일부로 활용할 수 있음 규정 준수를 보장하고 동작 기반 디지털 지문을 생성 2 지원2 해당 사항 없음
    네트워크 로깅 트러스트 브로커는 이 데이터를 컨텍스트의 일부로 활용할 수 있음 규정 준수를 보장하고 동작 기반 디지털 지문을 생성 지원2 지원2 해당 사항 없음
    NetworkStatsManager 신뢰 브로커는 지정된 시간 간격 내에 앱의 네트워크 사용량을 쿼리할 수 있습니다. 2 1
    패키지 공개 상태(기기의 모든 앱 나열) 신뢰 브로커는 기기에 설치된 앱을 쿼리할 수 있습니다. 해당함3 해당함3
    읽기 전화 상태 트러스트 브로커는 모바일 네트워크 정보, 진행 중인 모든 호출, PhoneAccount 목록 기기에 등록됨
    기기가 마지막으로 재부팅된 시점 트러스트 브로커는 시스템 업타임을 얻을 수 있음
    계정 가져오기 신뢰 브로커는 이를 활용하여 계정 서비스의 계정 목록에 액세스할 수 있습니다. 3 3 1
    배터리 수준의 중요한 변화 모니터링 신뢰 브로커는 배터리 수준의 큰 변화를 모니터링할 수 있습니다.
    위치 (세분함, 대략적 등) 신뢰 브로커가 기기의 실제 위치에 액세스할 수 있음 1 1

    1 사용자 동의가 있는 경우

    2 직장 프로필만

    3 직장 프로필 정보에만 액세스할 수 있음

    트러스트 브로커는 클러스터의 PackageInfocom.google.android.modulemetadata 모듈을 통해 versionName:

    private fun mainlineVersion(context: Context): String? {
        val moduleProvider = "com.google.android.modulemetadata"
    
        return try {
                val pm = context.packageManager
                val packageInfo = pm.getPackageInfo(moduleProvider, 0)
                packageInfo.versionName
            } catch (e: PackageManager.NameNotFoundException) {
                null
            }
    }
    

    다음을 사용하여 반환된 문자열을 Date 객체로 파싱할 수 있습니다. SimpleDateFormat 클래스:

    private val VERSION_NAME_DATE_PATTERNS = Arrays.asList(
          "yyyy-MM-dd",
          "yyyy-MM"
    )
    
    private fun parseDateFromVersionName(text: String): Date? {
        for (pattern in VERSION_NAME_DATE_PATTERNS) {
            try {
                val simpleDateFormat = SimpleDateFormat(
                    pattern,
                    Locale.getDefault()
                )
                simpleDateFormat.timeZone = TimeZone.getDefault()
                return simpleDateFormat.parse(text)
            } catch (e: ParseException) {
                // ignore and try next pattern
            }
        }
        return null
    }
    

    Android 11 이상에서는 Android의 패키지 공개 상태를 충족하기 위해 AndroidManifest.xml 파일에 쿼리 선언을 추가해야 합니다.

    <manifest package="com.example.game">
        <queries>
            <package android:name="com.google.android.modulemetadata" />
        </queries>
        ...
    </manifest>
    

    신뢰 브로커는 이러한 메서드를 사용하여 기기가 관리 모드인지, 어떤 관리 모드가 활성 상태인지 확인할 수 있습니다.

    기기 관리 확인

    getActiveAdmins()를 사용하여 관리 중인 기기가 있는지 확인합니다. 이 메서드가 null를 반환하면 기기가 관리되지 않는 것입니다.

    완전 관리형 기기 확인

    isDeviceOwnerApp()를 사용하여 기기가 완전 관리형인지 확인합니다.

    회사 소유 기기에서 직장 프로필 확인하기

    isOrganizationOwnedDeviceWithManagedProfile()를 사용하여 기기가 연결되어 있는지 확인합니다. 회사 소유 기기에 직장 프로필 관리 모드 사용 중

    개인 소유 기기에서 직장 프로필 확인하기

    isProfileOwnerApp()를 사용하여 앱이 직장 프로필 내에서 실행 중인지 확인하고 isOrganizationOwnedDeviceWithManagedProfile()false를 반환하는지 확인합니다.