2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今更だけどAndroid Device Policyについて調べる

Last updated at Posted at 2024-07-26

twitter

Android Device Policyってなんだ?

Android Device Policy は、IT 管理者が Android Management API を使用する企業向けモバイル管理(EMM)プロバイダを介して Android デバイスを直接管理できるようにする組み込みの Device Policy Controller です。

Device Policy Controller アプリでは、次のことを行います。

  • EMM ソフトウェアと通信して、プロファイルとデバイスの制限と設定を適用します
  • 管理対象の設定を実装し、デバイスが EMM のポリシーに準拠していることを確認します

Android Device Policyは、Android Management APIを用いてデバイスを管理下に置く働きをする機能
Device Policy Controllerは、例えば専用端末だったり画面ロックだったりといったデバイスの在り方をデバイスに適用する&確認するシステムを指した名称

組織でサードパーティの EMM プロバイダをご利用の場合は、Device Policy Controller のインストールと Android デバイスのセットアップについて、管理者にお問い合わせください。

と書いてあるから、MDMとかを提供している会社だとDevice Policy Controllerのアプリを独自で作って、独自のコマンドとかそういうのを作っているんだろうか

すごい端的に言っちゃえば、Android Device PolicyというのはAndroidに初めから入っていて、Androidが提供しているデバイス管理する仕組みの名前ってことだと思う

管理下に置く方法はおおきく3パターン

  • 仕事用プロファイルを用いて管理下に置く(仕事用プロファイル)
  • 完全管理対象を用いて管理下に置く(完全管理)
  • 専用端末として管理下に置く(専用端末)

1つめは、BYODなどデバイスを個人利用もする状況に使う
2つめは、会社での利用や業務時間しか使えないようにするなど、管理者が意図した場合のみにデバイスを利用する状況で使う
3つめは、Posレジなどデバイスのアプリを固定して使用する状況で使う
というイメージ

(実はほかにもfully managed device with a work profileというのもあるが載ってない…
なくなったのかな…?)

以前はfully managed device with a work profile(COPE)やCOSEといったデバイス管理方法もあったようだが、今では非推奨になったらしい


セットアップ方法

セットアップ方法は6つ
セットアップによっては対応していない管理方法があるようです

提供されているEMMによってセットアップの方法は指定されているので、上記のURLで確認すると良いらしい。
IntuneだとSamsungのKnox Mobile Enrollmentというセットアップ方法もあるみたい…
なんだそれ!気になる…!


2つの権限

Android Device Policyには2つの権限が大きくかかわっているらしい

  • デバイス所有者(Device Owner)
  • プロファイル所有者(Profile Owner)

Device Owner、Profile Ownerは前述したデバイス管理の方法に大きくかかわっており、

  • 仕事用プロファイル -> Profile Owner
  • 完全管理 -> Device Owner
  • 専用端末 -> Device Owner

といったように権限が少し違っていたりします。
完全管理と専用端末に関しては、公式ドキュメントでも

専用デバイス(以前は「会社所有の単一用途デバイス(COSU)」と呼ばれていました)は、特定の目的のためのフルマネージド デバイスです

と、近しい関係にあるっぽい

さらに、権限によってできることも異なり
Device OwnerのほうがProfile Ownerよりも多くの機能を操作できたりします

機能 Profile Owner Device Owner
カスタムのロック画面メッセージを作成する
データ ローミングを無効にする
設定がブロックされている場合に、
カスタマイズしたメッセージを表示する
壁紙をロックダウンする
ユーザー アイコンのロックダウン
デバイスの健全性とステータスを
リモートでモニタリングする
Android デバイスをリモートで再起動する

(余談ですが、以前はデバイス管理者(Device Admin)の権限も大きくかかわっていたが、Android10でほとんど廃止されたようです
(さらに余談、Device Owner権限は初期化のセットアップの際に設定する必要がある。そのため、前述した「Google Playから管理アプリを入れる方法」ではDevice Owner権限は付与することができないため、仕事用プロファイルのみの対応になっていたり…)


Android Device Policyでできること

めっちゃあるので詳しく知りたい方は是非上記のリンクへアクセスしてみてください

ニーズがありそうなところ(主観)だと、以下のようなところでしょうか…?

(あくまでAndroid Device Policyでできることというだけなので、独自でDevice Policy Controllerを作るとかすればもっといろいろできると思う)


Android Device Policy触ってみる

EMMをやっていると簡単に文鎮化します
実機の際は用法・要領を守って慎重に調べながらやってください

クイックスタートに従ってやってみましょう!

用意するもの

  • Android 6.0以上のデバイス
  • Android Enterpriseに紐づいてないアカウント
    • ここを開いてみて、
      「managed Google Play ストアへのアクセス権限が会社からまだ付与されていません。」と出るアカウントなら大丈夫

いろいろやっていく

  • プロジェクトの作成 &エンタープライズの紐付け
  • ポリシーの作成
  • ポリシーをデバイスに適用

プロジェクトの作成 &エンタープライズの紐付け

アクセスして「プロジェクトを作成」ボタンをクリック。
ダッシュボードへ移動して
スクリーンショット 2024-06-19 10.43.03.png

なんでもいいので名前を付けて作成し、プロジェクトを開いてダッシュボードからプロジェクトIDをコンソールへ
コピペして実行
その後言われるがままにコードを実行して認証させます

その後も言われるがままにコードを実行し、お店の名前を雑につけてEnterpriseに登録

ポリシーの作成

policy_json = '''
{
  "applications": [
    {
      "packageName": "com.google.samples.apps.iosched",
      "installType": "FORCE_INSTALLED"
    }
  ],
  "advancedSecurityOverrides": {
     "developerSettings": "DEVELOPER_SETTINGS_ALLOWED"
  }
}
'''

「ひとまずこれを実行してみてねー」とのこと。
実行してみましょう
その後のコードも実行。なんかQRコードが出てきた
これがQRコードでプロビジョニングするやつですね

一通り初期設定が終わったら設定アプリを開いて「Password&Accounts」を開いてみましょう
すると、Account for Ownerの欄にManagedAccountと書いてある項目が
さらにすべてのアプリを見ると、普通の初期設定では入らないGoogle I/Oという知らないアプリも

setting All App
Screenshot_20240619-025715.png Screenshot_20240619-025852.png

アプリについて調べてみるとこのアプリのようです

ポリシーをいろいろいじってみる

完全管理が一番操作しやすいので上記のサイトでまとめられているのを参考にいろいろいじってみましょう
あと、再度にはなるんですが結構簡単に文鎮化するので、本当に本当に気をつけてください
「フーン。アプリ非表示にできるのか…ランチャー非表示にするか」とか、そういう好奇心を持っている方は文鎮製造機の才能がある方なので注意してください
上級者向け(緑色の星がついている項目)をやらなければ、そういったことにはならないとは思いますが…


ひとまず、

をやってみましょう

するとこんな感じになるかなと思います

import json

policy_name = enterprise_name + '/policies/policy1'

policy_json = '''
{
  "passwordRequirements": {
  "passwordQuality": "ALPHABETIC",
  "passwordScope": "SCOPE_DEVICE"
  },
  "deviceOwnerLockScreenInfo": {
      "defaultMessage": "Hello World"
  },
  "applications": [
    {
      "packageName": "com.google.samples.apps.iosched",
      "installType": "FORCE_INSTALLED"
    },
    {
       "packageName": "jp.co.yahoo.android.yjtop",
      "installType": "FORCE_INSTALLED"
    }
  ],
  "cameraDisabled": true,
  "factoryResetDisabled": false,
  "advancedSecurityOverrides": {
     "developerSettings": "DEVELOPER_SETTINGS_ALLOWED"
  }
}
'''

androidmanagement.enterprises().policies().patch(
    name=policy_name,
    body=json.loads(policy_json)
).execute()

どうでしょうか、実際にその通りにキッティングされましたでしょうか?
されなかったらどっかにミスがあるので、頑張ってください(なげやり)

まとめ

多くの会社で専用端末モード(KIOSK)のAndroidデバイスが用いられてます
SNSとかで「飲食店の端末いじったら、Androidのホーム画面いけたわwww」
みたいなツイートを見かける時があると思いますが、まさにそれです

Android Device Policyは、趣味でアプリ開発だったりだとあまり使わないし、私物の普段使いのスマホで活用している人もほとんどいないんじゃないかなと思います
ですが、徐々に扱われるケースが増えていってるんじゃないかなと個人的には思います
(自分が扱うようになって目についてるだけな可能性が高いですがw)

簡易に試すだけならお手軽ですし、もし暇な時間があれば試しで見るのはどうでしょうか

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?