管理対象プロファイルのサポートを最小限に抑えるには、OEM デバイスに対して以下の不可欠な要素を指定する必要があります。
- プロファイル オーナー(管理対象プロファイルとの互換性の確保を参照)
- デバイス所有者
要件の全リストについては、デバイス管理を実装するをご覧ください。デバイス所有者は、下記のように TestDPC アプリを使用して、デバイス管理機能をテストできます。
テスト用にデバイス オーナーをセットアップする
次の手順に沿って、デバイス所有者のテスト環境を設定します。
- 対象のデバイスを出荷時の設定にリセットします。
- デバイスにユーザー アカウントが残っていないことを確認します(オンライン サービスへのログインに使用されているユーザー アカウントなども含む)。アカウントは、[設定] > [アカウント] で確認できます。
- 次のいずれかの方法で、テストアプリをセットアップします。
- TestDPC アプリをダウンロードする(Google Play から入手できます)
- TestDPC アプリをビルドする(github.com から入手できます)
- 次のコマンドを使用して、TestDPC アプリをデバイス所有者として設定します。
adb shell dpm set-device-owner "com.afwsamples.testdpc/.DeviceAdminReceiver"
- デバイス上で、デバイス所有者に関するすべてのセットアップを完了します(暗号化や Wi-Fi の選択)。
デバイス所有者のセットアップを検証する
デバイス オーナーが正しく設定されていることを確認するには、[設定] > [セキュリティ] > [デバイス管理アプリ] に移動し、TestDPC が一覧に表示されることを確認します。また、TestDPC を無効にできないことを確認します(これにより、TestDPC がデバイス オーナーであることがわかります)。
バグレポートとログ
Android 7.0 以降、デバイス所有者のデバイス ポリシー クライアント(DPC)が、バグレポートを取得して、管理対象デバイス上のエンタープライズ プロセスのログを表示できるようになりました。
バグレポート(adb bugreport
が収集するデータと同等。dumpsys
、dumpstate、logcat のデータが含まれます)をトリガーするには、DevicePolicyController.requestBugReport
を使用します。バグレポートの収集が完了すると、バグレポート データの送信に関して同意を求めるメッセージがユーザーに表示されます。結果は、DeviceAdminReceiver.onBugreport[Failed|Shared|SharingDeclined]
に送信されます。バグレポートの内容については、バグレポートを読むをご覧ください。
また、デバイス所有者 DPC は、管理対象デバイス上でユーザーが行ったアクションに関するログを収集することもできます。device_admin をレポートするすべてのデバイスにおいて、エンタープライズ プロセスのロギングが必要となります。このロギングでは、システム サーバーだけが読み取れる新しいログ セキュリティ バッファが使用されます(つまり $ adb logcat -b security
はバッファを読み取れません)ActivityManager サービスと Keyguard コンポーネントは、以下のイベントをセキュリティ バッファに記録します。
- アプリケーション プロセスの開始
- キーガードの操作(ロック解除の失敗や成功など)
- デバイスに発行された
adb
コマンド
必要に応じて、コールドブート後ではなくリブート後もログを保持し、そのログをデバイス オーナー DPC で使用することができます。そのためには、pstore
と pmsg
を有効にしたカーネルをデバイス内に設定し、リブートのすべてのステージで DRAM に対して電源供給とリフレッシュを行い、メモリ内に保持されているログの破損を防ぐ必要があります。サポートを有効にするには、frameworks/base/core/res/res/values/config.xml
内で config_supportPreRebootSecurityLogs
設定を使用します。