アプリ権限・資格情報の棚卸し

アプリの権限・資格情報の棚卸し ― 特権昇格と突然の失効を防ぐ

Microsoft Entra ID に登録された自動化アプリ・API 連携アプリには、強力な Microsoft Graph 権限と、期限付きのクライアントシークレットが紐づいています。放置された「権限を配れる権限」は特権昇格の踏み台に、失効したシークレットは業務停止の引き金になります。読み取り専用の権限だけで始められる棚卸しの進め方と、再発させない仕組みづくりを解説します。

なぜ「アプリの棚卸し」が必要か

リスク 1

特権昇格の踏み台

自動化アプリに付与された Graph 権限のうち、AppRoleAssignment.ReadWrite.All のような「権限を配れる権限」を持つアプリは、自身や他のアプリ・ユーザーに追加権限を付与でき、テナント全体への到達経路を作られてしまう恐れがあります。危険なのはデータの読み取りより「権限を配布できる能力」です。

リスク 2

突然のシークレット失効

クライアントシークレットの期限が切れた瞬間、そのアプリを使うバッチ・API 連携・自動化は認証エラー(AADSTS7000222)で一斉に停止します。標準の通知メールは Microsoft Entra Workload ID ライセンスが前提で、該当ロールの保持者がいなければ送信されず、失効が「事故」として繰り返されがちです。

共通する解決アプローチ: どちらも、読み取り専用スコープ Application.Read.All の Microsoft Graph PowerShell だけで現状を一覧化できます。特別な特権ロールがなくても「まず見える化」から始められるのがポイントです。

危険な Graph アプリ権限の4分類

棚卸しで優先的にチェックすべき権限は、次の4つのカテゴリに整理できます。

分類代表的な権限何ができてしまうか
① 権限を配れるAppRoleAssignment.ReadWrite.All
EntitlementManagement.ReadWrite.All
自身・他のアプリ・任意のユーザーに追加権限を付与でき、特権昇格の起点になり得る
② ロールを操作できるRoleManagement.ReadWrite.Directoryディレクトリロールの割り当てを操作できる
③ 資格情報・なりすましApplication.ReadWrite.All
(範囲を絞るなら Application.ReadWrite.OwnedBy
他アプリにシークレットを追加するなど、なりすましの経路になり得る
④ 広域ディレクトリDirectory.ReadWrite.All
Directory.Read.All
ディレクトリ全体の広範な読み書き・読み取り

棚卸しの進め方

権限とシークレット、どちらの棚卸しも Microsoft Graph PowerShell の読み取り専用スコープで実施できます。

1

現状の一覧化(読み取り専用)

Application.Read.All スコープで、Microsoft Graph のサービスプリンシパルへのアプリロール割り当てを走査して危険権限を持つアプリを抽出。あわせてテナント内全アプリのシークレット・証明書の有効期限を一覧化します。

2

優先度付け

権限は上記4分類に該当するものを重点的に確認し、資格情報は「期限の近さ」「業務影響」「期限の長さ」「シークレットの本数」の観点で整理して、対応の優先順位を付けます。

3

是正

不要権限の削除・広すぎる権限の縮小(例:Application.ReadWrite.AllApplication.ReadWrite.OwnedBy)、期限が近いシークレットの計画的な更新・整理を進めます。

人手レビューのライン: Microsoft Graph/Azure AD Graph のアプリケーション権限は、Application Administrator(や Cloud Application Administrator)では承認できず、Privileged Role Administrator など上位の管理者による承認が必要です。Entra ID のこの仕様上の関門を「必ず人がレビューするライン」として運用に組み込むのが有効です。

再発させない仕組みづくり

「既存分は棚卸しで是正、新規分はポリシーで作らせない」という役割分担で、事故と危険権限の再発を防ぎます。

シークレットレス

マネージド ID への移行

Azure 上で動く処理は、シークレット管理そのものが不要なマネージド ID へ移行することで、失効事故の根本原因を取り除けます。

シークレットレス

フェデレーション資格情報

Azure 外(GitHub Actions など)からのアクセスは、ワークロード ID フェデレーションを利用することで長期シークレットの保管を避けられます。

予防

アプリケーション管理ポリシー

新規のアプリ登録に対しては、アプリケーション管理ポリシーで長すぎる有効期限のシークレットを作らせないよう制限をかけられます。

統制

付与ルールの明文化

危険権限の申請時は上位管理者の承認を必須とする運用ルールを整備し、「見つけて、増やさない」状態を維持します。

Azure の必須MFAで止まる自動化 ― サービスアカウントの移行

Microsoft は Azure アクセスの多要素認証(MFA)を段階的に必須化しています。Phase 1(2024年10月〜)は Azure ポータル等の管理UI、Phase 2(2025年10月1日〜)は Azure CLI・PowerShell・IaC ツール・REST API の書き込み操作が対象。延期の最終期限(2026年7月1日)も過ぎ、現在はすべてのテナントで有効です。

止まるもの

ユーザーIDベースの自動化

ID・パスワードでのサインイン(ROPC:az login -u/-p 等)は失敗し、ユーザーIDのセッションでも書き込み操作時に MFA チャレンジが返り、無人実行では応答できず失敗します。

止まらないもの

ワークロードID

サービスプリンシパル・マネージド ID は必須MFAの対象外です。「ユーザーIDで自動化しない」を原則に、ワークロードIDへの移行が対応の軸になります。

注意

緊急アクセス用も例外ではない

break-glass アカウントも、条件付きアクセスから除外していてもシステム強制側で MFA が要求されます。FIDO2 パスキーや証明書ベース認証で要件を満たす構成にします。

1

棚卸し

「ユーザーIDで動いている自動化」を洗い出します。サインインログから ROPC フローを使うアプリを特定し、「誰のIDで、どのスクリプトが、何の操作をしているか」をリスト化します。

2

影響確認

Azure Policy の監査モードで MFA 強制の影響を事前に把握できます。条件付きアクセスが無い環境でも利用可能です。

3

移行

Azure 上の処理はマネージド ID へ、Azure 外の処理はサービスプリンシパル(可能ならクライアントシークレットではなくフェデレーション資格情報や証明書)へ移行します。

あわせて検討: ユーザー型サービスアカウントに掛けていた条件付きアクセス制御は、ワークロードID向け条件付きアクセス(Workload Identities Premium ライセンスが必要)への置き換えを検討します。不要になったユーザーライセンスを回収してワークロードID ライセンスへ振り替える整理も有効です。

継続的な統制はアクセスレビューと組み合わせて

棚卸しは一度やって終わりではなく、定期的に回すことで効果を発揮します。ユーザーやゲストのアクセス権については、Microsoft Entra ID Governance のアクセスレビューを使うことで、定期棚卸しの通知・実施・結果適用までを仕組み化できます。アプリ権限・資格情報の棚卸しと組み合わせることで、テナント全体の「置き去りにされた権限」を継続的に統制できます。

参考記事(QES ブログ)

本ページは当社エンジニアによる以下の解説記事をまとめたものです。棚卸しの具体的な手順・コマンドは各記事をご覧ください。

関連トピック

← Entra ID Governance トップへ戻る

ID ガバナンス・棚卸しのご相談は QUICK E-Solutions へ

Microsoft Entra ID を中心とした権限管理・ID 統制の設計から運用定着まで、経験豊富なエンジニアがご支援します。

相談する →