이 가이드에서는 기기 정책 컨트롤러 (DPC)를 개발하는 방법을 설명합니다. Android 엔터프라이즈 배포의 기기입니다. 이전에 알려진 DPC 앱 업무용 정책 컨트롤러로서 로컬 기기 정책 및 시스템을 제어합니다. 애플리케이션을 실행할 수 있습니다
<ph type="x-smartling-placeholder">DPC 정보
Android Enterprise 배포에서 기업은 사용자 기기의 다양한 측면(예: 업무 관련 격리) 사용자로부터 수집한 정보를 개인 정보, 개인 정보 보호를 위한 승인된 앱 사전 구성 기기 기능 (예: 카메라)을 사용 중지할 수 있습니다.
EMM으로 고객이 사용할 수 있는 DPC 앱을 개발합니다. EMM 콘솔 및 있습니다. 고객이 자신이 관리하는 사용자 기기에 DPC를 배포합니다. DPC는 EMM 콘솔 (및 서버)과 기기 사이의 다리 역할을 합니다. 관리자는 EMM 콘솔을 사용하여 기기 설정 및 앱 구성
DPC는 설치된 기기에서 직장 프로필을 만들고 관리합니다. 직장 프로필은 직장 관련 정보를 암호화하여 사용자 개인 앱 및 데이터를 사용할 수 있습니다. DPC는 직장 프로필을 생성하기 전에 기기에서 사용할 관리 Google Play 계정 프로비저닝
이 가이드에서는 직장 프로필을 만들고 관리할 수 있는 DPC를 개발하는 방법을 설명합니다.
EMM용 DPC 지원 라이브러리
EMM용 DPC 지원 라이브러리는 기업 내 Android 기기의 프로비저닝 및 관리를 지원합니다. 환경입니다 이 라이브러리를 사용하면 DPC 앱:
- 관리 Google Play 계정 프로비저닝 지원: 프로비저닝 관리 DPC 앱의 Google Play 계정을 사용하려면 Google Play 및 Google Play 서비스 앱이 최소 버전 요구사항을 충족합니다. 하지만 이러한 복잡할 수 있습니다. DPC 지원 라이브러리는 관리 Google Cloud 앱에 대한 향후 업데이트와의 호환성을 보장하며 Play 계정 프로비저닝 프로세스 Managed Google Play 계정 보기 프로비저닝 지원을 참조하세요.
- 관리 구성 지원: Play EMM API를 사용하여 승인된 앱의 관리 구성을 처리하는 것은 DPC에서 관리 구성을 구현하는 가장 쉬운 방법입니다. DPC 지원 라이브러리를 사용하면 관리 대상 적용 작업을 Google Play에 위임할 수 있습니다. 관리자가 EMM을 사용하여 설정한 구성 (이전의 앱 제한사항) 살펴보겠습니다 Play EMM API를 사용하여 관리 구성을 처리하면 다음과 같은 이점이 있습니다. 앱 구성이 설치 중에 원자적으로 적용됩니다. 자세한 내용은 관리 구성 적용 직장 앱에 있습니다.
아래 단계에 따라 라이브러리를 다운로드하세요. 이 가이드에 설명된 작업 DPC 지원 라이브러리를 사용한다고 가정합니다.
DPC 지원 라이브러리 다운로드
DPC 지원 라이브러리를 사용하려면 Android Enterprise EMM 제공업체 커뮤니티에서 라이브러리를 다운로드하세요. build.gradle 파일에 라이브러리를 추가하고 DPC 앱 빌드 시 종속 항목을 제거합니다. 예를 들어 라이브러리에는 11.4.0이 필요합니다. <ph type="x-smartling-placeholder"></ph> Google Play 서비스 인증 클라이언트 라이브러리를 사용해야 합니다.
build.gradle
파일에 라이브러리를 추가합니다.
Groovy
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- 11.4.0을 추가합니다.
Google Play 서비스 인증 클라이언트 라이브러리를 build.gradle 파일에 추가합니다.
Groovy
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
라이브러리를 실행하려면 특정 권한이 필요하므로 이러한 권한을 DPC 앱의 매니페스트는 Google Play에 업로드할 때 다음과 같이 설정됩니다.
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
이러한 예비 설정 및 배포 단계 외에도 디코더에 따라 DPC 코드에서 특정 라이브러리 기능을 기능을 정의합니다 세부정보는 관련 섹션을 참조하세요.
DPC 만들기
기기 관리 애플리케이션에 사용되는 기존 모델에 DPC를 빌드합니다.
특히 앱은
DeviceAdminReceiver
(android.app.admin
의 클래스)를 서브클래스로 만들어야 합니다.
패키지)에 설명된 대로
<ph type="x-smartling-placeholder"></ph>
기기 관리.
직장 프로필 만들기
기본 직장 프로필을 만드는 방법을 보여주는 샘플은 다음을 참고하세요. <ph type="x-smartling-placeholder"></ph> BasicManagedProfile
이미 개인 프로필이 있는 기기에서 직장 프로필을 만들려면 다음 단계를 따르세요.
먼저
포드의 존재 여부에
FEATURE_MANAGED_USERS
시스템 기능:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
자바
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
기기에서 직장 프로필을 지원하는 경우 인텐트를 전송하여 직장 프로필을 만듭니다. ACTION_PROVISION_MANAGED_PROFILE 사용 있습니다. 일부 문서에서는 관리 프로필이 직장 프로필과 동일한 것을 의미하는 일반적인 용어 말씀드리겠습니다.) 기기 관리자 패키지 이름을 포함합니다. 추가:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
자바
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
시스템은 다음을 실행하여 이 인텐트에 응답합니다.
- 기기가 암호화되었는지 확인합니다. 사용 설정되어 있지 않으면 계속 진행하기 전에 사용자가 기기를 암호화하도록 합니다.
- 직장 프로필을 만듭니다.
- 필수가 아닌 애플리케이션을 직장 프로필에서 삭제합니다.
- DPC 앱을 직장 프로필에 복사하고 DPC 자체를 다음과 같이 설정합니다. 할 수 있습니다.
onActivityResult()
을(를) 다음으로 재정의:
프로비저닝이 성공했는지 확인합니다.
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
자바
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
직장 프로필 사용 설정 완료
프로필이 프로비저닝되면 시스템은 DPC를 호출합니다.
앱의
DeviceAdminReceiver.onProfileProvisioningComplete()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다. 재정의
이 콜백 메서드를 호출하여 직장 프로필 사용 설정을 완료합니다.
일반적인 DeviceAdminReceiver.onProfileProvisioningComplete()
콜백 구현은 다음을 실행합니다.
- 다음과 같이 기기가 EMM의 기기 정책을 준수하는지 확인합니다. 기기 정책 설정에 설명된 대로 준수할 수 있습니다.
- 관리자가 만든 시스템 애플리케이션을 사용 설정합니다.
DevicePolicyManager.enableSystemApp()
를 사용하여 직장 프로필 내에서 사용할 수 있습니다. - 기기에서 관리 Google Play를 사용하는 경우
직장 프로필을 설정해야 합니다.
<ph type="x-smartling-placeholder">- </ph>
- 관리 Google Play 계정: 작동하는지 확인 관리 Google Play 계정 환경 설정 및 관리 Google Play 계정 추가 참조하세요.
- Google 계정:
AccountManager.addAccount()
를 사용합니다.
직장 프로필 활성화
이 작업을 완료하면 기기 정책 관리자의
setProfileEnabled()
메서드를 사용하여 직장 프로필을 활성화합니다.
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
자바
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
기기 정책 설정
DPC 앱은 관리자가 설정한 대로 기기 정책을 제약 조건을 잘 살펴봤습니다 예를 들어 보안 정책은 비밀번호 입력에 일정 횟수 이상 실패하면 기기가 잠기도록 할 수 있습니다. DPC는 EMM 콘솔에 현재 정책을 쿼리한 다음 정책을 적용합니다. 기기 Administration API로 구성되어 있습니다.
기기 정책을 적용하는 방법에 대한 자세한 내용은 다음을 참조하세요. <ph type="x-smartling-placeholder"></ph> 정책.
관리 구성 적용 직장 앱으로
관리 구성을 사용하면 고객에게 다음과 같은 기능을 제공할 수 있습니다. 배포 승인을 받은 앱을 사전 구성하고 앱에 쉽게 배포할 수 있습니다. 다음 날짜 이전에 앱 구성 조직의 보안 및 기타 정책이 준수되고 있는지 앱 설치 시 표시됩니다.
앱 기능은 앱 개발자가 XML 스키마( 관리 구성 스키마)이 포함됩니다. Play (앱 개발자, 자세한 내용은 관리 구성 설정 참고)
앱에서 이 스키마를 검색하여 고객 관리자에게 표시합니다. 을 사용하는 경우, 스키마 표시를 검사하고 관리자가 앱 설정을 사전 구성할 수 있도록 합니다 관리자가 설정한 결과로 생성되는 관리 구성은 일반적으로 다음과 같습니다. 저장된 다음 설정할 EMM API 실행 기기의 관리형 구성 또는 Managedconfigurationsforuser를 구성합니다. 자세한 내용은 관리 구성 Play를 통해 확인하세요.
Play EMM API를 사용하여 관리 구성을 앱에 적용할 수 있습니다. (권장되는 접근 방식) 또는 DPC에서 직접 (관리 구성 적용에 설명) DPC)로 전달됩니다. Play EMM API 사용 는 여러 가지 장점이 있습니다. 예를 들어 DPC 작업을 간소화하는 DPC 지원 라이브러리. 또한 Play EMM API는 다음 조건을 충족해야 합니다.
- 새 앱이 설치되면 구성을 원자적으로 설정하므로 사용자가 앱을 처음 실행할 때 앱이 준비될 수 있습니다.
- 사용자별로 구성을 관리할 수 있으므로 기기별로 프로비저닝을 모니터링할 필요가 없습니다.
다음을 사용하여 관리 구성을 적용합니다. Play EMM API
관리 구성에 Play EMM API를 사용하려면 DPC가 Google Play에서 구성을 설정합니다. DPC 지원 라이브러리가 이 작업을 처리함 Google Play에서 보낸 설정을 프록시하여 할 수 있습니다.
Play EMM API를 사용하려면 DPC 지원 라이브러리를 다운로드하세요. DPC에서 관리 구성 지원을 사용 설정합니다.
관리 구성 지원 사용 설정 내 DPC
DPC에서 이 클래스를 가져옵니다.
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
관리 구성 라이브러리를 초기화합니다. 이 예에서 'admin'은 은 DeviceAdminReceiver의 ComponentName입니다.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
자바
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
관리 구성을 사용 설정합니다.
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
자바
managedConfigurationsSupport.enableManagedConfigurations();
DPC에서 이 라이브러리를 초기화하면 EMM의 Google Play EMM API 승인된 앱에 관리 구성을 적용하는 대신 콘솔 및 서버에서 이러한 작업을 DPC에 직접 코딩합니다. 자세한 내용은 <ph type="x-smartling-placeholder"></ph> Play를 통한 관리 구성을 참조하세요.
관리 구성 적용 DPC에서 직접
DPC에서 직접 앱의 구성 설정을 변경하려면 DevicePolicyManager.setApplicationRestrictions() 메서드 및 DPC 앱의 DeviceAdminReceiver: 타겟 앱의 패키지 이름 구성 요소로 이루어진 번들은 관리자가 설정한 앱의 관리 구성 자세한 내용은 어떻게 DPC 및 EMM 콘솔이 상호작용하고 자세한 내용은 관리 구성 설정을 참조하세요. 하지만 관리형 애플리케이션에 대한 이 대체 접근 방식은 관리 Google Play 계정 배포에서는 권장되지 않습니다.
관리 Google Play 계정 프로비저닝 지원
DPC 지원 라이브러리에는 kubectl 명령어 관리 Google Play 계정 이 지원을 사용하려면 먼저 그런 다음 콘텐츠가 작업 환경과 작업 환경 관리 Google Play 계정으로 등록되어 있어야 합니다.
Managed Google Play 계정 초기화 DPC 지원
DPC에서 이 클래스를 가져옵니다.
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
프로비저닝 호환성 라이브러리를 초기화합니다. 이 예에서 '관리자'는
DeviceAdminReceiver
의 ComponentName
입니다.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
자바
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
IT 지원 전문가를 위한 작업 환경을 관리 Google Play 계정
DPC가 기기를 프로필 소유자 모드 (ACTION_PROVISION_MANAGED_PROFILE
)로 프로비저닝한 후 또는 기기를 프로비저닝한 후
소유자 모드 (ACTION_PROVISION_MANAGED_DEVICE
)로 설정한 경우 다음을 호출하여 기기가 관리 Google Play 계정을 지원할 수 있는지 확인합니다.
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
자바
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
콜백은 이 프로세스의 성공 또는 실패를 보고합니다. 콜백이 관리 Google Play 계정을 추가할 수 있습니다. 만약 콜백이 오류를 보고하면 사용자에게 기기가 네트워크에 연결되어 있는지 확인하세요 (예: 다운로드에 실패하는 경우). 기타 Google에 실패를 보고합니다.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
자바
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
관리 Google Play 계정 추가
Android 프레임워크의 AccountManager
관리 Google Play 계정을 기기에 추가할 수 있습니다. Google과의 상호작용 간소화를 위해
AccountManager
: 도우미 함수 사용 (아래 예 참고)
(DPC 지원 라이브러리) 함수
Google Play 서버에서 반환한 토큰을 처리하고, 프로비저닝을 촉진합니다.
관리 Google Play 계정 이 함수는 관리 Google Play가
계정이 유효한 상태입니다.
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
자바
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
: Google 인증 파트너가 생성한 사용자 인증 토큰 Play EMM APIUsers.generateAuthenticationToken()
호출accountAddedCallback
: 관리 Google Play 계정 반환 표시됩니다. 이 콜백에는onAccountReady()
및onFailure()
메서드
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
자바
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
관련 문서
- Device Administration API에 관해 자세히 알아보려면 다음을 참고하세요. 기기 관리.
- Android Enterprise 프로비저닝 방법에 관한 자세한 내용은 다음을 참고하세요. 다음에서 기기를 프로비저닝합니다. Android Enterprise 개발자 가이드
- 기본 직장 프로필을 만드는 방법을 보여주는 GitHub 샘플의 경우 BasicManagedProfile을 참조하세요.
- 다른 앱에서 프로필 소유자, 참조 AppRestrictionEnforcer를 만듭니다.