デバイスのプロビジョニングにはいくつかの方法があります。どのプロビジョニング方法を使用するかは、お客様のビジネス要件によって決まります。
デバイスのプロビジョニングの基本
お客様がサポートするデバイス プロビジョニングのデプロイ シナリオ(BYOD や会社所有など)によって、使用する動作モード(デバイス所有者モードやプロファイル所有者モードなど)が決まります。同様に、サポートする必要があるオペレーション モードと Android リリースによって、実装するプロビジョニング方法が決まります。
デプロイメント シナリオ
会社所有の場合、従業員が使用するデバイスは企業が所有し、完全に管理します。一般に、デバイス全体のモニタリングと管理を厳密に行う必要がある場合は、会社所有のデバイスをデプロイします。
BYOD のデプロイ シナリオをサポートしている企業は、従業員が個人所有のデバイスを業務に持ち込み、そのデバイスを使用して特権的な企業情報やアプリケーションにアクセスできるようにしています。
運用モード
会社所有のデプロイは、デバイス所有者の運用モードでサポートされています。Android では、管理アプリは Device Policy Controller(DPC)と呼ばれます。DPC は Android 搭載デバイスにポリシーを適用し、デバイス所有者として機能すると、デバイス全体を管理します。DPC は、デバイス所有者として、デバイス全体の接続の構成、全般設定の構成、出荷時設定へのリセットなど、デバイス全体のアクションを実行できます。
BYOD デプロイは、プロファイル オーナーの運用モードでサポートされています。企業は DPC を介して、デバイスのプライマリ ユーザー アカウントに仕事用プロファイルを追加することで、個人用デバイスを仕事で使用できるようにします。仕事用プロファイルは、別のプロファイルとしてプライマリ ユーザーに関連付けられています。プロファイル オーナーとして、DPC はデバイス上の仕事用プロファイルのみを管理し、仕事用プロファイルの外部では制御が制限されます。
デバイス所有者のプロビジョニング方法
新しいデバイスの初期設定時または出荷時設定へのリセット後に、デバイス所有者モードのプロビジョニングを行う必要があります。これ以外のデバイスでは、デバイス所有者モードのプロビジョニングはできません。
ユースケースに応じて、デバイス所有者モードのプロビジョニングには主に 2 種類のプロビジョニング方法があります。
- デバイス ドリブン フローでは、IT 管理者は NFC を使用して多数のデバイスをプロビジョニングできます。このフローは、managed Google Play アカウントまたは Google Workspace のシナリオで使用できます。
- ユーザー主導のフローでは、組織が Google Workspace を使用しているかどうかによってオプションが異なります。
- Google Workspace のシナリオでは、ユーザーはデバイスの初期設定時に Google アカウントを追加し、DPC がユーザーにデバイス所有者の設定手順を説明する必要があります。ユーザー主導のフローは、エンドユーザーが新しいデバイスをセットアップする際に役立ちます。また、デバイスが NFC をサポートしていない場合にも役立ちます。
- 組織が Google Workspace を使用していない場合は、managed Google Play アカウント方式を使用する必要があります。
注: Google Play でアプリの配信を特定の国に制限している場合、デバイス所有者のプロビジョニング時にこの制限は無視されます。DPC は、デバイスが対象国にない場合でもダウンロードされます。
プロファイル所有者のプロビジョニング方法
プロファイル オーナー モードのプロビジョニングで推奨される方法は、組織が Google Workspace を使用しているかどうかによって異なります。
- Google Workspace の場合、ユーザーがユーザーの Google アカウントを追加し、DPC がユーザーにプロファイル所有者の設定手順を示すユーザー主導のフローをおすすめします。
- 組織で Google Workspace を使用していない場合は、managed Google Play アカウントを使用することをおすすめします。
従来の方法(DPC を手動でインストールするようユーザーに指示)もサポートされています。ユーザーが Google Play から DPC をダウンロードしてインストールすることに依存し、DPC はプロファイル所有者を設定する残りのプロセスをユーザーに指示します。
Android バージョン間の主なプロビジョニングの違い
デプロイ シナリオ | 運用モード | プロビジョニング方法 | 5.0、5.1 | 6.0 以降 | 7.0 以降 |
---|---|---|---|---|---|
会社所有 | デバイスの所有者 | QR コード | ✓ | ||
managed Google Play アカウント | ✓ | ✓ | |||
Google アカウント | ✓ | ✓ | |||
NFC | ✓ | ✓ | ✓ | ||
BYOD | プロファイル所有者 | managed Google Play アカウント | ✓ | ✓ | ✓ |
Google アカウント | 5.11 | ✓ | ✓ | ||
DPC の手動インストール | ✓ | ✓ | ✓ |
実装に関する一般的な考慮事項
ここでは、実装するオペレーション モードに関係なく、DPC を作成する際に考慮すべき点をいくつか示します。
Google Play 開発者サービスの互換性
Google Play 開発者サービス APK ガイドでは、API トランザクションを実行する前に Google Play 開発者サービスのバージョン チェックを実行するようデベロッパーに指示しています。Google Play 開発者サービスを更新しようとすると、デバイスのセットアップ プロセスが重大な中断を引き起こすため、デバイスのプロビジョニングが完了する前に DPC が Google Play 開発者サービスの更新を試行しないでください。
DPC と Google Play 開発者サービスの互換性に関する主なポイントは次のとおりです。
- DPC は、特定のデバイスに付属の Google Play 開発者サービスを使用して実行する必要があります。
- DPC は、デバイスのプロビジョニング時に利用可能になる将来のバージョンの Google Play 開発者サービスの新機能に依存しないでください。
デバイスのプロビジョニングが完了すると、DPC は最新の機能を使用できるように、Google Play 開発者サービスの更新をユーザーに求めることができます。ただし、なんらかの理由で機能が使用できない場合、DPC はデバイスに付属のバージョンに適切にフォールバックする必要があります。
デバイスの詳細を取得する
反映には遅延があるため、新しく登録したデバイスに対して devices.get を呼び出してデバイスの詳細が返されるまでに 2 分ほどかかることがあります。
エンドユーザーがデバイスまたは仕事用プロファイルを使用する前に詳細を必要とする場合は、DPC の進行状況画面を使用し、呼び出しが成功するまで待つことをおすすめします。
プロファイル所有者モードの実装に関する考慮事項
DPC を記述してプロファイル オーナーのオペレーション モードを実装する際は、次の点を考慮してください。
個人用 DPC を削除または無効にする
プロファイル所有者モードのオペレーションをプロビジョニングすると、DPC は個人用プロファイルでの実行を開始し、仕事用プロファイルの作成プロセスを開始します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。その時点で、個人用プロファイルの DPC は自身を無効にするか、デバイス ユーザーが削除する必要があります。
ユーザーが個人用 DPC を削除する
- 個人用 DPC は
ACTION_MANAGED_PROFILE_PROVISIONED
をリッスンします。(Android 5.1 デバイスの場合、個人用 DPC は代わりにACTION_MANAGED_PROFILE_ADDED
をリッスンする必要があります)。 - 個人用 DPC がアンインストール リクエスト
ACTION_UNINSTALL_PACKAGE
を開始します。これにより、個人用 DPC のアンインストールを求めるメッセージが表示されます。最適なユーザー エクスペリエンスを実現するには、プロビジョニング フローの途中でアンインストール プロセスを行う必要があります。
個人用 DPC が自動的に無効になります
- 個人用 DPC は
ACTION_MANAGED_PROFILE_PROVISIONED
をリッスンします。(Android 5.1 デバイスの場合、個人用 DPC は代わりにACTION_MANAGED_PROFILE_ADDED
をリッスンする必要があります)。 - 該当する場合、個人用 DPC は自身を無効にする前にデバイスの管理者権限を解放する必要があります。
- 個人用 DPC が
COMPONENT_ENABLED_STATE_DISABLED
パラメータを使用してsetApplicationEnabledSetting
無効化リクエストを開始します。 - ユーザーは Google Play から個人用 DPC を再度有効にできます。
デバイス所有者モードの実装に関する考慮事項
DPC を記述してデバイス所有者モードのオペレーションを実装する際は、次の点を考慮してください。
新品または出荷時設定にリセットする必要がある
新しいデバイスの初期設定時または出荷時設定へのリセット後に、デバイス所有者モードのプロビジョニングを行う必要があります。これ以外のデバイスでは、デバイス所有者モードのプロビジョニングはできません。
デバイス オーナー モードでは、DPC がデバイスを完全に制御できます。初期設定後にデバイス所有者モードのプロビジョニングが許可された場合:
- マルウェアがデバイスの所有者を作成して、デバイスを乗っ取るおそれがあります。
- デバイスにユーザーデータやアプリがすでに存在する場合、プライバシーの問題が発生する可能性があります。
会社所有デバイスでのみデバイス所有者モードを設定する
デバイス所有者モードをプロビジョニングするのは、顧客の会社が所有するデバイスに限られます。これを確認するには、一意のデバイス識別子(シリアル番号など)を検出するか、EMM ポリシーを通じてデバイスの登録が承認された専用のアカウントを使用します。
デバイスの会社所有権を確認できない場合は、デバイス所有者モードが誤ってプロビジョニングされないように、フェイルセーフ メカニズムを作成する必要があります。たとえば、デバイス所有者モードをプロビジョニングする前に、デバイスのユーザーに確認または肯定的なアクションを行うように求めることができます。
システムアプリを有効にする
DPC が仕事用プロファイルをプロビジョニングする際、ランチャー アイコンのないシステムアプリはデバイスにとって重要なものとみなされ、仕事用プロファイルでの実行が自動的に許可されます。ランチャー アイコンがあるシステムアプリはオプションとみなされ、有効にするかどうかを決定できます。
Google Play からシステムアプリを有効にする
Google Play を使用してシステムアプリを有効にするのは簡単で、アプリのアップデートが利用可能になると、ユーザーに提供されます。
Android フレームワーク API を使用してシステムアプリを有効にする
ユーザーがデバイスの使用を開始するとすぐにシステムアプリが表示されるようにするには、デバイスのプロビジョニング プロセスの一環としてシステムアプリを有効にします。DPC は、DevicePolicyManager.enableSystemApp()
を使用して、パッケージ名またはインテントを指定して、システムアプリを有効にします。
EMM コンソールで有効にして IT 管理者に提示するシステムアプリを特定する方法はいくつかあります。
システムアプリ カタログを作成する
この方法では、各デバイスがデバイス上にあるアプリを特定し、そのデータを EMM コンソールに送り返します。EMM コンソールは、デバイス ポリシーの作成時にこのデータを動的に表示します。これにより、IT 管理者はアプリごとにアプリを管理できます。
仕事用プロファイルがまだデバイスにプロビジョニングされていない場合は、
queryIntentActivities()
を使用して、ランチャー アイコンがあるすべてのアプリのリストをデバイスに pull します。private List<ResolveInfo> getAppsWithLauncher() { Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); return getPackageManager().queryIntentActivities(i, 0); }
仕事用プロファイルがデバイスにすでにプロビジョニングされている場合は、
PackageManager.GET_DISABLED_COMPONENTS
とPackageManager.GET_UNINSTALLED_PACKAGES
を使用して、仕事用プロファイル内のすべてのアプリのリストを取得します。アプリの一覧でシステムアプリを見つけるには、アプリがデバイスのシステム イメージにインストールされているかどうかを示す
FLAG_SYSTEM
を確認します。
長所:
- IT 管理者はすべてのデバイスのアプリの全体像を把握できます。
- 有効にするアプリをきめ細かく制御できます。
デメリット:
- デバイスごとに異なるアプリカタログがあるため、単一のポリシー構成のモデルを複数のデバイスタイプに適用することは困難です。
- OEM 固有のアプリの量を IT 管理者にとって意味のある形で提示することは、困難な場合があります。
システムアプリを機能別に分類する
IT 管理者は、デバイスのグループに対してシステムアプリを有効にする場合、機能に基づいて汎用アプリ(「システム ブラウザ」など)を選択します。DPC はそのインテントに対してすべてのシステムアプリを許可します。
長所:
- IT 管理者向けのシンプルな機能ベースのイネーブルメント。
- さまざまなデバイスで一貫した機能を確保する(少なくとも一般的なユースケースでは)。
デメリット:
- システムアプリを、すべてのデバイスタイプでサポートされているアプリに制限します。
- IT 管理者は、ある OEM バージョンのアプリ(Samsung® ブラウザなど)をプッシュし、別の OEM バージョン(LG® ブラウザなど)をプッシュしたくない場合があります。
- IT 管理者は、複数のアプリの push は望まないかもしれませんが、複数のインテント ハンドラがある場合に防止できません。
承認されたシステムアプリのみをサポートする
OEM と連携して特定の OEM パッケージを特定し、EMM コンソール内でそのパッケージのみをサポートします。また、OEM アプリが Google Play でホストされていないため、OEM アプリの管理対象設定をカタログ化することもできます。
長所:
- Vastly は統合ワークフローを簡素化し、最初の 2 つのオプションに問題があるエッジケースを排除しています。
- OEM アプリの管理対象構成をカタログ化して、IT 管理者向けの EMM コンソールに表示できます。
- フラッグシップ デバイスのサポートにおいて OEM と緊密な関係を築けるようにする。
デメリット:
- スケーラビリティが低く、その結果、消費者の選択肢も減ります。
DPC のテストシナリオ
Test DPC は、DPC アプリのエンタープライズ機能をテストするために Google が提供しているオープンソース アプリです。Test DPC は github または Google Play から入手できます。Test DPC は次の用途に使用できます。
- Android で機能をシミュレートする
- ポリシーの設定と適用
- アプリとインテントの制限を設定する
- 仕事用プロファイルを設定する
- フルマネージド Android デバイスを設定する
Test DPC は、主に Android のエンタープライズ ソリューションをテストする手段として使用できますが、Android 機能のサンプルコードのソースとしても使用できます。
プロビジョニングのカスタマイズ
デバイスのプロビジョニング中に、システム ユーザー インターフェースではステータスバーにデフォルトの色が表示され、画面の上部にデフォルトのロゴが表示されます。カスタムの色やロゴを設定して、DPC とシステム インターフェースの視覚的な移行に一貫性を持たせることができます。または、管理者が EMM コンソールを使用して、カスタムの色やロゴの設定変更を行うこともできます。たとえば、管理者は会社のロゴをアップロードしたり、通知を表示する画面のデザインをカスタマイズしたりできます。
DPC は、DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
と DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
エクストラを使用して色とロゴの選択を適用します。
カスタムカラーを設定するには、EXTRA_PROVISIONING_MAIN_COLOR
を使用して、デバイスのプロビジョニング中に表示する主な色を示す整数を設定します。ACTION_PROVISION_MANAGED_PROFILE
または ACTION_PROVISION_MANAGED_DEVICE
を使用して、エクストラ(定数)をインテントに追加します。
整数がどのように表されるかについては、色をご覧ください。
例については、TestDPC アプリの MAIN_COLOR
をご覧ください。
カスタムロゴを設定するには、EXTRA_PROVISIONING_LOGO_URI
を使用して、デバイスのプロビジョニング時に画面の上部に表示される画像を設定します。ACTION_PROVISION_MANAGED_PROFILE
または ACTION_PROVISION_MANAGED_DEVICE
を使用して、エクストラ(定数)をインテントに追加します。画像のピクセル密度がデバイスに対して適切であることを確認します。
例については、TestDPC アプリの LOGO_URI
をご覧ください。
QR コードによる方法
QR コードのプロビジョニング方法では、設定ウィザードから QR コードをスキャンすることで、デバイス所有者モードを設定および構成します。QR コードには、DPC がデバイスをプロビジョニングするために必要なすべての情報を含む Key-Value ペアのペイロードが含まれています。
IT 管理者は、EMM コンソールを使用して、プロビジョニングするデバイスの QR コードを作成できます。IT 管理者がエンドユーザーに QR コードを送信し、エンドユーザーが QR コードをスキャンしてデバイスをプロビジョニングします。
QR コードのプロビジョニングのユースケース
タブレットなど、一部のデバイスは NFC に対応していません。QR コードのプロビジョニングは、NFC をサポートしていない分散型のデバイス フリートをプロビジョニングする場合に役立ちます。IT 管理者は、ユーザーに QR コードを送信して、ユーザー主導のプロビジョニングを許可できます。
QR コードのプロビジョニングに、Google ドメインや Google アカウントなどの Google ID は必要ありません。Android を使用しているが Google Workspace を使用していない組織には、Google ID がありません。
NFC と同様に、QR コードのプロビジョニングにより、Google ID(または任意の ID)が不要な、または望ましくない場合のキオスクや 1 回限りのデプロイが可能になります。たとえば、店舗にあるキオスク デバイスは誰にも属していないため、エンドユーザー ID を持つべきではありません。
QR コードを作成
QR コードのプロビジョニングに有効な QR コードは、UTF-8 でエンコードされた JavaScript® Object Notation(JSON)文字列です。有効な QR コードには、以下のプロパティを含めることができます。
常に必要
デバイスに DPC がまだインストールされていない場合は必須
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
デバイスがまだ Wi-Fi に接続されていない場合に推奨されます
任意
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_SKIP_ENCRYPTION
次のサンプルでは、有効な QR コードをビルドしています。
{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"com.emm.android/com.emm.android.DeviceAdminReceiver",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":
"gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://path.to/dpc.apk",
"android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
"android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork",
"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
"dpc_company_name": "Acme Inc.",
"emm_server_url": "https://server.emm.biz:8787",
"another_custom_dpc_key": "dpc_custom_value"
}
}
QR コードのプロビジョニング プロセス
- 設定ウィザードで、ウェルカム画面を 6 回タップするよう求めるメッセージが表示されます。タップは、画面上の同じ場所で行う必要があります。
- 設定ウィザードは、QR コードリーダーをダウンロードできるように、インターネットに接続するようユーザーに促します。
- Google Play 開発者サービスは、QR コード認識エンジンを含むモジュールをダウンロードします。
- ユーザーは、IT 管理者から提供された QR コードをスキャンします。
- 設定ウィザードが DPC アプリをダウンロードし、
ACTION_PROVISION_MANAGED_DEVICE
を使用してデバイス所有者のプロビジョニング プロセスを開始します。
managed Google Play アカウントによる方法
DPC は、managed Google Play アカウントのプロビジョニング方法を使用して、デバイス所有者モードまたはプロファイル所有者モードを設定できます。このプロビジョニング方法は、Google Workspace を使用していない組織を対象としています。
managed Google Play アカウントのプロビジョニング方法では、DPC サポート ライブラリを使用します。このクライアント ライブラリにより、managed Google Play アカウントのスムーズな運用が保証されます。また、managed Google Play アカウントのプロビジョニング プロセスの将来のアップデートとの互換性も維持されています。
デバイスのプロビジョニングの前提条件
- エンタープライズの作成と登録の説明に従って、企業 ID が作成され、EMM ID で登録され、ESA が設定されます。
- ユーザーの企業 ID が EMM コンソールに認識されている。
- ユーザーは、EMM コンソールで承認された認証情報(通常は会社のメール認証情報)を使用して、DPC アプリにログインできます。
プロフィール所有者モードを設定する
BYOD シナリオで個人用デバイスとして使用されているデバイスにプロファイル所有者モードのオペレーションをプロビジョニングできます。
- ユーザーが Google Play から DPC を手動でダウンロードして起動します。
- DPC は、
ACTION_PROVISION_MANAGED_PROFILE
を使用して仕事用プロファイルをプロビジョニングします。 - 最後の設定手順を完了します。
デバイス所有者モードをセットアップする
新しいデバイスの初期設定時または出荷時設定へのリセット後に、デバイス所有者モードのプロビジョニングを行う必要があります。それ以外では、デバイスでデバイス所有者モードのプロビジョニングを行うことはできません。
デバイスのセットアップ中にアカウントを追加するよう求められたら、ユーザーは DPC 固有の特別なトークンを入力します。トークンの形式は afw#DPC_IDENTIFIER
です。ACME という名前の EMM の場合、afw#acme
を指定すると ACME EMM のデフォルト DPC がインストールされます。各 EMM は、プロビジョニング プロセスで使用する前に特定の DPC 識別子を Google にリクエストする必要があります。
- ユーザーが新しいデバイスまたは出荷時設定にリセットしたデバイスの電源を入れると、設定ウィザードが起動します。
- アカウントを追加するよう求められたら、ユーザーは EMM の DPC を識別する
afw#DPC_IDENTIFIER
形式の特別なトークンを入力します。 - 設定ウィザードは、トークンの DPC 識別子を使用して、一時的な Google アカウントをデバイスに追加します。この一時的なアカウントは、Google Play から EMM の DPC をダウンロードするためにのみ使用され、最終的な設定手順で削除されます。
- DPC は
ACTION_PROVISION_MANAGED_DEVICE
を使用してデバイスをプロビジョニングします。 - 最後の設定手順を完了します。
すべての運用モードでの最終セットアップ手順
以下の手順は、プロファイル所有者モードまたはデバイス所有者モードを設定する最初の手順が完了してから行ってください。
DPC は、DPC サポート ライブラリを初期化することにより、デバイスが managed Google Play アカウントをサポートできるようにします。
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin); androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
デバイスにデバイス所有者モードをセットアップする場合、DPC をダウンロードするために追加された一時的な Google アカウントが削除されます。
ユーザーは EMM 認証情報を使用して DPC にログインします。これらは通常、会社のメール認証情報です。
DPC は、認証された企業ユーザーの managed Google Play アカウントの認証情報を EMM コンソールからリクエストします。
EMM コンソールにユーザーの Google Play
userId
がない場合は、Users.insert()
を呼び出して新しいユーザーを作成します。デバイス所有者モードをプロビジョニングする場合は、デバイス アカウント(専用のデバイス導入の場合)またはユーザー アカウント(会社所有のデプロイの場合)を指定します。Devices.update
を呼び出して、デバイスのポリシーを設定します。このポリシーは、managed Google Play アカウントをデバイスに追加する前に設定する必要があります。そうしないと、アカウントをデバイスに追加した後の短期間、ポリシーは適用されません。EMM コンソールは、
Users.generateAuthenticationToken()
を呼び出して、userId
のアカウント認証情報をリクエストします。この認証トークンの有効期限は短く、再利用することはできません。DPC は、トークンを使用して、アカウントをプログラムで追加する必要があります(エンドユーザーの役に立ちません)。Google Play EMM API は認証トークンを EMM コンソールに返します。
EMM コンソールが認証トークンを DPC に転送します。
DPC は、以下のコマンドを使用して managed Google Play アカウントをデバイスに追加します。
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
Google アカウントによる方法
DPC は、Google アカウントのプロビジョニング方法を使用して、デバイス所有者モードまたはプロファイル所有者モードを設定できます。Google アカウントのプロビジョニング方法では、ユーザーがデバイスの初期設定時に Google アカウントを追加した後、DPC がプロビジョニングの手順をユーザーに案内します。
ユーザーが Google アカウントの認証情報を入力すると、次のようになります。
- Google 認証サーバーがユーザー アカウントを認証します。
- 次に、認証サーバーがエンタープライズ サーバーと通信して、アカウントのドメインが Google Workspace ドメインまたは EMM マネージド ドメインのいずれかとして登録されていることを確認します。
- その場合、ドメインに関連付けられた DPC が Google Play から自動的にダウンロードされ、インストールされます。
プロフィール所有者モードを設定する
プロファイル所有者のオペレーション モードは、デバイスの初期設定時、またはユーザーが [設定] > [アカウントを追加] を使用してアカウントを追加する際にプロビジョニングできます。
- アカウント認証は、ユーザーが設定ウィザードまたは [設定] > [アカウントを追加] から開始します。
- GMSCore は、
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
を使用して仕事用プロファイルのプロビジョニングを開始します。 - DPC がデバイスに自動的にダウンロードされ、
ACTION_GET_PROVISIONING_MODE
ハンドラを使用して起動され、仕事用プロファイルのプロビジョニングが DPC でサポートされていることを確認します。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
— メールアドレスなど、仕事用プロファイルに関する追加情報。DPC は、このバンドルの一部として is_setup_wizard も受け取ります。このバンドルは、ACTION_GET_PROVISIONING_MODE
ハンドラとACTION_ADMIN_POLICY_COMPLIANCE
ハンドラに含まれます。EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
— 新しい仕事用プロファイルに移行する認証済みアカウントの名前。
- プラットフォームは仕事用プロファイルのプロビジョニングを実行します。
- 仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト
ACTION_PROFILE_PROVISIONING_COMPLETE
を受信します。DPC のACTION_ADMIN_POLICY_COMPLIANCE
ハンドラが仕事用プロファイルで起動されます。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。DPC は、管理対象の Google アカウントのポリシーを push し、デバイスが不正使用されていないことを確認し、ポリシー(パスワードの要求など)が適用されていることを検証します。 - 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

デバイス所有者モードまたは COPE を設定する
新しいデバイスの初期設定時または出荷時設定へのリセット後に、デバイス所有者モードのプロビジョニングを行う必要があります。それ以外には、デバイス所有者モードをデバイスに追加できません。
- アカウント認証は、ユーザーが設定ウィザードから開始します。
- GMSCore は、
ACTION_PROVISION_MANAGED_DEVICE_FROM_TRUSTED_SOURCE
を使用してデバイス所有者のプロビジョニングを開始します。 3. DPC がデバイスに自動的にダウンロードされ、GET_PROVISIONING_MODE
ハンドラを使用して起動され、目的のプロビジョニング モードが選択されます。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
— 言語 / 地域、Wi-Fi、メールアドレスなど、仕事用プロファイルに関する追加情報。DPC は、このバンドルの一部として is_setup_wizard も受け取ります。このバンドルは、ACTION_GET_PROVISIONING_MODE
ハンドラとACTION_ADMIN_POLICY_COMPLIANCE
ハンドラに含まれます。
- プラットフォームが、目的のプロビジョニング モードにデバイスをプロビジョニングします。
- デバイスがプロビジョニングされると、DPC はこれらのブロードキャストを受信し、DPC の
ACTION_ADMIN_POLICY_COMPLIANCE
ハンドラが起動します。 - DPC は
Global.DEVICE_PROVISIONED
の値を使用して、デバイスが新品であるか、出荷時設定にリセットされている(プロビジョニングされていない)ことを確認します。- 0 — 未プロビジョニングの状態です。
- 1 — プロビジョニング済み。
- DPC は、管理対象デバイスのポリシーをプッシュし、デバイスが不正使用されていないことを確認し、ポリシーが適用されていること(パスワードの要求など)を確認することで、プロビジョニング プロセスを完了します。

Google アカウントによる方法の実装に関する考慮事項
DPC は、使用された起動インテントの特定のエクストラを探すことで、Google アカウントの認証フローを検出する必要があります(
LaunchIntentUtil
を参照)。- タイプ
android.accounts.Account
のアカウント— アカウントが設定ウィザードまたは — から追加されたことを示します。この場合、デバイスまたはプロファイルを管理するには、起動した DPC が必要です。 - ブール値の
is_setup_wizard
— true の場合、設定ウィザードの完了前に設定ウィザードで DPC が起動されました。それ以外の場合は、— または別のフローから起動されます。
DPC が Google アカウントによる方法の一環として開始されたかどうかは、次の方法で確認できます。
boolean isSynchronousAuthLaunch(Intent launchIntent) { return launchIntent.hasExtra("is_setup_wizard"); }
- タイプ
DPC は、セットアップが完了する前に
finish()
を呼び出すことはできません。また、DPC がstartActivityForResult()
で起動され、結果を待つため、正の結果コード(RESULT_OK
など)を返す必要があります。DPC 設定フローが
ACTION_PROVISION_*
インテントを送信するポイントに到達した場合、DPC は、プロビジョニング プロセスからの結果コードを待ってからfinish()
を呼び出す必要があります。ACTION_PROVISION_*
インテントを起動するときは、startActivityForResult()
コールバックとonActivityResult()
コールバックを使用します。(例については、LaunchActivity
とSetupSyncAuthManagement
をご覧ください)。セットアップ プロセスは非同期である可能性があるため、DPC は結果コード
RESULT_OK
に基づいてプロビジョニングが成功したことを通知できません。確実にプロビジョニングされる唯一の方法は、プロビジョニングの成功をDeviceAdminReceiver
コールバックに依存させることです。RESULT_CANCELED
は、ユーザーがセットアップ フローの同期部分でバックアウトし、DPC がそれに応答する必要があることを示します。この例では、DPC はプロビジョニングを開始し、アクティビティからの結果コードを待機します。
Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE); startActivityForResult(intent, REQUEST_MANAGED_PROFILE); ... @Override public void onActivityResult(int req, int res, Intent i) { if (req == REQUEST_MANAGED_PROFILE) { if (res == Activity.RESULT_OK) { setResult(Activity.RESULT_OK); finish(); } else { Toast.makeText(this, “Provisioning failed”, Toast.LENGTH_SHORT).show(); } } }
デバイスがすでにプロビジョニングされている場合、DPC はデバイス所有者モードのセットアップを試行しないでください(
ProvisioningStateUtil.isDeviceProvisioned()
を参照)。この例では、DPC はデバイスがプロビジョニングされているかどうかを確認します。public static boolean isDeviceProvisioned(Context context) { ContentResolver cr = context.getContentResolver(); return Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0; }
(省略可)DPC は、プロビジョニングの起動時に
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
エクストラを使用して、状態情報をDeviceAdminReceiver
(プロファイル オーナーの場合は仕事用プロファイル内で実行されている)に戻すことができます。TestDPC はこのエクストラを使用して、プロビジョニングの完了後に Google アカウント フローに別のアクティビティ セットを入力します。詳しくは、DeviceAdminReceiver
をご覧ください。public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver { @Override public void onProfileProvisioningComplete(Context context, Intent intent) { // Retrieve the admin extras bundle, which we can use to determine the original context for // Test DPC's launch. PersistableBundle extras = intent.getParcelableExtra( EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE); ...
仕事用プロファイルを設定するには、DPC が追加したアカウントを新しい仕事用プロファイルに移行する必要があります。そのためには、DPC が
ACTION_PROVISION_MANAGED_PROFILE
の起動インテントで指定されたアカウントを渡す必要があります。DPC では、フローが行き止まりになったとユーザーが感じないように、セットアップの終了時にアプリを終了するための明確な行動を促すフレーズ(終了ボタンなど)をユーザーに提供する必要があります。
DPC では、ユーザー エクスペリエンスがスムーズで適切に統合されているように、設定ウィザードのテーマまたはレイアウト ライブラリを使用する必要があります。
NFC 方式
DPC では、NFC プロビジョニング方式を使用してデバイス所有者モードを設定できます。NFC プロビジョニング方式(NFC タグ)では、初期ポリシーと、お客様がデバイス所有者の動作モードを構成するために必要な Wi-Fi 構成、設定、プロビジョニングの詳細を含む NFC プログラマー アプリを作成します。Android 搭載デバイスに NFC プログラマー アプリをインストールすると、そのデバイスがプログラマー デバイスになります。
デバイスをプロビジョニングする場合、IT 管理者は新しいデバイスを箱から取り出してプログラマー デバイスまたは NFC タグに突き当てます。バンプによりデバイスに構成が転送され、デバイスがインターネットに接続されて適切なポリシーと設定がダウンロードされます。その後、デバイスは DPC によって管理されます。
デバイスがプロビジョニングされると、Google Play は、表示されるはずの承認済みのアプリやコレクションではなく、しばらくの間、管理対象外の一般ユーザー向けコンテンツを表示します。この遅延は、数分から 1 時間ほど続くことがあります。
NFC プログラマー アプリとプログラマー デバイスを作成する
Android 10 以前を搭載したデバイスでは、Android ビームを使用して NFC プロビジョニングを完了できます。
- NFC プログラマーのサンプルアプリをダウンロードします。サンプルは、追加せずにそのまま使用することも、デフォルト値に合わせて変更することもできます。
- 選択したデバイスにプログラマー アプリをインストールします。
- NFC プログラマー アプリを起動し、
com.example.android.apis
の [Load Defaults] を選択します。(このテキストは、設定するデフォルト パラメータによって異なる場合があります)。
お客様のデバイスをプロビジョニングする
- 新しいデバイスまたは出荷時設定にリセットされたデバイスにプログラマー デバイスまたは NFC タグをバンプします。
- デバイスが起動時に表示される最初の [ようこそ] 画面に残ることを確認します。テキストは、プログラマー アプリの
Ready to send:{...}
で指定します。 - DPC が次の処理を行うまで待ちます。
- デバイスを暗号化する
- CDMA(Code-Division Multiple Access)デバイスの場合: 電話のユーザー インターフェースが表示されている間にスマートフォンを起動します(操作は必要ありません)。
- Wi-Fi 接続を設定します。
- com.example.android.apis の APK ファイルをダウンロードします。
- com.example.android.apis をインストールします。
- com.example.android.apis で Sample Device Admin をデバイス オーナーとして設定します。
- デバイス所有者が有効化されると、成功を示す「トースト」が表示されます。
- ホームページに戻ったら(設定ウィザードは自動的にスキップされます)、com.example.android.apis がデバイス所有者として設定されていることを確認します。
- [設定] > [セキュリティ] > [デバイス管理] で、[サンプル デバイス管理] を削除できないことを確認します。
- [設定] > [ユーザー] > [ユーザーとプロファイル] > [あなた(所有者)] で、所有者が使用可能な唯一のアカウントであることを確認します(1 台のデバイスで同時に複数のアクティブなデバイス所有者を 1 つのみ設定できます)。
参考情報
高度な NFC では、さまざまなタグ技術の使用、NFC タグへの書き込み、フォアグラウンド ディスパッチなどのトピックについて説明しています。
DPC の手動インストール方法
手動 DPC インストールのプロビジョニング方法でプロファイル所有者モードを設定するには、ユーザーが Google Play から DPC をダウンロードしてインストールします。その後、DPC は、管理対象の Google アカウントのプロファイル所有者を設定するプロセスの残りの手順をユーザーに案内します。
DPC は、仕事用プロファイルの作成前または作成後に管理対象の Google アカウントを追加できます。たとえば、DPC は、最初に管理対象の Google アカウントを入力するように求める代わりに、ユーザーの EMM 認証情報に基づいて仕事用プロファイルを作成できます。
プロフィール所有者モードを設定する
まず管理対象の Google アカウントを追加してください
- ユーザーが Google Play から DPC をダウンロードしてインストールします。
- DPC は、
AccountManager.addAccount()
を使用して仕事用プロファイルを作成する前に、管理対象の Google アカウントを追加します。 - DPC は個人用プロファイルでの実行を開始し、以下を使用して仕事用プロファイルを作成するプロセスを開始します。
ACTION_PROVISION_MANAGED_PROFILE
— 仕事用プロファイルをプロビジョニングします。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
— ロケール、Wi-Fi、メールアドレスなど、仕事用プロファイルの追加情報。EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
— 新しい仕事用プロファイルに移行する認証済みアカウントの名前。
- 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC が、管理対象の Google アカウントのポリシーをプッシュし、デバイスが不正使用されていないことを確認し、ポリシーが適用されていること(パスワードの要求など)を確認することで、プロビジョニング プロセスを完了します。
- 仕事用プロファイルがプロビジョニングされると、DPC はブロードキャスト
ACTION_PROFILE_PROVISIONING_COMPLETE
を受信します。 - 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

まず仕事用プロファイルを作成してください
- ユーザーが Google Play から DPC をダウンロードしてインストールします。
- DPC は個人用プロファイルでの実行を開始し、以下を使用して仕事用プロファイルを作成するプロセスを開始します。
ACTION_PROVISION_MANAGED_PROFILE
— 仕事用プロファイルをプロビジョニングします。EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
— ロケール、Wi-Fi、メールアドレスなど、仕事用プロファイルの追加情報。
- DPC は、
AccountManager.addAccount()
を使用して管理対象の Google アカウントを追加します。 - DPC はブロードキャスト
ACTION_PROFILE_PROVISIONING_COMPLETE
を受信し、EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
を読み取ります。 - 仕事用プロファイルの DPC がプロビジョニング プロセスを完了します。仕事用プロファイルが作成されると、DPC も仕事用プロファイル内で実行されます。仕事用プロファイルの DPC が、管理対象の Google アカウントのポリシーを push し、デバイスが不正使用されていないことを確認し、ポリシーが適用されていること(パスワードの要求など)を確認することで、プロビジョニング プロセスを完了します。
- DPC は、
DevicePolicyManager.setProfileEnabled()
を使用して仕事用プロファイルを有効にします。 - 個人用プロファイルの DPC が自身を無効にするか、ユーザーが削除します。

-
Android 5.1 の Google アカウントによる操作は、プロファイル所有者モードのみをサポートしており、ユーザーは [設定] > [アカウントを追加] からのみ設定できます。 ↩