Share
Embed
Transcript
84 slides
-
Android Enterpriseって? Androidプラットフォームのビジネス利用を支えるために、 Googleが主導している取り組みのこと。 > Android Enterprise is a Google-led
initiative to enable the use of Android devices and apps in the workplace.* 7 *https://developers.google.com/android/work/overview -
Android Enterpriseって? • デバイス管理ソリューションの提供 • エンタープライズ向けデバイス • ソリューションを提供するパートナーの認定プログラム • ビジネス向けのカスタマーサポートなど
8 https://www.android.com/enterprise/ -
• デバイス管理ソリューションの提供 • エンタープライズ向けデバイス • ソリューションを提供するパートナーの認定プログラム • ビジネス向けのカスタマーサポートなど Android Enterpriseって?
9 https://www.android.com/enterprise/ -
Android Enterpriseって? Androidプラットフォームのビジネス利用を支えるために、 Googleが主導している取り組みのこと。 > Android Enterprise is a Google-led
initiative to enable the use of Android devices and apps in the workplace.* 10 *https://developers.google.com/android/work/overview -
Androidのビジネス利用 • 従業員への業務用デバイスの貸与 • 私用端末の持ち込み(BYOD, Bring Your Own Device) •
専用端末(Kiosk) ◦ 飲食店の注文端末 ◦ 配送・在庫管理のハンドヘルドデバイス 11 -
Androidのビジネス利用 • 従業員への業務用デバイスの貸与 • 私用端末の持ち込み(BYOD, Bring Your Own Device) •
専用端末(Kiosk) ◦ 飲食店の注文端末 ◦ 配送・在庫管理のハンドヘルドデバイス -> デバイス単体でも実現可能だが、運用に課題が生じることもある 12 -
ビジネス利用における課題の例 13 運用効率 セキュリティ プライバシー セットアップ 紛失による情報漏洩リスク 私物の持ち込み 問い合わせ・トラブル対応 悪意あるアプリの
インストール 労働時間の管理 労働時間外の端末利用 *これらは一例で、企業や組織、ユースケースによって多様な課題が生じる -
デバイス管理(MDM) MDM (Mobile Device Management) 企業や組織におけるモバイルデバイス運用をより効率的かつ安全にするためのサービ スのこと。 EMM(Enterprise Mobility Management)と呼ばれることもある。
Androidに限らず、iOSやWindowsなど他プラットフォームと併せてサポートしている 場合がある。 -> 今回はAndroidに限定した領域を扱う。 14 -
ビジネス利用における課題の例 15 運用効率 セキュリティ プライバシー セットアップ 紛失による情報漏洩リスク 私物の持ち込み 問い合わせ・トラブル対応 悪意あるアプリの
インストール 労働時間の管理 労働時間外の端末利用 -
MDMによる課題解決の例 16 運用効率 セキュリティ プライバシー アプリの自動インストール Wi-Fi接続情報の配布 リモートからの デバイス初期化・ロック 仕事用プロファイル
管理コンソール 提供元不明アプリの インストール禁止 Google Playストアの管理 仕事用アプリの 一時的な無効化 -
Android Enterprise Recommended サードパーティ製MDMをGoogleが検証するプログラムのこと。 > It’s a shortlist of devices
and service providers that meet Google’s strict enterprise requirements.*1 Android Enterprise Recommendedとして認定されたMDMサービスは、Android Enterprise公式のソリューションリストに掲載される*2。 18 *1. https://www.android.com/enterprise/recommended/ *2. https://androidenterprisepartners.withgoogle.com/emm/#!?aer -
22 • IT管理者が定めたポリシーによって、 セットアップ完了前に各種設定が求め られる。 • ポリシーの例 ◦ ロック画面のパスワード強度 ◦
指定アプリの自動インストール セットアップの例(BYOD) -
24 セットアップの例(BYOD) $ adb shell pm list users Users: UserInfo{0:my_user_name:123}
running UserInfo{10:仕事用プロファイル:234} running -
MDMの主な登場人物 • Androidデバイス / Android OS • MDMサーバー / Web
• Google Play 27 -
MDMの主な登場人物 • Androidデバイス / Android OS • MDMサーバー / Web
• Google Play 28 -
Androidデバイスの主な管理対象と権限 デバイスを 企業が所有している デバイスを 個人が所有している( BYOD) デバイス全体を管理する * デバイス内に仕事用の領域を作成し、 仕事用の領域のみを管理する
Device Owner権限 Profile Owner権限 29 *BYODのように個人領域と仕事領域を分ける管理方法も存在する -
Device Owner / Profile Owner • MDMを利用するために、デバイス内の特定のアプリに対して付与される管理権 限。 • これらの権限を持つアプリは、DevicePolicyManagerというシステムサービスか
らデバイス管理のための強力なAPIを実行することができる。 30 -
33 https://play.google.com/store/apps/details?id=com.google.a ndroid.apps.work.clouddpc Device Owner/Profile Owner権限を持 ちデバイス上でMDMクライアントとして振 る舞うアプリのことを Device Policy
Controller(DPC) という。 現在のAndroid Enterpise*では、 Android Device Policyというアプリが DPCとして動作する。 特定のアプリ *以前は各MDMサービスがDPCを実装する必要があった https://github.com/googlesamples/android-testdpc -
MDMの主な登場人物 • Androidデバイス / Android OS • MDMサーバー / Web
• Google Play 34 -
MDMサーバー • Google Playが提供しているAndroid Management APIを使用して、MDMの 各機能を実装する。 • このAPIではデバイスの登録から利用ポリシーの設定、アプリの自動インストールと いったAndroid
Enterpriseの標準的な機能が全て提供されている。 35 https://developers.google.com/android/management -
MDMの主な登場人物 • Androidデバイス / Android OS • MDMサーバー / Web
• Google Play 37 -
Google Play • サーバーサイドで利用するAndroid Management APIは、Google Play servicesの一部として提供されている。 • これによって、Android
Enterpriseの機能セット全てをMDMベンダーに対して標 準化して提供することができている。 • Managed Google Play*1によってインストール可能なアプリを制限したり、プライ ベートなアプリをGoogle Playでホストする*2機能も提供している。 38 *1.https://developers.google.com/android/management/apps#managed_google_pla y_iframe *2. https://developers.google.com/android/management/apps#private-apps -
Managed Configurations アプリ • Managed Configurationsの設定スキーマを定義 • Managed Configurationsを受け取る処理を実装 •
Google Playでアプリを公開* MDM • Google Playから提供されるアプリ情報を元に設定UIを表示 • IT管理者が管理コンソールから設定を作成 43 *厳密にはこの限りではなく、 Google Playがホストするプライベートアプリでも利用可能 -
Managed Configurations Android OS / Google Play • Google Play
servicesがMDMサーバーからの設定変更を受ける*1 • Android OSのシステム領域に設定値をファイルとして保存*2 • RestrictionsManagerが設定値の取得をPlatform APIとして提供 44 *1 Android Management API ApplicationPolicy https://developers.google.com/android/management/reference/rest/v1/enterprises.policies#applicationpolicy *2 UserManagerService#writeApplicationRestrictionsLAr() https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/services/core/java/com/ android/server/pm/UserManagerService.java -
Managed Configurations アプリ • Managed Configurationsの設定スキーマを定義 • 設定値を受け取る処理の実装 • Google
Playでアプリを公開 MDM • Google Playから設定スキーマを参照 • 管理コンソールから設定を作成 45 -
Managed Configurations アプリ • Managed Configurationsの設定スキーマを定義 • 設定値を受け取る処理の実装 • Google
Playでアプリを公開 MDM • Google Playから設定スキーマを参照 • 管理コンソールから設定を作成 46 -
res/xml/app_restrictions.xml <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http:</schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:title="@string/title_my_feature" android:description="@string/description_my_feature"
android:restrictionType="bool" android:defaultValue="true" <> </restrictions> 48 https://developer.android.com/work/managed-configurations#define-configuration -
res/xml/app_restrictions.xml <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http:</schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:title="@string/title_my_feature" android:description="@string/description_my_feature"
android:restrictionType="bool" android:defaultValue="true" <> </restrictions> 49 https://developer.android.com/work/managed-configurations#define-configuration -
res/xml/app_restrictions.xml <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http:</schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:title="@string/title_my_feature" android:description="@string/description_my_feature"
android:restrictionType="bool" android:defaultValue="true" <> </restrictions> 50 https://developer.android.com/work/managed-configurations#define-configuration -
res/xml/app_restrictions.xml <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android="http:</schemas.android.com/apk/res/android"> <restriction android:key="my_feature_enabled" android:title="@string/title_my_feature" android:description="@string/description_my_feature"
android:restrictionType="bool" <> </restrictions> 51 https://developer.android.com/work/managed-configurations#define-configuration -
Managed Configurations アプリ • Managed Configurationsの設定スキーマを定義 • 設定値を受け取る処理の実装 • Google
Playでアプリを公開 MDM • Google Playから設定スキーマを参照 • 管理コンソールから設定を作成 52 -
設定値を受け取る val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager val restrictions
= manager.applicationRestrictions <: return val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } doSomething(myFeatureEnabled) 53 https://developer.android.com/reference/android/content/RestrictionsManager -
設定値を受け取る val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager val restrictions
= manager.applicationRestrictions <: return val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } doSomething(myFeatureEnabled) 54 https://developer.android.com/reference/android/content/RestrictionsManager -
設定値を受け取る val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager val restrictions
= manager.applicationRestrictions <: return val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } doSomething(myFeatureEnabled) 55 https://developer.android.com/reference/android/content/RestrictionsManager -
設定値を受け取る val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager val restrictions
= manager.applicationRestrictions <: return val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } doSomething(myFeatureEnabled) 56 https://developer.android.com/reference/android/content/RestrictionsManager -
設定値を受け取る val manager = activity.getSystemService( Context.RESTRICTIONS_SERVICE) as RestrictionsManager val restrictions
= manager.applicationRestrictions <: return val myFeatureEnabled = if (restrictions.containsKey("my_feature_enabled")) { restrictions.getBoolean("my_feature_enabled") } else { defaultValue } doSomething(myFeatureEnabled) 57 https://developer.android.com/reference/android/content/RestrictionsManager -
val restrictionsFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED) val restrictionsReceiver = object : BroadcastReceiver()
{ override fun onReceive(context: Context, intent: Intent) { </ ここでRestrictionsManagerからの設定値の取得などを行う } } registerReceiver(restrictionsReceiver, restrictionsFilter) 58 -
Managed Configurationsの設定 67 <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android=<<. <restriction android:key=<<.
android:title=<<. android:description=<<. android:restrictionType=<<. <> </restrictions> -
Managed Configurationsの設定 68 <?xml version="1.0" encoding="utf-8"?> <restrictions xmlns:android=<<. <restriction android:key=<<.
android:title=<<. android:description=<<. android:restrictionType=<<. <> </restrictions> -
70 [ { "toplevel_name": "sample" }, { "name": "DroidKaigi", "url":
"droidkaigi.jp" } ] Chrome for Android への反映 -
• MDMはデバイスを効率的かつ安全に運用するためのサービス • Android EnterpriseとしてMDMの機能が標準化されている ◦ サーバーサイド:Android Management API ◦
クライアント:Android Device Policy(DPC), Device Policy Manager • MDMを提供するためにGoogle Playが重要な役割を果たしている ◦ 自動インストールのようなGoogle Playストアのビジネス向け機能の提供 ◦ サーバーとクライアントの連携 まとめ 1/2 80 -
• Managed Configurations や Connected Appsによって特殊なユースケース へ対応することができる • Managed Configurations
◦ IT管理者がアプリの設定をリモートで配布できる機能 ◦ アプリ側の実装のみで対応が可能 • Connected Apps ◦ 仕事用プロファイルと個人用プロファイルの間をアプリが通信できる機能 ◦ アーリーアクセスプログラムのため、実装方法や公開手順には注意が必要 まとめ 2/2 81 -
• https://www.android.com/enterprise/management • https://developers.google.com/android/work/requirements • https://androidenterprisepartners.withgoogle.com/glossary/emm • https://developers.google.com/android/management • https://developer.android.com/work/managed-configurations
• https://developer.android.com/reference/android/content/RestrictionsManager • https://developer.android.com/reference/android/app/admin/DevicePolicyManager • https://source.android.com/docs/devices/admin/managed-profiles • https://github.com/googlesamples/android-testdpc • https://developers.google.com/android/work/terminology Appendix 82