🤖

ちょっとまって!仕事Slackを個人端末に入れる前に知っておきたいAndroidのBYOD

2022/12/08に公開

社外勉強会に行くと、会社Slackを個人端末に入れている人を時々見かけます。
今回は、それがいいとか悪いとかいう話ではなく、AndroidのWork Profileを使って仕事ユーザを分離すると意外と便利ですよという話をします。

夜は、仕事モードをオフ!

「Webサービスを止めてはいけない!」という一部の人を除けば、SlackやMicrosoft Teamsのようなチャットツールが業務時間外に鳴ることは普通に不幸せです。

AndroidのWork Profileを使って仕事領域を分ける一番のメリットは、「仕事モードをオフ!」ができることです。

もちろん、チャットアプリ側の通知設定で夜だけ通知オフとか、OSの設定(おやすみモードなど)で夜は全く通知来なくするとか、代替手段はいくらかあります。

ただ、別に夜に来た通知を捨てたいわけじゃないんですよね。明日の朝にまとめて見れたらいいんですけど、ただ、アプリがそこに生きていると通知をもらいに行ってしまう。夜だけ仕事アプリを止められたら最高なのに...。

その「アプリを一時的に止める」手段が、まさにWork Profileでできることです。

仕事用プロファイルを作るには?

https://zenn.dev/yusukeiwaki/articles/b8fb86d5790df9

のようにAndroid Management APIを使って自分でMDMサービスを作ることもできますが、多くのエンジニアはそんなに暇じゃあありません。

https://developers.google.com/android/management/quickstart

Google Colaboratory (ほぼJupyter Notebook)上でAndroid Management APIを動かすための公式のサンプルがあります。

これを使うと、自分専用のMDM環境を作って、すぐにWork Profileを使い始めることができます。

Google API Consoleでプロジェクトを作る

最初に1回だけやらないといけない作業です。Google APIコンソールでoreore-mdmプロジェクトを作るに詳しく書いてます。

サービスアカウントを作成する

これも最初に1回だけやらないといけない作業です。Google ColaboratoryはOAuth2認証を使うようになっていますが、毎回GoogleログインしてからAPIを叩くのは面倒なので、サービスアカウントを作っておくとよいです。

認証情報(サービスアカウント)を作成するに詳しく書いてます。鍵のJSONがダウンロードできていればOK

Android Management APIクライアントのインスタンス生成

基本的にはGoogle Colaboratoryのノートを読んで上から順に実行していくだけです。

ただ、このセル↓は普通に実行するとOAuth2認証で、若干面倒なので、

↓以下のように書き換えてサービスアカウントでの認証に変更すれば、セルを実行するだけで認証完了するのでだいぶラクです。

import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials

# ダウンロードしてきたサービスアカウント鍵JSONファイルの中身をここに書く↓
service_account_key = {
  "type": "service_account",
  "project_id": "iwaki-mdm-341213",
  "private_key_id": ...
  
}

scopes = ['https://www.googleapis.com/auth/androidmanagement']

credentials = ServiceAccountCredentials.from_json_keyfile_dict(service_account_key, scopes)
androidmanagement = apiclient.discovery.build('androidmanagement', 'v1', credentials=credentials)

Enterpriseの作成

これも最初に1回だけで良い作業です。とはいえ、↓このセルを実行するだけです。

Googleログインして、MDM利用者情報を適当に入れたら、コールバックコードが発行され、それをここに入力します。

コードを入力すると、enterprises.createのAPIが叩かれて無事にEnterpriseが作られます。

ポリシーの作成

サンプルだと、Google IOアプリを強制インストールするだけのポリシーになっています。

しかし今回はアプリ管理を厳密にやりたいわけではないため、Playストアを自由に使えるようなポリシー(playStoreMode: BLACKLIST 指定)にしておくとよいです。

import json

policy_name = enterprise_name + '/policies/policy1'

policy_json = '''
{
  "playStoreMode": "BLACKLIST",
  "debuggingFeaturesAllowed": true
}
'''

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

QRコード作成

Work Profileでエンロールするためには 'allowPersonalUsage': 'PERSONAL_USAGE_ALLOWED'の指定が必要です。

なので、エンロールメントトークンを作るセルを以下のように編集して実行してからQRコードを作ります。

enrollment_token = androidmanagement.enterprises().enrollmentTokens().create(
    parent=enterprise_name,
    body={'policyName': policy_name, 'allowPersonalUsage': 'PERSONAL_USAGE_ALLOWED' }
).execute()

Work Profileモードでエンロール

設定アプリを開き、Google設定→セットアップと復元→仕事用プロファイルを作成 すると、QRコードリーダーが起動します。

あとはセットアップ完了まで進めるのみです。

正常に完了したらManaged Google Playアカウントでログイン済み状態でGoogle Playがいつもどおり使えるはずです!

まとめ

「BYOD」なんて単語は出て久しいものの、「BYOD! BYOD!」言ってる大きな会社ほどセキュリティまわりでうるさく普及していません。いっぽうで、イケイケベンチャー企業のみんなはもう個人端末にSlackとか入れています。要は、勝手にBYODをやっているのが実情で、なんかもうそれならもっと便利にBYODしようぜ!というのが今回のお話でした。

手順的には多く見えたかもしれませんが、ほとんどは最初に1回だけ必要な手順なので、意外と大したことありません。Android Management APIを使うと、結構お手軽に快適なBYODライフを導入できます。

みなさまお試しあれ!

Discussion