MS Planner Driver を使う場合の注意点:「管理者の承認が必要」についての対処方法

こんにちは。CData Software Japanリードエンジニアの杉本です。

今回はよく問い合わせを頂く MS Planner Driver使用時の「管理者の承認が必要」の画面の対処方法についてお伝えしたいと思います。

www.cdata.com

f:id:sugimomoto:20201229160612p:plain

どんな問題?

CData MS Plannerでは、以下のPlannerのバケットやタスクの管理を、使い慣れたSQLベースで実行できるようになっています。

f:id:sugimomoto:20201229160619p:plain

この製品、内部ではMicrosoft Graph APIが利用されており、一番最初アクセスを行う際に、ログインプロセスおよび対象となるテナントへのアクセス許可を求められる仕様になっています。

docs.microsoft.com

f:id:sugimomoto:20201229160626p:plain

通常であれば、以下のようなログイン画面が表示されて、アクセス許可の同意を行うことができます。

f:id:sugimomoto:20201229160633p:plain

しかしながら、対象のテナント・ユーザーのロールによっては、以下のような画面が表示されて、うまくアクセスができない、といったご相談をよく受けます。

f:id:sugimomoto:20201229160639p:plain

それではどのようにこの課題を解消すればいいのでしょうか?

CData MS Planner Driver 何が必要なのか?

解消方法を解説する前に、少しだけ技術的な要件について記載しておきましょう。

CData MS Planner Driverが必要とするアクセス許可は以下の通りです。

  • Group.Read.All
  • Group.ReadWrite.All
  • User.ReadBasic.All
  • User.Read.All
  • User.ReadWrite.All

これはCData MS Planner Driverを通じてアクセスする以下のテーブルやビューの表示・更新のために必要な権限セットとなっています。

f:id:sugimomoto:20201229160646p:plain

大本をたどると、MS Graph APIのPlanner に関する各種アクセス許可と、それに関連するユーザー情報のアクセス許可になっています。

docs.microsoft.com

ユーザー委任型で、「Group.Read.All」もしくは「Group.ReadWrite.All」が必要になっているということがわかります。

f:id:sugimomoto:20201229160651p:plain

さて、このアクセス許可ですが、一見「委任型(つまりユーザーの同意)」の元、アクセス許可を行う権限なのですが、注意しなければいけないのが以下のページで記載されている「管理者の同意が必要」な権限である、という点です。

docs.microsoft.com

f:id:sugimomoto:20201229160658p:plain

この「管理者の同意」が必要であるがために、管理者ロールを持たないユーザーでは、下記のエラーメッセージが表示され、アクセスができなかった、となるわけです。

f:id:sugimomoto:20201229160708p:plain

管理者とは何なのか?

さて、曲者はこの「管理者」という存在です。

ひとえに「管理者」と言っても、実はOffice365の管理者ロールってすごくたくさんあるんですよね。

docs.microsoft.com

f:id:sugimomoto:20201229160715p:plain

もちろん、一番シンプルに最上位の管理者である「グローバル管理者(サインアップしたユーザーがデフォルトで設定される管理者ですね)」であれば、この問題はクリアできますが、おそらく大半のOffice365利用ユーザーは付与して利用することができない権限でしょう。

では、最低限必要な「管理者」が何か? と言えば、以下の「アプリケーション管理者」の権限になります。

f:id:sugimomoto:20201229160721p:plain

このロールを持ったユーザーでアクセスを行うと、以下のようにアクセス許可の承諾が行えるようになります。

f:id:sugimomoto:20201229160731p:plain

ですので、MS Planner Driverを利用する場合は、このアプリケーション管理者の権限を持っているユーザーかどうか? もしくは付与することができるかどうか? をシステム管理者の方に確認するのが良いでしょう。

クライアントクレデンシャル(アプリケーションのアクセス許可)について

もしかすると「アプリケーション管理者」すら与えたくない、といったテナントもあるかもしれないですが、今の所これに対する良い回避方法はありません。

クライアントクレデンシャル(アプリケーションアクセス許可)というアプローチを使って、組織独自でOAuthのアプリを作り、必要な権限と管理者の事前同意を行った情報(ClientId・ClientSecret)でアクセスを行う、というアプローチ(Office365 Driverは利用可能)もありますが

https://www.cdata.com/jp/blog/2019-09-19-105417

現在Planner APIはクライアントクレデンシャルによるアクセス許可ができないようになっています。以下のアプリケーションの項目が「いいえ」になっていますね。

docs.microsoft.com

f:id:sugimomoto:20201229160738p:plain

ただ、正直なところ、個人的には結構このPlannerを使う敷居が高いと感じているので、MSさん改善してくれないかなーと感じる次第です。

その他、ご不明な点があれば、お気軽にテクニカルサポートまでお問い合わせください。

www.cdata.com

参考情報

jpazureid.github.io

トライアル・お問い合わせ

関連コンテンツ