ID のプロビジョニング(またはアカウントのプロビジョニング)は、アカウントを設定し、3 つのシステム間の接続を確立するプロセスです。場合によっては、ユーザーとデバイス間の接続も設定します。
Android エンタープライズ環境では、アカウント情報は最大 3 つの異なるシステムに保存されます。
- 組織のユーザー ディレクトリは、ユーザーに関する信頼できる情報源です。
- お客様(EMM ソリューション プロバイダ)は、少なくとも組織のユーザーの最小限のディレクトリを維持する必要があります。
- Google は、Google Play によるアプリ管理を提供するために、managed Google Play アカウントと Google アカウントに関する情報を保持します。
Users
リソースは、エンタープライズに関連付けられたアカウントを表します。アカウントはデバイスに固有のものにすることも、複数のデバイス(スマートフォン、タブレットなど)を所有し、それらすべてでアカウントを使用する個人に関連付けることもできます。アカウントは、お客様の企業の設定方法に応じて、managed Google Play のみへのアクセスまたは他の Google サービスへのアクセスを提供できます。
managed Google Play アカウントは、企業がエンタープライズ モビリティ管理(EMM)ソリューション プロバイダを通じてユーザー アカウントまたはデバイス アカウントを自動的に作成するための透明性の高い手段を提供します。これらのアカウントは、managed Google Play へのアクセスのみを提供します。
Google アカウントは Google が管理する既存のアカウントであり、Google アカウントのソースとの同期が必要です。
表 1: Users API のフィールドとメソッド
managed Google Play アカウント | Google 管理アカウント | |
---|---|---|
フィールド | ||
id | ||
kind | ||
accountIdentifier | 作成して Google Play から返された ID(userId )にマッピングする一意の識別子。個人を特定できる情報(PII)は使用しないでください。 | 未設定。 |
accountType | deviceAccount、userAccount | userAccount |
displayName | Google Play などの UI アイテムに表示する名前。個人を特定できる情報は使用しないでください。 | 未設定。 |
managementType | emmManaged | googleManaged、emmManaged |
primaryEmail | 未設定。 | このフィールドは、Google 管理のドメイン アカウントからシステム内のユーザー アカウントへの同期を管理する主キーです。 |
メソッド | ||
delete | ||
generateAuthenticationToken | ||
generateToken | ||
get | ||
getAvailableProductSet | ||
挿入 | ||
list | ||
revokeToken | ||
setAvailableProductSet | ||
update |
managed Google Play アカウント
管理対象の Google Play アカウントには次の 2 種類があります。
- ユーザー アカウント
- 1 人のユーザーがすべてのデバイスから managed Google Play にアクセスできるようにします。ユーザーのユーザー アカウントをプロビジョニングする必要があります。ユーザー自身が管理対象の Google Play アカウントを追加するための認証情報は持っていません。
- ユーザー アカウントを作成するには、
Users.insert
を呼び出します。アカウントの種類をuserType
に設定し、エンタープライズ内のユーザーを明確に参照するaccountIdentifier
を設定します。 - ベスト プラクティス: 同じアカウントを 10 台を超えるデバイスで使用しないでください。
- デバイス アカウント
- 1 台のデバイスから managed Google Play にアクセスできます。デバイス アカウントに認証トークンが発行されている場合、そのデバイス アカウントの認証トークンの新しいリクエストにより、以前のトークンが無効になります。各デバイスが個別にアプリのライセンスを持つ必要があります。
- デバイス アカウントを作成するには、
Users.insert
を呼び出して、アカウントの種類をdeviceType
に設定します。
ユーザー ID またはデバイス ID と対応する managed Google Play アカウントとのマッピングを作成して維持し、アカウントのライフサイクル全体を管理します。これらの managed Google Play アカウントは純粋にアプリ管理のために存在するため、組織はこれらのアカウントを直接管理する必要はありません。
EMM コンソールとサーバーの要件
managed Google Play アカウントは、EMM ソリューションのコンポーネント(EMM コンソール、EMM サーバー、DPC)全体で Google Play EMM API と Android フレームワーク API を使用して、オンデマンドでプログラムによって作成されます。これらのコンポーネントは実行時に相互に作用して、ユーザー アカウントを作成し、移行先デバイスに仕事用プロファイルをプロビジョニングします。
EMM コンソールまたはサーバーは、次の要件を満たしている必要があります。
Users.insert
の呼び出しで使用する一意の匿名アカウント識別子(accountIdentifier
フィールド)を作成するメカニズムを提供します。たとえば、ユーザーの内部値(「sanjeev237389」)や、難解なアセットタグ番号(「asset#44448」)を使用できます。アカウント識別子に個人情報(PII)を使用しないでください。userId
(insert
呼び出しから返される)と選択したaccountIdentifier
間のマッピングを保存します。
DPC の要件については、Device Policy Controller を構築するをご覧ください。
管理対象の Google Play ユーザー アカウントを作成する
- ユーザーが(通常は)企業の認証情報を使用して DPC にログインします。
- DPC は、EMM サーバーまたはコンソールからユーザーの詳細をリクエストします。ユーザーがシステムに登録されていない場合:
- 新しい
accountIdentifier
、displayName
、accountType
の値を指定してUsers.insert
を呼び出し、新しい管理対象 Google Play アカウントのリクエストを送信します。- システムで
accountIdentifier
を作成する必要があります。アカウント識別子は、システム全体で一意の値にする必要があります。アカウント ID に PII を使用しないでください。 displayName
は Google Play ストアのアカウント切り替えツールに表示され、ユーザーにとって意味のあるものである必要があります(ただし、ユーザーに関する個人情報ではありません)。たとえば、名前には組織名や EMM に関連する一般的な名前を含めることができます。accountType
をuserAccount
またはdeviceAccount
に設定します。userAccount
は複数のデバイスで使用できますが、deviceAccount
は 1 つのデバイスに固有です。指定するaccountType
は、deviceType
またはuserType
です。managementType
をemmManaged
に設定します。
- システムで
- Google Play はリクエストを処理し、アカウントを作成して
userId
を返します。 accountIdentifier
とuserId
間のマッピングをデータストアに保存します。userId
とenterpriseId
を使用してUsers.generateAuthenticationToken
を呼び出します。Google Play から返される認証トークンは 1 回限りで、数分以内に使用する必要があります。- 認証トークンを DPC に安全に転送します。
- 新しい
- DPC は仕事用プロファイルをプロビジョニングし、仕事用プロファイルまたはデバイスにアカウントを追加します。
- ユーザーは、仕事用プロファイルまたはデバイス内の managed Google Play にアクセスできます。
管理者アカウント
管理者が managed Google Play アカウントを使用してエンタープライズを作成する場合、使用する Google アカウントは G Suite アカウントにすることはできません。使用しているアカウントがエンタープライズの所有者になり、所有者は managed Google Play Console でさらに所有者と管理者を追加できます。
Enterprises.get
と Enterprises.completeSignup
はどちらも、エンタープライズに関連付けられている管理者のメールアドレスのリストを返します(managed Google Play アカウントを持つエンタープライズのみ)。
アカウントのライフサイクルを管理する
managed Google Play アカウントのデプロイでは、ユーザー アカウントとデバイス アカウントのライフサイクル(これらのアカウントの作成、更新、削除)を管理する必要があります。
アカウントは、DPC アプリと EMM コンソールを使用するデバイスのプロビジョニング中に作成します。手順については、managed Google Play アカウントの方法をご覧ください。
アカウントの情報を変更するには、Users.update を呼び出します。
アカウントを削除するには、Users.delete を呼び出します。
管理者は個々のアカウントを削除することはできませんが、managed Google Play アカウントを使用するエンタープライズを削除することはできます。登録解除、再登録、削除で説明されているように、この操作を行うと、企業に関連付けられているデバイスとユーザー アカウントは最終的に削除されます。
アカウントの有効期限
アカウントまたはそのトークンが期限切れになることがあります。これは、次のような理由で発生することがあります。
- デバイスにアカウントを追加するために取得した認証トークンの有効期限が切れています。
- アカウントまたはエンタープライズが削除されている。
- デバイス アカウントの場合、アカウントは新しいデバイスに追加されているため、古いデバイスでは無効になります。
- 不正行為の自動チェックがトリガーされます。
- デバイスが 270 日以上オフラインになっている場合、バッチ クリーンアップ プロセスによりその情報が削除されることがあります。
ほとんどの場合(EMM がデバイス アカウントを新しいデバイスに意図的に移動する場合を除く)、Play EMM API を使用して EMM サーバーに新しいトークンをリクエストし、アカウントとエンタープライズの状態と返されたエラーをメモしてから、デバイスで適切なアクションを実行することをおすすめします。たとえば、トークンを更新します。エラーが復元できない場合は、デバイスをリセットするか、登録を解除します。
トークンを適切に更新するには、次の操作を行う必要があります。
users.generateAuthenticationToken
を呼び出して、アカウントの新しい認証トークンをリクエストします。- 呼び出しが成功したら、既存のアカウントを削除し、DPC サポート ライブラリを使用して新しいアカウントを追加します。
- 呼び出しが失敗した場合は、デバイスからアカウントを削除し、
users.insert
を使用して新しいユーザーを作成し、認証トークンを生成してデバイスにアカウントを追加します。
Google Play 開発者サービス バージョン 9.0.00 では、アカウントが期限切れになったことを DPC に通知するために、ブロードキャスト アクションが使用されます。
デバイスで managed Google Play アカウントが無効になると、DPC は次のアクションを含むブロードキャストを受け取ります。
com.google.android.gms.auth.ACCOUNT_REAUTH_REQUIRED
ブロードキャスト インテントには、
account
という名前のParcelable
エクストラが含まれています。これは、無効になったアカウントの
オブジェクトです。Account
DPC は EMM サーバーで
Account#name
を確認し、無効になったアカウントを特定します。DPC は、最初にデバイスをプロビジョニングする際に使用したフローと同じフローを使用して、新しい認証情報または新しいアカウントをリクエストします。
Google アカウント
Google アカウントを使用する組織の場合、EMM ソリューションのユーザー アカウントは、別の Google サービス(G Suite など)に関連付けられている既存のユーザー アカウントをミラーリングします。これらのアカウントは googleManaged
(表 1)です。これは、アカウントの作成と情報のソースが Google のバックエンド サービスであるためです。
EMM は、Google Cloud Directory Sync(GCDS)や Google Admin SDK Directory API などのツールを使用して、システムに保持されているユーザー アカウントの作成と、Google ドメイン アカウント ソースとの継続的な同期を容易にするためのメカニズムをコンソールで提供できます。さまざまなアプローチの概要については、Google が管理するドメイン ID モデルでは、ユーザー アカウントがソリューションのコンテキスト(EMM コンソール、EMM サーバー、データストアなど)に存在している必要があります。そうしないと、仕事用プロファイルのコンテキストでユーザーのデバイスにプロビジョニングできません。
ID のプロビジョニング中に、組織の Google 管理ドメインにユーザー アカウントが入力されます。ユーザーの既存のオンライン ID(Microsoft Exchange アカウントなど)が Google アカウントと同期される場合があります。
最初の同期後、アプリがユーザーのデバイスに配布される前に、ユーザーは デバイスでアカウントを有効にするの手順に沿って Google アカウントを有効にする必要があります。この有効化により、デバイスは managed Google Play にアクセスできるようになります。
お客様アカウントを同期する
Google アカウントのデプロイでは、組織は GCDS ツールを使用して、G Suite ドメインのデータを LDAP ディレクトリのデータと同期できます。また、組織がアクセス権を付与している場合は、GCDS を使用して組織に代わってこの操作を行うこともできます。
GCDS ツールは Google Directory API を呼び出し、ユーザー名を同期しますが、パスワードは同期しません。
組織で Microsoft Active Directory を使用しており、ユーザーの G Suite パスワードを Active Directory パスワードと同期させたい場合は、GCDS で G Suite Password Sync(GSPS)ツールを使用できます。
管理者向けの GCDS の手順については、G Suite ドメインを同期するための準備をご覧ください。
Google Directory API
Google アカウントのデプロイでは、Google Directory API を使用して、有効なディレクトリ、パスワード、またはその両方を同期できます。
ディレクトリのみの同期に Directory API を使用する。組織の管理対象の Google ドメインに読み取り専用でアクセスできる場合は、Google Directory API を使用して、Google アカウント情報(パスワードは除く)を Google から取得できます。ユーザーの Google アカウントにデータを書き込むことはできないため、アカウントのライフサイクルは組織が完全に責任を負います。
シナリオ 1 と SAML ベースの SSO 認証のシナリオで、この状況について詳しく説明します。
この方法で Directory API を使用する方法については、Directory API のドキュメントですべてのアカウント ユーザーを取得するをご覧ください。
Directory API を使用してディレクトリとオプションのパスワードを同期する。組織の管理対象の Google ドメインへの読み取り / 書き込みアクセス権がある場合は、Google Directory API を使用してユーザー名、パスワード、その他の Google アカウント情報を取得できます。この情報を更新して独自のデータベースと同期できます。お客様に提供しているソリューションに応じて、アカウントのライフサイクルの全責任または一部の責任を負う場合があります。
シナリオ 2 では、この状況について詳しく説明しています。
Directory API を使用してユーザー アカウント情報を管理する方法については、Directory API: ユーザー アカウントのデベロッパー ガイドをご覧ください。
Google アカウントのシナリオ
一般的な Google アカウントの ID プロビジョニング シナリオをいくつか示します。
シナリオ 1: アカウントのライフサイクルはお客様が責任を負う
このシナリオでは、お客様がユーザーの Google アカウントを作成して管理します。
組織の LDAP ディレクトリからユーザー アカウント情報を取得し、Google の Directory API を介して Google から取得した Google アカウントデータと照合します。
アカウントのライフサイクルについては、組織が完全に責任を負います。たとえば、新しい Google アカウントが作成されると、組織はユーザーを LDAP ディレクトリに追加します。次回データベースを LDAP ディレクトリと同期すると、データベースはこの新しいユーザーに関する情報を受け取ります。
次のようになります。
- Google アカウントへのアクセス権は読み取り専用です。
- データベースは Google アカウント名を取得しますが、LDAP のユーザー名やパスワードは取得しません。
- Google Directory API を使用して、お客様のユーザーの基本的なアカウント情報を取得します。(利用可能な情報は、
Users.get
リクエストによって返される書き込み不可の情報です)。この情報を使用して、ユーザーの Google アカウントが存在することを確認することで、ユーザーがデバイスを認証できるようにします。 - お客様は GCDS ツールを使用して一方向の同期を行い、ユーザーの Google アカウントに情報を入力します。(組織は、ID のプロビジョニングが完了した後も、GCDS を使用して独自の同期を継続している可能性があります)。必要に応じて、組織は GSPS ツールを使用して、ユーザー名だけでなくパスワードも同期できます。
シナリオ 2: アカウントのライフサイクルを EMM が担当している
このシナリオでは、お客様に代わって Google アカウントの作成プロセスを処理し、ユーザーのアカウントのライフサイクルを管理します。
たとえば、組織の LDAP ディレクトリでユーザー情報が変更された場合は、ユーザーの Google アカウントを更新する責任があります。このシナリオでは GCDS は使用されません。
次のようになります。
- Google アカウントに対する読み取り / 書き込み権限がある。
- データベースは、Google アカウント名と LDAP ユーザー名(必要に応じてパスワード ハッシュ)を取得します。
- お客様に代わって Google Directory API を使用して、組織のユーザーのアカウント情報を読み取り、書き込みます。(利用可能な情報は、
Users.get
リクエストによって返される書き込み不可の情報です)。この情報を使用して、ユーザーの Google アカウントが存在することを確認することで、ユーザーがデバイスを認証できるようにします。 - GCDS ツールは使用されません。
SAML ベースの SSO 認証シナリオ
Google アカウントのデプロイでは、お客様またはお客様のお客様が、ID プロバイダ(IdP)で Security Assertion Markup Language(SAML)を使用して、各ユーザーに関連付けられた Google アカウントを認証する場合があります。Google アカウント名は、ユーザーの Google アカウントが存在することを確認するために使用します。これは、ユーザーがデバイスにログインする際のユーザー認証に必要です。たとえば、シナリオ 2 では SAML を使用できます。設定方法については、G Suite アカウントへのシングル サインオン(SSO)の設定をご覧ください。
デバイスでアカウントを有効にする
managed Google Play を介してユーザーのデバイスにアプリを配信するには、デバイスのプロビジョニング中にユーザーがデバイスにログインする必要があります。
- managed Google Play アカウントのデバイスのプロビジョニングでは、DPC がユーザーに、EMM コンソールで承認されている認証情報(通常は会社のメール認証情報)を使用してログインするよう案内します。
- Google アカウントをデプロイする場合、DPC はユーザーに Google アカウントのログイン認証情報を入力するよう案内します。通常、これらの認証情報は、GCDS または GSPS と同期されている場合、または組織が認証に IdP を使用している場合に、ユーザーが企業ドメインにログインする認証情報と一致します。これにより、ユーザーの Google アカウントが有効になり、一意のデバイス ID が生成され、ユーザーの Google アカウント ID とデバイスのデバイス ID がバインドされます。