同じロジックでも、接続の方式が違うだけで片方だけ止まる。退職者が出た、パスワードが期限切れになった、MFA(多要素認証)設定を変えた——そのたびにフローが落ちる設計と、まったく連動しない設計が、同じ組織の中に並走している。
認証方式を「どれが楽か」で選んだ結果が、運用負債として戻ってくるパターンは一定だ。判断軸を「耐久性」に置き換えるだけで、同じフローの壊れ方の構造が変わる。
認証設計は「依存設計」の別名
認証方式の選択は、実質「何に依存するかの選択」だ。
- 人(委任トークン)に依存するフローは、その人の人事状態に連動する。退職・異動・MFA 変更・ライセンス変更が起きれば止まる
- 秘密(API キー・共有シークレット)に依存するフローは、その秘密の有効性に連動する。漏洩・期限切れ・ローテーションのたびに更新が要る
- プラットフォームが管理する身元(Managed Identity:マネージド ID)に依存するフローは、人事情報にも秘密の有効性にも連動しない
この 3 段階を、ここでは「耐久性はしご」と呼ぶ(筆者による整理)。はしごを登るほど、人為的な作業に起因する失効トリガーが減る。
| 方式 | 依存先 | 代表的な失効トリガー |
|---|---|---|
| 委任トークン(ユーザー接続) | 特定の人間のアカウント | 退職・MFA 変更・ライセンス変更・長期不使用 |
| API キー / 共有シークレット | 秘密情報の有効性 | 漏洩・期限切れ・ローテーション未更新 |
| Managed Identity | プラットフォーム管理の身元 | リソースの作り直し(principalId 変更のみ) |
認証設計とは、依存設計の別名だ。何に依存するかが、同じフローの壊れやすさを決める。
判断が割れるケース——登れない基盤がある
Managed Identity が常に選べるわけではない。
Microsoft 公式ドキュメント(「Support for service principal owned flows」2025)によると、Power Automate Cloud Flow のサードパーティコネクタは Managed Identity に非対応であり、SharePoint / Outlook / Teams コネクタは委任ユーザーコンテキストが設計上必須となっている。Power Platform の Managed Identity は 2026 年時点では Dataverse プラグイン(Dataverse はローコードアプリのデータ基盤)に限定されており、カスタムコネクタへの対応はプレビュー段階だ。
| 実行基盤 | Managed Identity | 補足 |
|---|---|---|
| Power Automate(標準コネクタ) | 不可 | ユーザー委任接続が必須(Microsoft 公式) |
| Power Automate(カスタムコネクタ) | プレビュー段階(2026) | 一般提供前 |
| Dataverse プラグイン | 対応(GA) | Microsoft 公式 |
| Azure Functions / App Service | 対応 | Microsoft 公式 |
| Logic Apps Standard | 対応 | HTTP アクション含む |
委任が「やむを得ない選択」になる基盤では、はしごを登る以前に別の対策が要る。サービスアカウント専用ユーザーの管理と接続オーナーの引き継ぎ手順の明文化が次善の設計になる。
Logic Apps や Azure Functions を実行基盤に選べる場面では、はしごの最上段が選択肢に入る。
唯一の弱点と IaC 動的参照による解消
Managed Identity を採用したときに残る弱点は一つだ。リソースを作り直すと Managed Identity の principalId(プラットフォームが発行する身元 ID)が変わり、付与していた RBAC(Azure Role-Based Access Control:ロールベースのアクセス制御)ロール割り当てを貼り直す必要が生じる。
この弱点は Bicep(Azure リソースをコードで宣言するテンプレート言語。Infrastructure as Code の一形態)の動的参照で解消できる。
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2025-01-31-preview' = {
name: managedIdentityName
location: location
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
// guid() でロール割り当て名を決定論的に生成(べき等性の保証)
name: guid(resourceGroup().id, managedIdentity.id, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: managedIdentity.properties.principalId // 動的参照(ハードコード不要)
principalType: 'ServicePrincipal' // 必須:省略すると断続的エラーが発生する
}
}
principalId をハードコードせず managedIdentity.properties.principalId で動的参照することで、リソースを作り直しても ID を人が打ち込まずに済む。guid() 関数でロール割り当て名を決定論的に生成することで、何度デプロイしても同じ状態を再現できる(べき等性)。
principalType: 'ServicePrincipal' の明示は必須。 省略すると断続的なデプロイエラーが発生し、原因が追いにくい障害になる(Microsoft Learn「Use Bicep to create Azure RBAC resources」2025 に明記)。
出典:Microsoft Learn「Use Bicep to create Azure RBAC resources」(2025)
設計前に把握しておく限界
Managed Identity を採用しても解消しない問題が複数ある。
権限反映の待ち時間(Microsoft Learn「Troubleshoot Azure RBAC」/ Managed identities FAQ、2025 より):
| 操作 | 最大待機時間 | 備考 |
|---|---|---|
| Azure RBAC 直接ロール割り当て | 最大 30 分 | 通常は数秒〜数分 |
| グループ経由ロール割り当て | 数時間(several hours) | 公式に明記 |
| Managed Identity トークンキャッシュ | 約 24 時間 | 強制リフレッシュ不可 |
デプロイ直後のテストで権限エラーが出るのは、この待ち時間が原因のことが多い。特にトークンキャッシュの 24 時間は、障害対応時に調査の方向を誤りやすい。これは「SLA ではなく上限の目安」として扱う。
コネクタ制約:上述のとおり、Power Automate の標準コネクタは現時点で Managed Identity に対応していない。委任でしか繋がらない接続先には、別の設計で補う必要がある。
越境不可:現時点の仕様上、Managed Identity が有効なのはテナント内(または仮想ネットワーク内)のリソースに限られる。テナント外のサービスとの接続には API キー等が引き続き必要であり、その管理には Key Vault(クラウド上での秘密情報の安全な保管サービス)を使う。
最小権限は別途設計が必要:Managed Identity を採用しても、付与するロールの範囲を絞る設計は別途行う。身元の管理と権限の最小化は別問題だ。
テンプレートを手元で確かめる
上記の Bicep テンプレートを自分の手で動かすなら、Azure 無料アカウントで Logic Apps Standard の環境を立てて試せる。RBAC ロール割り当てを実際にデプロイし、反映待ち時間を体感してから本番設計に持ち込む順序が最短ルートだ。Power Automate の実行基盤であれば M365 Developer Program(月額無料)が Power Platform フル環境を提供している。
まとめ
「楽に設定できる」認証方式は「壊れやすい」認証方式でもある。Managed Identity を選べる基盤では最上段を選ぶ、選べない基盤では委任接続を前提に別の設計で補う——この二段構えが、2026 年時点での現実的な認証設計の判断だ。
次の一歩
- 実行基盤が Logic Apps / Azure Functions かを確認する(Power Automate の標準コネクタは現時点で Managed Identity 非対応)
- Managed Identity を選べる場合は上記 Bicep テンプレートを出発点に設定する。
principalType: 'ServicePrincipal'の明示を忘れない - 委任接続が避けられない場合は、接続オーナーの引き継ぎ手順を今のうちに文書化する
関連記事:実行基盤別の鍵なし適合度——許す側と名乗る側の設計 / DB 接続のパスワード共有をやめる——Managed ID 移行の 4 段階 / 認可設計:環境とグループの 3 層で権限をアプリの外に出す