Power Automate×Microsoft Graph APIでpreferredDataLocationを指定しマルチジオにグループ作成する方法

Microsoft 365 マルチジオ環境で、Power Automate から Microsoft Graph API を使って特定リージョン(例:AUS)にグループを作成しようとすると、preferredDataLocation 指定だけが弾かれて詰まることがあります。原因は「作れる権限」と「データ配置先を変える権限」が別物だからです。この記事では、権限要件の整理と現場での解決手順をまとめます。

目次

症状:preferredDataLocation を付けると 403 で拒否される

Power Automate のフローから Graph API(POST /groups)を呼び出してグループを作成する際、リクエストボディに preferredDataLocation を含めると次のエラーで失敗し、外すとグループ自体は作成されるものの「既定のリージョン」に作られてしまう、というパターンです。

代表的なエラー

The requesting principal is not authorized to set group preferred data location.

やりたいこと結果よくある勘違い
preferredDataLocation: "AUS" を指定して作成403 で拒否される「グループ管理者/Teams 管理者ならいけるはず」
preferredDataLocation を外して作成作成は成功するが既定のジオに寄る「あとから簡単に移せるはず」

まず重要:対象は「Microsoft 365 グループ」か「セキュリティグループ」か

Graph の /groups は「Microsoft Entra グループ / Microsoft 365 グループ / セキュリティグループ」をまとめて扱います。ただし、preferredDataLocation は“Microsoft 365 グループのデータ配置(PDL)”として説明されており、Teams や SharePoint サイト、グループメールボックスなど「データが生まれるグループ」に関係します。

種類Graph の典型設定主な用途preferredDataLocation の意味
Microsoft 365 グループ(Unified)groupTypes:["Unified"] / mailEnabled:trueTeams、SharePoint、Outlook グループなどメールボックス/サイト等の配置ジオに影響する
セキュリティグループgroupTypes:[] / securityEnabled:true / mailEnabled:falseアクセス制御(権限付与)“データ配置”の概念が薄く、狙いがズレやすい

今回のように「外すと Office 365(Microsoft 365)グループとして作成されるが、場所が既定になる」という挙動は、Unified グループ作成の文脈で起きる典型例です。

preferredDataLocation(PDL)とは:マルチジオで“どこにデータを置くか”を決めるキー

Multi-Geo を使うと、ユーザーやグループの Microsoft 365 データを、組織の地域要件に合わせて複数の地理ロケーション(ジオ)に分散できます。ユーザー側では preferredDataLocation 属性を設定し、メールボックスや OneDrive などの「データの居場所」を決めるのが基本です。

Microsoft 365 グループについても同様で、ユーザーがグループを作成した場合、グループの PDL は基本的に「作成者の PDL を継承」します。Graph の作成 API でも、レスポンス例として “preferredDataLocation は作成者から継承される” 旨が明記されています。

挙動何が起きるか現場での影響
preferredDataLocation を省略作成者の PDL(または既定)を継承サービスアカウントの PDL が既定だと、狙ったジオに寄らない
preferredDataLocation を明示指定ジオでの配置を狙うただし権限が足りないと 403 で拒否される

また、Microsoft 365 の手順としても「グループの PDL はユーザーから自動設定される」「グローバル/SharePoint/Exchange 管理者は任意の Geography を選べる」「指定 PDL で作るとグループメールボックスと SharePoint サイトがその PDL にプロビジョニングされる」とされています。

エラー原因:データレジデンシ(配置先)を変える操作は“高権限”として扱われる

ポイントはここです。グループを“作成する権限”と、グループの“データ配置先(PDL)を指定する権限”は別物として扱われます。

Microsoft Graph の group リソース定義では、preferredDataLocation を設定するために次の要件が示されています。

  • 呼び出しアプリに Directory.ReadWrite.All が付与されていること
  • さらに(委任シナリオでは)呼び出しユーザーが、User Account Administrator / Directory Writer / Exchange Administrator / SharePoint Administrator のいずれかの Entra ロールを持つこと

つまり、Groups Administrator や Teams Administrator といった“ワークロード寄り”の権限だけでは、preferredDataLocation の設定を許可しない設計になっています。実際に Power Automate からの作成で同エラーに遭遇した事例では、「SharePoint/Groups/Teams 管理者ロールを持っていても PDL 設定は許可されない」ため、追加のロールが必要と案内されています。

最短で整理:あなたの呼び出しは“委任”か“アプリ(アプリケーション権限)”か

Power Automate から Graph を叩くとき、同じ「サービスアカウントで動かしているつもり」でも、実際のトークンがどちらかで要求が変わります。

方式トークンの主体特徴今回ハマりやすい点
委任(Delegated)サインインしたユーザー(サービスアカウント等)“ユーザーとして” Graph を呼ぶユーザー側の Entra ロール要件を満たしているかが効く
アプリ(Application / Client Credentials)アプリ(サービスプリンシパル)“アプリとして” Graph を呼ぶ(非対話)ユーザーに付けたロールは効かない。アプリ側の権限・ロールが焦点になる

「サービスアカウントに SharePoint 管理者を付けたのに直らない」場合、呼び出しの主体がそのユーザーではなく、別のアプリ(またはコネクタ)が発行したトークンになっている可能性があります。ここを切り分けるだけで、解決までの道筋がほぼ決まります。

必要な権限セットを“表で”押さえる

最低限ここだけ把握しておくと、関係者(グローバル管理者、セキュリティ担当)に説明しやすくなります。

項目必要になるもの根拠補足
グループ作成(/groups)委任:Group.ReadWrite.All(または上位の Directory.ReadWrite.All)
アプリ:Group.Create(または Directory.ReadWrite.All / Group.ReadWrite.All)
Graph の Create group 権限表“作れる”だけならここで足りることが多い
preferredDataLocation の設定Directory.ReadWrite.All +(委任の場合)指定ロール(SharePoint Administrator など)group リソースの要件これが満たせず 403 になりやすい
“サービスアカウントで実行しているのにダメ”な場合の追加手当Global Administrator 付与
または Directory Writers と PreferredDataLocation Writer の割り当て
Microsoft Q&A の案内Power Automate の実行主体(プリンシパル)に対して付与するのがポイント

解決策:委任(サービスアカウントでサインインして呼ぶ)で通す

「Power Automate の接続(コネクション)としてサービスアカウントを使い、そのユーザーの委任トークンで Graph を呼ぶ」運用であれば、まずは Graph が求める条件に合わせて組み立てます。

手順の考え方

  • アプリ側:Directory.ReadWrite.All を含む委任権限を付け、管理者同意(Admin consent)まで完了させる
  • ユーザー側:サービスアカウントに SharePoint Administrator(または Exchange Administrator / Directory Writer / User Account Administrator) を割り当てる
  • フロー側:実際に Graph を叩いている接続が、そのサービスアカウントであることを確認する

運用メモ(詰まりどころ)

  • PIM を使っている場合:ロールが「割り当て済み」でも「有効化(Activate)」されていないと、実行時に権限不足になり得ます(運用に合わせて、実行前に有効化する手順を決めておくのが安全)。
  • 委任権限の同意が抜けている場合:フローの実行者にはロールがあっても、アプリのスコープが足りず弾かれます。Graph の仕様では preferredDataLocation 設定に Directory.ReadWrite.All が必要です。

解決策:クライアントID/シークレット(アプリ登録)でアプリとして呼ぶ

非対話で確実に動かしたい場合、アプリ登録(Client Credentials)で Graph を呼ぶ構成がよく選ばれます。この場合は“サービスアカウントのロール”ではなく、“アプリ(サービスプリンシパル)の権限”が主役になります。

アプリ登録側の権限(アプリケーション権限)の目安

Microsoft Q&A の案内では、次の Graph 権限をアプリに付与(Delegated/Application いずれでも)し、管理者同意を実施する必要があるとされています。

  • Group.ReadWrite.All
  • Directory.ReadWrite.All
  • User.ReadWrite.All

なお、Create group API 自体の権限表としては、アプリケーション権限では Group.Create が最小権限として挙げられ、上位権限として Directory.ReadWrite.All や Group.ReadWrite.All が示されています。

ロール(Directory role)の割り当て

アプリとして PDL を指定する用途では、ロール要件が絡んで拒否されることがあり、Q&A では次の対応が推奨されています。

  • Global Administrator を付与する(短期での付与・作業後の剥奪を推奨)
  • Global Admin が難しい場合は、Global Admin に依頼して Directory Writers と PreferredDataLocation Writer を割り当ててもらう

このあたりは組織のセキュリティ基準で判断が分かれます。長期で Global Administrator を付けっぱなしにするより、必要な作業時間だけ有効化できる仕組み(PIM など)や、用途限定のアプリ・アカウント分離を前提に設計すると運用が安定します。

実装例:Graph API で AUS に Microsoft 365 グループを作成する

Graph の Create group は POST /groups です。Microsoft 365 グループ(Unified)で PDL を指定する場合、リクエストのイメージは次の通りです(実際の業務では命名規則や所有者設定も合わせて入れてください)。

{
  "displayName": "Project-AUS-001",
  "description": "AUS に配置するプロジェクト用グループ",
  "groupTypes": ["Unified"],
  "mailEnabled": true,
  "mailNickname": "project-aus-001",
  "securityEnabled": false,
  "preferredDataLocation": "AUS",
  "visibility": "Private"
}

ポイント

  • groupTypes に Unified を入れると Microsoft 365 グループになります(Teams の土台)。
  • preferredDataLocation は指定しない場合、作成者の PDL を継承する前提です。
  • PDL 指定が通るかどうかは、権限(Directory.ReadWrite.All)とロール要件の両方が満たされているかで決まります。

作成後の確認(推奨)

フローの最後で GET /groups/{id}?$select=displayName,preferredDataLocation,groupTypes を呼び、preferredDataLocation が意図どおりになっているかをログに残すと、運用時の問い合わせが激減します。

Geo コード(AUS など)の選び方と注意点

PDL は 3 文字コードで指定します。Microsoft 365 のドキュメントでは AUS(Australia)、CAN(Canada)、DEU(Germany)など具体的なコード表が提示されています。まずは自テナントで有効な Geography と、指定したい PDL が一致しているかを確認してください。

例(Geography)PDL 値メモ
AustraliaAUS例としてよく使われる
CanadaCANNorth America(NAM)とは別コードなので混同注意
GermanyDEUEUR と DEU の違いを要確認
United StatesNAM“US” ではない

切り分けチェックリスト:403 が消えないときに見る場所

チェック項目見る場所NG のときの典型症状対処の方向性
preferredDataLocation を設定できる権限(Directory.ReadWrite.All)があるかアプリ登録の API アクセス / コネクションのスコープ403 / Insufficient privilegesDirectory.ReadWrite.All を付与し管理者同意
呼び出し主体は“ユーザー”か“アプリ”かPower Automate の接続方式ユーザーにロール付与しても変化なしアプリ方式ならサービスプリンシパル側の権限・ロールを見直す
委任の場合:ユーザーに必要ロールがあるかEntra ロール割り当てpreferredDataLocation だけ 403SharePoint/Exchange/Directory Writer 等を確認
アプリ方式:Global Admin もしくは Directory Writers / PreferredDataLocation Writer が割り当てられているかEntra 管理センター > Roles & admins“not authorized to set group preferred data location” が継続Q&A 推奨のロール付与を検討
PDL コードが正しいか(AUS 等)Multi-Geo のコード表400 / 値が反映されないコード表に合わせて修正

運用のコツ:権限を強くしすぎないための現実解

PDL を操作する処理は「データの所在」に直結するため、組織内レビューが入りやすい領域です。Power Automate の自動化を安全に通すには、次の“落としどころ”が現場で効きます。

  • 用途限定のアプリ登録に分離:グループ作成・設定以外はさせない(他の Graph 権限を足さない)。Create group の権限表を基準に最小権限から設計する。
  • Global Administrator の恒久付与は避ける:必要であれば短期付与+作業後に剥奪、またはより限定的なロールで代替する。
  • フローに“監査用ログ”を残す:作成したグループ ID、displayName、preferredDataLocation、実行者(接続名)、失敗時のエラー本文を保存する(将来の障害対応が楽になります)。

代替策:GUI や Exchange PowerShell で「指定 PDL のグループ」を作る

「まずは手動でもいいから指定ジオに作りたい」「Graph の権限調整に時間がかかる」場合は、Microsoft の手順として SharePoint 管理センター(対象 Geography の管理 URL)から作成する方法や、Exchange PowerShell の New-UnifiedGroup で -MailboxRegion を指定する方法も案内されています。

  • 例:AUS の SharePoint 管理センターにアクセスして作成(URL 例はドキュメントに記載)
  • 例:Exchange PowerShell で New-UnifiedGroup ... -MailboxRegion EUR のように作成

ただし、これらは「自動化」ではないため、最終的に Power Automate で再現したいなら、やはり Graph 側の権限設計が本命になります。

よくある質問

preferredDataLocation を後から変更できますか?

Graph の group リソースでは preferredDataLocation は書き込み可能である一方、更新も同様に高権限が必要です(Directory.ReadWrite.All と特定ロール)。既存グループの移設は周辺サービス(SharePoint サイトやメールボックスなど)の状態にも左右されるため、運用設計としては「作成時に正しい PDL で作る」方が事故が少ないです。

サービスアカウントに SharePoint 管理者を付けたのに直りません

多くの場合「実際に Graph を呼んでいるプリンシパルがサービスアカウントではない(アプリとして呼んでいる)」のが原因です。Power Automate の接続方式を見直し、アプリ方式ならサービスプリンシパル側にロール/権限を付与する方針で再設計すると改善します。Q&A でも、PDL をセットするには Global Admin または Directory Writers / PreferredDataLocation Writer の割り当てが必要と案内されています。

AUS 以外のコードはどこで確認できますか?

Microsoft 365 のドキュメントに Geo location codes の表が掲載されています。AUS、CAN、DEU、EUR、NAM など、似たコードが混在するため“思い込み”で指定しないのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次