Microsoft Power Automate × Graph API で EMS 運用自動化のススメ(準備編)

Kenta Osuka
kosuka EMS
Published in
9 min readFeb 2, 2020

【第3回EMS勉強会に参加しました】
先日、第3回EMS勉強会のLT枠に「EMS運用自動化のススメ」というテーマで登壇させていただきました。有難いことにその際ブログ化の要望を多くいただきましたので、書かせていただこうと思います。

【シリーズもので行こうと思います】
今回からGraph APIやMicrosoft Power Automateを活用したEMS運用自動化をテーマに連載していきます。
筆者のあるある設計を題材にして、設計と自動運用化のポイント・考慮点を重点的にお話しできればと思います。

※もし「こんなテーマでやって欲しい」があれば是非コメントください
※今回は準備編となりますので皆様お付き合いいただければと思います。

【実施環境】
サービスアカウントを用意し、以下のライセンスを割り当て。
※サービスアカウントは多要素・ロール無し。
・Microsoft 365 E5(またはトライアル)
・Microsoft Flow Free(または per userライセンス)

【アプリの登録】
Graph APIを実行するには、その受け口となるエンドポイントのアプリケーションが必要となります。まずはそれを準備していきます。

① 管理者ユーザーで https://portal.azure.com へアクセスし、[Azure Active Directory] をクリックします。

② 後続の手順で必要となりため、[テナント ID]をメモしておきます。その後、[アプリの登録]をクリックします。

③ [+新規登録] をクリックします。

④ 任意の [名前] を入力し、[サポートされているアカウントの種類] を [この組織に~] を選択したら、[登録] をクリックします。

⑤ 後続の手順で必要となりため、[アプリケーション(クライアント) ID] をメモしておきます。その後、[API のアクセス許可]をクリックします。

⑥ [+アクセス許可の追加] をクリックします。

⑦ 少し下の方にスクロールし、[Microsoft Graph] をクリックします。

⑧ 今回は Microsoft Power Automate で利用するため、[アプリケーションの許可] を選択します。
※例えば PowerShell / Python などで Graph API を叩く場合は [委任されたアクセス許可] を選択します。

⑨ 今回はテスト用に Intune へ登録されている [業務用デバイスの ID] の一覧を取得します。
そのため、以下の権限を追加し、[アクセス許可の追加] をクリックします。
※付与するアクセス許可はセキュリティ上の観点から実行処理に合わせた最小権限を付与するようにしましょう。

・DeviceManagementServiceConfig.ReadWrite.All

⑩ [〇〇 に管理者の同意を与えます] を選択し、[状態] が [〇〇 に付与されました] となったことを確認します。

⑪ ブレードから [証明書とシークレット] へ移動し、[+新しいクライアント シークレット] をクリックします。

⑫ 任意の [説明] を入力し、[追加] をクリックします。

⑬ 作成された [クライアント シークレット] をコピーします。
※一度しか表示されないため、ご注意ください。

~以降の手順は Microsoft Intune 及び Microsoft Power Automate による動作確認手順となります~

⑭ [Microsoft Azure] をクリックしてホームへ戻り、[Intune] サービスを選択します。

⑮ ブレードから [デバイスの登録]をクリックします。

⑯ ブレードから [業務用デバイスの ID] をクリックします。

⑰ [+追加]、[手動で入力] の順でクリックします。

⑱ 以下の情報を入力し、テスト用のIDを追加します。
・ID の種類を選びます:IMEI
・識別子:任意(14~16桁の英数字)
・詳細:任意(本来はデバイスの所有者などを紐付けておくと便利)

⑲ テスト用のIDが追加されたことを確認します。

https://japan.flow.microsoft.com へアクセスし、作成したサービスアカウントでログインします。

㉑ [+作成] から、[インスタント フロー] をクリックします。

㉒ 作成画面で任意の [フロー名] を入力し、[このフローをトリガーする方法を選択します] で [手動でフローをトリガーします] を選択の上、[作成] をクリックします。

㉓ [+新しいステップ] をクリックします。

㉔ 検索バーで [HTTP] とクリックし、[HTTP(PREMIUM)] をクリックします。
※Premiumコネクタを利用できるライセンスが付与されていない場合、ここでトライアル版の有効化を求められます。

㉕ [詳細オプションを表示する] をクリックします。

㉖ 以下の情報を入力し、[保存] をクリックします。
・方法:GET
・URI:https://graph.microsoft.com/beta/deviceManagement/importedDeviceIdentities
・認証:Active Directory OAuth
・テナント:手順②でメモした [テナントID]
・対象ユーザー:https://graph.microsoft.com
・クライアントID:手順⑤でメモした [クライアントID]
・資格情報の種類:シークレット
・シークレット:手順⑬でメモした [クライアント シークレット]

㉗ [テスト] をクリックします。

㉘ [トリガーアクションを実行する] を選択し、[テスト] をクリックします。その後、[フローの実行]/[完了] の順でクリックします。

㉙ [ご利用のフローが正常に実行されました。] と表示されたことを確認します。また、赤枠部分をクリックすることで、要求の応答を確認することが可能です。
※実行に失敗した場合、ネット上に参考情報が転がっているので適宜対処お願いします。

【まとめ】
準備編いかがだったでしょうか。「30ステップ弱でEMSの自動化が完了してしまう」ことが最大のメリットだと思っています。

【筆者からのお願い】
もし「この記事Good!」と思っていただけたらTwitterで感想や拡散をしていただけると嬉しいです!筆者のモチベーションに繋がります!

また、冒頭でも記載しましたが、「こんな自動化は可能か?」「こんな運用で困っているので自動化したい」といったコメントもお待ちしております。

【次回予告】
次回は、[BYOD端末の利用開始処理を自動化する]を題材に更新しようと思いますのでお楽しみに!

--

--

Kenta Osuka
kosuka EMS

I like EMS(Enterprise Mobility + Security). This blog/vlog will introduce EMS.(Main is Intune/Azure AD)