Android 8.0의 새로운 기능

이 페이지에서는 Android 8.0 (API 수준 26)에서 도입되어 엔터프라이즈의 Android에 영향을 미치는 새로운 API, 기능, 동작 변경사항을 간략하게 설명합니다.

새로운 API 및 기능

프로필 소유자 및 기기 소유자 관리 모드가 그 어느 때보다 더 강력하고 생산적이며 쉽게 프로비저닝되도록 했습니다. 또한 완전 관리형 기기의 직장 프로필이라는 완전히 새로운 배포 시나리오도 사용 설정되었습니다. 이러한 기능과 기타 기능은 다음 섹션에서 설명합니다.

완전 관리형 기기의 직장 프로필

Android 8.0에서는 완전 관리형 기기에 직장 프로필도 있을 수 있습니다. 이를 통해 기업은 두 프로필에 대한 제어 및 가시성을 유지하면서 앱과 정책을 분리할 수 있습니다. 기존 기기 소유자 또는 다른 기기 정책 컨트롤러 (DPC)는 관리 프로필을 만들 수 있습니다.

완전 관리형 기기에서 직장 프로필을 사용하면 기기 소유자가 다음 작업을 할 수 있습니다.

  • EXTRA_PROVISIONING_SKIP_USER_CONSENT를 호출하여 사용자 상호작용 없이 관리 프로필을 만듭니다.
  • 보조 사용자 또는 관리 프로필이 생성되거나 삭제될 때 알림을 수신합니다. 콜백은 onUserAdded()onUserRemoved()입니다.
  • 다른 DPC가 DISALLOW_ADD_MANAGED_PROFILE를 사용하여 관리 프로필을 만들지 못하게 합니다. 이 설정은 새로 프로비저닝된 기기 또는 Android 8.0으로 업그레이드된 기기의 기기 소유자의 경우 Android 8.0에서 기본값입니다.
  • 기기 소유자는 사용자가 DISALLOW_REMOVE_MANAGED_PROFILE를 사용하여 기존 관리 프로필을 삭제하지 못하도록 할 수도 있습니다.

기기 소유자와 프로필 소유자는 동일한 APK를 사용하고 소유자가 연결되어 있는 경우 서로 통신할 수 있습니다 (아래 사용자 제휴 참고).

이 새로운 배포 시나리오를 지원하는 방법에 관한 자세한 내용은 완전 관리형 기기의 직장 프로필 전용 페이지를 참고하세요.

사용자 제휴

기기 소유자와 프로필 소유자가 동일한 조직을 나타내는 경우:

  • 기기 및 프로필 소유자는 동일한 APK 내에서 서로 통신할 수 있습니다. 정책이나 상태를 공유하는 것이 좋습니다 (위의 완전 관리 기기의 직장 프로필 참고).

  • 잠금 작업 모드 로깅 또는 허용 목록 추가와 같은 기기 전체 기능은 연결된 사용자에게 적용될 수 있습니다.

프로필 또는 사용자에 연결된 제휴 ID는 조직을 식별합니다. 제휴 ID가 일치하면 사용자가 연결됩니다. 기기 소유자와 프로필 소유자는 setAffiliationIds()를 사용하여 제휴 ID를 설정합니다. 길고 추측하기 어려운 문자열 ID를 사용하는 조직을 나타냅니다.

연결된 사용자의 새로운 액세스 권한

기기의 모든 보조 사용자와 프로필이 기기 소유자와 연결되어 있으면 다음 기능을 사용할 수 있습니다.

이전에는 보안 로깅 및 버그 신고는 단일 사용자 기기나 프로필과 사용자가 각각 한 명만 있는 기기에서만 사용할 수 있었습니다.

작업 잠금 모드는 setLockTaskPackages()를 통해 기기 소유자와 연결된 경우 보조 사용자 및 관리 프로필에서 사용할 수 있습니다. 사용자 제휴에 대한 자세한 내용은 연결된 사용자를 참조하세요.

맞춤설정된 프로비저닝 면책 조항

이제 DPC는 프로비저닝 중에 사용자에게 자체 면책 조항을 표시할 수 있습니다. EXTRA_PROVISIONING_DISCLAIMERS, EXTRA_PROVISIONING_DISCLAIMER_HEADER, EXTRA_PROVISIONING_DISCLAIMER_CONTENT를 사용하여 스타일이 지정된 텍스트 면책 조항을 제공합니다. DPC의 맞춤 면책 조항은 접을 수 있는 용어 목록에 표시됩니다.

보안

프로필 소유자와 기기 소유자는 setRequiredStrongAuthTimeout()를 사용하여 지문 또는 Trust Agent와 같은 보조 인증 방식으로 기기 또는 프로필을 잠금 해제하기 위한 제한 시간을 구성할 수 있습니다. 제한 시간이 만료되면 사용자는 비밀번호, PIN 또는 패턴과 같은 강력한 인증 방법을 사용하여 기기 또는 프로필을 잠금 해제해야 합니다.

기기 소유자와 프로필 소유자는 resetPasswordWithToken()를 사용하여 기기 및 직장 프로필 비밀번호를 안전하게 재설정할 수 있습니다. 파일 기반 암호화를 지원하는 기기의 경우 DPC가 암호화를 인식하는 경우 사용자가 기기 또는 프로필을 잠금 해제하기 전에 이 API를 사용할 수 있습니다.

파일 기반 암호화를 지원하는 기기에서 직장 프로필을 잠글 때 lockNow(int)는 선택적으로 FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY를 사용하여 직장 프로필의 기본 암호화 키를 제거할 수 있습니다. 또한 사용자가 직장 프로필을 사용 중지하면 암호화 키도 삭제됩니다.

또한 기기 소유자는 setNetworkLoggingEnabled()를 사용하여 회사 소유 기기에서 시작된 DNS 쿼리 및 TCP 연결의 네트워크 로깅을 사용 설정할 수 있습니다. 자세한 내용은 네트워크 활동 로깅을 참고하세요.

프로필 소유자는 직장 프로필 알림을 관찰할 수 있는 기본 사용자의 패키지를 제한할 수 있습니다. setPermittedCrossProfileNotificationListeners()를 호출하여 NotificationListenerService를 통해 이벤트를 수신하는 허용 목록에 있는 패키지를 설정합니다. 허용되는 리스너를 null (기본값)로 설정하면 허용 목록 추가가 사용 중지되고 모든 패키지가 알림을 수신 대기할 수 있습니다. 이벤트를 시스템 패키지로 제한하려면 빈 Set을 전달합니다. 직장 프로필 알림에 액세스할 수 없는 앱을 보려면 사용자는 설정 > 앱 및 알림 > 특수 앱 액세스 > 알림 액세스를 탭하면 됩니다.

마지막으로, 프로필 소유자와 기기 소유자는 getPendingSystemUpdate()를 사용하여 기기에서 사용 가능한 대기 중인 시스템 업데이트에 관한 정보를 검색할 수 있습니다.

App Management API 위임

API 위임을 통해 기기 소유자와 프로필 소유자가 앱 관리를 다른 애플리케이션에 완전히 오프로드할 수 있습니다. DevicePolicyManager 클래스는 기기 및 프로필 소유자가 패키지에 부여할 수 있는 위임 범위를 관리하는 메서드를 제공합니다.

  • setDelegatedScopes() 메서드를 사용하면 기기 소유자와 프로필 소유자가 권한 있는 API에 관한 액세스 권한을 다른 앱에 부여할 수 있습니다.
  • getDelegatedScopes() 메서드는 패키지에 부여된 범위를 반환합니다.
  • getDelegatePackages()는 범위가 있는 패키지를 반환합니다.

다음 표는 DevicePolicyManager의 다양한 메서드가 다양한 범위로 구성되는 방식을 보여줍니다.

표 1. 범위와 기기 정책 메서드 간의 대응

그룹 메서드
DELEGATION_CERT_INSTALL
DELEGATION_APP_RESTRICTIONS
DELEGATION_BLOCK_UNINSTALL setUninstallBlocked()
DELEGATION_PERMISSION_GRANT
DELEGATION_PACKAGE_ACCESS
DELEGATION_ENABLE_SYSTEM_APP enableSystemApp()

장기 실행 백그라운드 서비스

기기 및 프로필 소유자는 DeviceAdminService를 서브클래스로 분류하여 백그라운드 서비스를 만들 수 있습니다. Android 시스템은 사용자가 실행되는 동안 서비스를 실행 상태로 유지하려고 합니다. 주기적인 작업을 실행하려면 백그라운드 서비스를 만들기 전에 JobScheduler를 사용하는 것이 좋습니다.

백업 서비스 제어

기기 소유자는 DevicePolicyManager의 새 메서드를 사용하여 Android Backup Service를 전환할 수 있습니다. setBackupServiceEnabled()를 사용하여 백업 서비스를 사용 설정 및 중지합니다. isBackupServiceEnabled()를 사용하여 백업 서비스 상태를 확인합니다.

Wi-Fi 프록시 구성

기기 소유자 및 프로필 소유자는 Wi-Fi 네트워크용 HTTP 프록시 서버를 구성할 수 있습니다. PAC 파일 또는 수동 설정을 사용하여 각 Wi-Fi 네트워크의 프록시 서버를 구성합니다. WifiConfiguration의 프록시를 설정하거나 삭제하려면 setHttpProxy() 메서드를 호출합니다. 프록시 설정을 가져오려면 getHttpProxy()을 호출합니다.

관리자가 사용 중지한 기능에 대한 설명 대화상자

앱은 관리자가 사용 중지된 기능을 사용하려는 사용자에게 유용한 설명을 표시해야 합니다. 이제 모든 앱에서 createAdminSupportIntent()를 사용하여 startActivity(Intent)로 전달될 때 설명 대화상자를 표시하는 인텐트를 만들 수 있습니다. 인텐트에는 사용 중지된 카메라에 관한 맞춤설정된 현지화된 설명, 사용 중지된 화면 캡처 및 모든 UserManager 제한사항이 포함됩니다.

블루투스 제한

기기 소유자는 블루투스를 사용 중지할 수 있으며 이는 기기의 모든 사용자와 프로필에 영향을 미칩니다. 블루투스를 사용 중지하려면 사용자 제한 DISALLOW_BLUETOOTH를 추가합니다.

기기 소유자 및 프로필 소유자는 DISALLOW_BLUETOOTH_SHARING를 사용하여 사용자가 블루투스를 통해 파일을 전송하지 못하게 할 수 있습니다. 파일 수신은 영향을 받지 않습니다. 기기 소유자가 설정하면 DISALLOW_BLUETOOTH_SHARING가 기기의 모든 사용자에게 적용됩니다. 이 설정은 Android 8.0에서 Android 8.0으로 업그레이드된 기기의 새 프로필 및 기존 프로필의 기본값입니다.

동작 변경사항

DPC를 비롯하여 비즈니스용 앱을 빌드하는 경우 Android 8.0에서 다음과 같은 동작 변경사항을 검토하고 그에 따라 앱을 수정해야 합니다.

사용자 제거하기

기기 소유자는 DISALLOW_REMOVE_USER가 사용 설정되어 있어도 removeUser()를 사용하여 보조 사용자 및 관리 프로필을 삭제할 수 있습니다.

보안

인증

다음 변경사항이 DevicePolicyManager 클래스에 적용되었습니다.

  • lockNow() 메서드는 별도의 직장 프로필 보안 확인이 활성화된 경우에만 직장 프로필을 잠급니다.
  • resetPassword() 메서드는 기기 소유자 또는 프로필 소유자 역할을 하고 Android 8.0을 타겟팅하는 DPC에서 더 이상 사용할 수 없습니다. 호출하면 보안 예외가 발생합니다. 대신 DPC는 resetPasswordWithToken()를 사용해야 합니다.

    참고: Android 7.1.1 (API 수준 25) 이하를 타겟팅하는 DPC와 기기 관리자 권한만 있는 DPC는 이 변경사항의 영향을 받지 않습니다.

  • 파일 기반 암호화를 지원하는 기기의 경우 사용자가 재부팅 후 처음으로 기기를 잠금 해제하기 전에는 isActivePasswordSufficient()를 사용할 수 없습니다. 사용자가 기기를 잠금 해제하기 전에 호출하면 예외가 발생합니다.

잠긴 직장 프로필의 데이터

Android 8.0에는 잠긴 직장 프로필에서 데이터를 분리하기 위한 사용자 인터페이스 변경사항이 포함되어 있습니다.

  • 이제 직장 프로필의 앱 알림에서 콘텐츠를 숨길 수 있습니다. 이전에는 알림 창에 잠긴 직장 프로필의 직장 앱 콘텐츠가 표시되었습니다.
  • 이제 최근 화면에 잠긴 직장 프로필에서 앱을 실행하기 위한 일반 패널이 표시됩니다. 색상으로 입력된 일반 패널에는 앱의 아이콘과 이름이 표시됩니다. 이전에는 잠긴 직장 프로필의 활동이나 작업의 최근 화면에 미리보기가 표시되었습니다.

기기 무결성

  • 이제 ENSURE_VERIFY_APPS 플래그는 전역 사용자 제한입니다. 기기의 사용자에게 이러한 제한사항이 있으면 기기의 모든 사용자에게 앱 인증이 시행됩니다. 예를 들어 프로필 소유자가 직장 프로필에 제한을 설정하면 사용자의 개인 프로필에 앱 인증이 시행됩니다.
  • 이제 기기 소유자 외에도 프로필 소유자에 관해 onSystemUpdatePending() 메서드가 호출됩니다.
  • SystemUpdatePolicy 클래스를 사용하면 연기 정책이 더 이상 보안 패치에 적용되지 않으므로 보안 패치를 더 이상 연기할 수 없습니다. 그러나 자동 및 기간 설정과 같은 다른 정책 유형의 동작은 영향을 받지 않습니다.
  • 기기 소유자는 DISALLOW_FACTORY_RESET가 사용 설정되어 있어도 wipeData()를 사용하여 초기화를 트리거할 수 있습니다.

연결 유지 VPN

Android 8.0에는 사용자가 연결 유지 VPN 연결의 상태를 파악할 수 있도록 사용자 인터페이스 변경 사항이 포함되어 있습니다.

  • 상시 사용 설정 VPN 연결이 해제되거나 연결할 수 없는 경우 사용자에게 닫을 수 없는 알림이 표시됩니다. 알림을 탭하면 VPN 구성 설정이 표시됩니다. VPN이 다시 연결되거나 사용자가 연결 유지 VPN 옵션을 끄면 알림이 사라집니다.
  • 상시 사용 설정 VPN을 사용하면 기기 사용자가 VPN을 사용하지 않는 네트워크 연결을 차단할 수 있습니다. 이 옵션을 사용 설정하면 설정 앱에서 VPN이 연결될 때까지 인터넷에 연결되지 않는다는 경고를 사용자에게 표시합니다. 설정에서 사용자에게 계속하거나 취소하라는 메시지를 표시합니다.

이제 VPN 앱의 VpnService는 실행 후 startForeground() 메서드를 호출해야 합니다. Android 시스템은 VPN 앱의 서비스를 직접 시작하므로 포그라운드로 전환하는 것은 앱의 책임입니다. Android 8.0은 VPN 서비스를 포그라운드로 전환하지 않는 VPN 앱을 종료합니다.

비밀번호 콜백

이제 DeviceAdminReceiver의 비밀번호 변경 콜백에는 비밀번호가 속한 사용자 또는 프로필을 식별하는 user 매개변수가 포함됩니다. 새 메서드 서명은 다음과 같습니다.

각각의 새 메서드의 기본 구현은 이전 버전을 호출하여 사용자 인수를 삭제합니다. Android 8.0에서는 이전 메서드가 지원 중단됩니다.

App Management API 위임

DevicePolicyManager 클래스의 다음 메서드가 이제 지원 중단됩니다.

또한 이제 단일 범위를 여러 패키지에 위임할 수 있습니다. 즉, 기기 소유자와 프로필 소유자는 두 개의 다른 패키지에 동일한 API 집합에 대한 액세스 권한을 동시에 부여할 수 있습니다.