Microsoft 365テナントでサービスプリンシパルの利用状況を分析する手順
By Mirko Peters · · Updated
Microsoft Graphとサインインアクティビティを使って、サービスプリンシパルの利用状況を確認します。必要なアクセス許可、アプリ ID、監視、アクセス管理について解説します。
Automatically translated with AI from the original post. Read the English original
サービスプリンシパル分析を使ってサービスプリンシパルの利用状況を分析することは、Microsoft 365テナントを保護するうえで極めて重要です。サービスプリンシパルを監視することで、シャドウITや不適切なセキュリティ構成などの潜在的なリスクを特定できます。特に注目すべきポイントは次のとおりです。
一貫性のない多要素認証(MFA)
監視されていない外部共有
サービスプリンシパル分析によるサインインアクティビティの把握は、通常と異なるパターンを検出し、アクセスを効果的に管理するうえで役立ちます。この予防的なアプローチは、リスクを減らすだけでなく、規制要件への準拠を確保し、環境をより安全で管理しやすいものにします。
重要なポイント
サービスプリンシパルのサインインアクティビティを定期的に監視し、通常と異なるパターンを検出してセキュリティを強化してください。
サービスプリンシパルの利用状況を効果的に分析するには、AuditLog.Read.All などの必要なアクセス許可があることを確認してください。
各サービスプリンシパルには必要最小限のアクセス許可だけを付与し、最小特権の原則を実装してください。
AdminDroid などのツールを使って監視プロセスを自動化すると、管理が簡素化され、セキュリティも向上します。
各サービスプリンシパルの目的とアクセス許可を文書化し、透明性と準拠性を保ってください。
- サービスプリンシパルは、Microsoft 365テナント内のアプリ ID を表します: アプリケーションオブジェクトはグローバルな定義ですが、サービスプリンシパルは認証、ロールの割り当て、アクセス制御に使われるローカルな ID です。そのため、Microsoft 365テナントでサービスプリンシパルの利用状況を監視することは、どのユーザーやアプリがリソースにアクセスできるかを把握するうえで欠かせません。
- 1つのアプリケーションに複数のサービスプリンシパルが対応する場合があります: 1つのアプリケーションオブジェクトに対して、複数のテナントにそれぞれ異なるサービスプリンシパルが存在することがあります。それぞれが異なる資格情報、同意の付与、ロールの割り当てを持つため、同じアプリのコードでも、Microsoft 365テナントによって動作が異なる場合があります。
- 資格情報の種類によって攻撃対象領域が変わります: サービスプリンシパルは、クライアントシークレット、証明書、またはフェデレーテッド ID を使用できます。長期間有効なシークレットは、Microsoft 365テナントの攻撃対象領域を広げます。一方、証明書ベースや フェデレーテッド認証は、正しく構成すればリスクを低減できます。
- 委任されたアクセス許可とアプリケーションのアクセス許可では、リスクが異なります: サービスプリンシパルに付与されたアプリ専用のアクセス許可は、ユーザーに関係なくアクセスを可能にするため、委任されたアクセス許可より強力になる場合があります。アプリのアクセス許可の設定ミスは、Microsoft 365テナントで過剰な権限を持つサービスプリンシパルが生まれる一般的な原因です。
- 同意と管理者の同意は、範囲によって異なります: ユーザーは特定の委任されたアクセス許可に対して、アプリへの同意を与えることができます。しかし、リスクの高いアプリのアクセス許可には管理者の同意が必要です。同意イベントを追跡することで、Microsoft 365テナントにおける予期しないサービスプリンシパルの利用を検出できます。
- マネージド ID はライフサイクルを簡素化しますが、テナントに紐づきます: Azure AD マネージド ID(システム割り当てまたはユーザー割り当て)は、リソースのサービスプリンシパルを自動的に作成するため、Microsoft 365テナントでの資格情報管理が容易になります。ただし、テナント間で移行することはできないため、リソースを移動する際には再構成が必要です。
- 条件付きアクセスとエンタイトルメント管理はアプリにも適用されます: 条件付きアクセス ポリシーを適用し、エンタイトルメント管理を使用して Microsoft 365 テナント内のサービス プリンシパルの使用を統制できます。ただし、不正なアプリ アクセスや横方向の移動を防ぐため、アプリのコンテキストに対してポリシーを明示的に評価する必要があります。
サービス プリンシパル分析の前提条件
画像の出典: unsplashサービス プリンシパルの使用状況の分析を始める前に、適切なアクセス許可とツールを用意してください。この準備により、徹底した分析を行い、サービス プリンシパルを効果的に管理できるようになります。
必要なアクセス許可
Microsoft Entra と Microsoft 365 でサービス プリンシパルのアクティビティを分析するには、特定のアクセス許可が必要です。次の表に、必要なアクセス許可のスコープを示します。
アクセス許可のスコープ | 説明 |
|---|---|
サービス プリンシパルのアクティビティを分析するために必要です。 |
適切なアクセス許可がないと、エラーが発生する可能性があります。たとえば、"操作を完了するための十分な特権がありません" というメッセージが表示された場合、必要なアクセス権がないことを意味します。この制約により、サービス プリンシパルの管理と分析が効果的に行えなくなる可能性があります。
ツールとリソース
適切なツールを使うと、分析のプロセスを効率化できます。Microsoft 365 環境でサービス プリンシパルを分析するための効果的なツールを以下に示します。
ツール | 説明 |
|---|---|
PowerShell スクリプト | Microsoft 365 環境内のアプリとサービス プリンシパルの確認を自動化します。 |
AdminDroid Entra ID 監査ツール | サービス プリンシパルのサインイン アクティビティを監視し、使用状況とアクセスの傾向に関するレポートを提供します。 |
PowerShell を使い始めるには、次の手順に従ってください。
次のコマンドを使用して Microsoft Graph PowerShell に接続します:
Connect-MgGraph -Scopes "AuditLog.Read.All"次のコマンドを実行して、サービス プリンシパルのサインインを監査します:
Get-MgBetaAuditLogSignIn -Filter "signInEventTypes/any(t:t eq 'servicePrincipal')" -All | Select-Object CreatedDateTime, Id, ServicePrincipalId, ServicePrincipalName, ResourceDisplayName, ResourceId, @{Name = "Status"; Expression = { if ($_.Status.ErrorCode -eq 0) { "Success" } else { "Failed" } }} | Format-Table
適切なアクセス許可とツールを確認することで、サービス プリンシパルの分析を確実に成功させる準備が整います。
Microsoft Entra でのサービス プリンシパルの作成
Microsoft Entra でサービス プリンシパルを作成するには、アプリケーションを登録します。この処理により、アプリケーションは認証を行い、リソースに安全にアクセスできるようになります。アプリケーションを登録する手順は次のとおりです。
アプリケーションの登録
Microsoft Entra でアプリケーションを登録するには、次の手順に従ってください。
Microsoft Entra 管理センターにサインインします。
アプリケーション に移動し、新規登録 を選択します。
アプリケーション名やリダイレクト URI など、必要な情報を入力します。
用途に応じて、適切なアカウントの種類を選択します。
登録 をクリックして、処理を完了します。
登録後、サービス プリンシパルを作成できます。このサービス プリンシパルは、アプリケーションが他のサービスとやり取りする際の ID として機能します。
Microsoft Entra でサービス プリンシパルを作成するには、いくつかの方法があります。主な方法は次のとおりです。
証明機関が発行した信頼された証明書をアップロードする。
テスト目的で、自己署名証明書を作成してアップロードする。
新しいクライアント シークレットを作成する。
各方法にはそれぞれ用途があるため、アプリケーションの要件に最も適したものを選択してください。
開始者の確認
サービス プリンシパルの作成を開始したユーザーを特定することは、セキュリティと監査の観点から重要です。この情報は、次の手順で確認できます。
Microsoft Entra 管理センターにサインインします。
監視と正常性 に移動し、監査ログ を選択します。
カテゴリ を ApplicationManagement に設定し、フィルターを適用します。
アクティビティ を サービス プリンシパルの追加 にフィルターし、フィルターを適用します。
イベントを選択し、Additional details を展開します。ServicePrincipalProvisioningType、SubscribedSkus、AppOwnerOrganizationId などのプロパティを確認してください。
開始者を把握することで、誰がなぜサービス プリンシパルを作成しているのかを理解できます。この情報は、組織内のセキュリティとコンプライアンスを維持するうえで欠かせません。
監査ログで確認できる属性の概要は次のとおりです。
属性 | 説明 |
|---|---|
日付と時刻 | アクティビティのタイムスタンプ |
サービス | アクティビティに関係するサービス |
カテゴリ | アクティビティのカテゴリ |
アクティビティ名 | 実行された具体的な操作 |
状態 | 操作が成功したか失敗したかを示します |
ターゲット | 操作の対象 |
開始者 | 操作を開始したユーザーまたはアカウント |
サービス プリンシパルの開始者を把握することで、セキュリティ体制を強化し、承認されたユーザーだけがサービス プリンシパルを作成できるようにできます。
Microsoft Graph を使ったサインイン アクティビティの確認
Microsoft Graph API へのアクセス
サービス プリンシパルのサインイン ログにアクセスするには、Microsoft Graph API を使用できます。必要なデータを取得するには、次の手順に従ってください。
Microsoft Graph API を使用して、サービス プリンシパルのサインイン アクティビティをレポートします。
Get-MgServicePrincipalコマンドを実行して、テナント内のサービス プリンシパルを取得します。アプリケーション ID と表示名のハッシュ テーブルを作成します。サインイン レコードにはアプリ名が含まれないため、この手順は重要です。
Get-MgBetaReportServicePrincipalSignInActivityを実行して、最後のサインイン日が 1 年以上前のサービス プリンシパルのサインイン アクティビティを検索します。サービス プリンシパルに関するレポートを作成し、データを CSV ファイルにエクスポートします。
アプリを所有するテナントや、サービス プリンシパルの総数などの統計を生成します。
これらの手順に従うことで、サービス プリンシパルのサインイン ログに効果的にアクセスして分析できます。
サインイン ログの分析
サインイン アクティビティの監視は、不正アクセスの試みを特定するうえで欠かせません。成功したサインインと失敗したサインインの両方を観察することで、セキュリティの脅威を示す可能性のある異常なパターンを見つけられます。このような継続的な監視により、侵害された資格情報に関連する潜在的なリスクに対処でき、Microsoft 365 テナント全体のセキュリティを高められます。
サービス プリンシパルのサインイン ログで検出される可能性のある一般的な異常は次のとおりです。
休眠中または放置されていたアプリケーションが再び使用されるなど、通常とは異なるアプリケーションの使用状況。
Azure AD に追加された予期しない信頼関係。
アクセス許可の変更を含む、サービス プリンシパルの資格情報の変更。
サインイン ログを効果的に分析するには、次の戦略を検討してください。
Microsoft Entra 管理センターで、過去 24 時間のサービス プリンシパルのサインインを表示し、サインイン アクティビティを監視します。
サインイン ログの異常なパターンを分析して、リスクの高いサービス プリンシパルを特定します。
Microsoft Entra と PowerShell などのツールを使用して、サインイン ログを詳細に分析します。
これらの戦略を実施することで、疑わしいサインイン アクティビティを検出し、適切な対応を取って環境を保護する能力を高めることができます。
サービス プリンシパルを効果的に管理する
画像提供元: pexelsベスト マネジメント プラクティス
サービス プリンシパルを効果的に管理するには、いくつかのベスト プラクティスに従う必要があります。これらの戦略を実装すると、テナント内のセキュリティが強化され、運用も効率化されます。
最小特権の原則: 各サービス プリンシパルには、必要な最小限のアクセス許可のみを付与してください。これにより、サービス プリンシパルが侵害された場合の被害を抑えられます。
資格情報の定期的なローテーション: 資格情報は定期的にローテーションし、可能な限りこの作業を自動化してください。古い資格情報や漏えいした資格情報を使い続けるリスクを減らせます。
アクティビティの監視: サービス プリンシパルのアクティビティに不審な動きがないか、継続的に確認してください。不正アクセスの試みを早期に検出できます。
強力な認証: 多要素認証(MFA)などの強力な認証方式を使用してください。セキュリティの層を一つ追加できます。
資格情報の安全な保管: シークレット管理ソリューションを使用して、サービス プリンシパルの資格情報を安全に保管および管理してください。コードや構成ファイルに資格情報を保存することは避けてください。
ドキュメント化: 各サービス プリンシパルの目的とアクセス許可を文書化してください。テナント内でそれぞれの役割を把握するのに役立ちます。
ガバナンス ポリシー: サービス プリンシパルの管理に関する明確なガバナンス ポリシーを策定してください。アクセス許可を定期的にレビューおよび監査し、コンプライアンスを確保してください。
監視の自動化
サービス プリンシパルの監視を自動化すると、セキュリティ態勢を大きく強化できます。検討すべきツールと方法は次のとおりです。
AdminDroid: このツールには、サインイン アクティビティの監視機能があります。サービス プリンシパルのサインイン パターンを追跡し、使用状況とアクセス傾向に関する詳細なレポートを提供します。
サービス プリンシパルの変更レポート: AdminDroid には、サービス プリンシパルの変更を監視するレポートもあります。追加、更新、削除に加え、時刻、アプリケーション名、ステータス、場所などのサインイン アクティビティも確認できます。
監視を自動化すると、次のようなメリットがあります。
メリット | 説明 |
|---|---|
セキュリティの強化 | 最小特権の原則に従い、潜在的なセキュリティ侵害の影響を抑えます。 |
資格情報管理の簡素化 | ハードコードされた資格情報や安全でない方法で保存された資格情報のリスクを減らし、全体的なセキュリティを高めます。 |
資格情報の定期的なローテーション | 資格情報のローテーションを自動化し、人為的ミスを最小限に抑えるとともに、資格情報を常に最新の状態に保ちます。 |
包括的な監査 | すべてのアクセス試行を記録し、不正なアクティビティの検出とインシデント対応の改善に役立ちます。 |
これらの方法とツールを実装することで、Microsoft 365 テナント内のサービス プリンシパルを効果的に管理し、安全な環境を維持できます。
まとめると、サービス プリンシパルの使用状況を分析することは、Microsoft 365 テナントを保護するうえで不可欠です。サインイン アクティビティを定期的に監視し、アクセス許可を管理し、ベスト プラクティスに従う必要があります。サービス プリンシパルの管理を強化するための重要なポイントは次のとおりです。
説明 | |
|---|---|
サービス プリンシパルの使用 | セキュリティを向上させるために、サービス プリンシパルを使用することの重要性を強調します。 |
セットアップ手順 | |
アクセス許可 | サービス プリンシパルを作成および管理するために必要なアクセス許可です。 |
シークレットの管理 | Azure Key Vault を含め、クライアント シークレットを安全に管理するためのベスト プラクティスです。 |
これらの方法を実践することで、セキュリティ態勢を強化し、組織内でサービス プリンシパルを効果的に管理できます。
よくある質問
Microsoft 365 におけるサービス プリンシパルとは何ですか?
サービス プリンシパルは、アプリケーションがリソースに安全にアクセスするための ID として機能します。ユーザーの資格情報を必要とせずに、アプリケーションが認証を行えるようにします。
サービス プリンシパルのアクティビティを監視するにはどうすればよいですか?
Microsoft Graph API や AdminDroid などのツールを使用して、サービス プリンシパルのアクティビティを監視できます。これらのツールは、サインイン パターンと使用傾向に関する知見を提供します。
サービス プリンシパルの使用状況を分析することが重要なのはなぜですか?
サービス プリンシパルの使用状況を分析すると、セキュリティ リスクの特定、アクセス許可の管理、コンプライアンスの確保に役立ちます。組織全体のセキュリティ態勢の強化にもつながります。
サービス プリンシパルを分析するには、どのようなアクセス許可が必要ですか?
Microsoft Entra と Microsoft 365 でサービス プリンシパルのアクティビティを分析するには、AuditLog.Read.All アクセス許可が必要です。このアクセス許可があると、必要なログにアクセスできます。
サービス プリンシパルの監視を自動化するにはどうすればよいですか?
AdminDroid などのツールを使うと、監視を自動化できます。これらのツールでは、サインイン アクティビティやサービス プリンシパルの変更に関するレポートを生成できるため、管理作業を簡略化できます。
Microsoft Entra ID のアプリケーション オブジェクトとサービス プリンシパルの作成
サービス プリンシパルとは何ですか。また、Microsoft Entra ID のアプリケーション オブジェクトとはどのような関係がありますか?
サービス プリンシパルは、Microsoft Entra テナント内でアプリケーションやサービスを表すセキュリティ プリンシパルです。アプリケーション オブジェクト(グローバルな定義)に対応します。アプリケーションを登録または同意すると、テナント内にサービス プリンシパルがインスタンスとして作成されます。アプリケーション ID とクライアント ID が両者を結び付けており、サービス プリンシパルが作成されると、Microsoft Entra にはアプリケーション オブジェクトとサービス プリンシパル オブジェクトの両方が表示されます。
Microsoft 365 テナントでサービス プリンシパルを作成するにはどうすればよいですか?
Microsoft Entra 管理センターでアプリの登録を行うか、Azure CLI または Microsoft Graph PowerShell SDK を使用して作成できます。一般的な手順は、まずアプリケーション(アプリケーション オブジェクト)を作成し、次にホーム テナントまたは所有テナントにサービス プリンシパルを作成し、アクセス許可を割り当て、資格情報(クライアント シークレットまたは証明書)を生成するというものです。スクリプトで自動化する場合は、az ad sp create-for-rbac などの Azure CLI コマンド、または Microsoft Graph PowerShell SDK を使用してサービス プリンシパルを作成します。
サービス プリンシパルの詳細を確認し、そのサインイン アクティビティを分析するには、どこを見ればよいですか?
サービス プリンシパルの詳細は、Microsoft Entra 管理センターで確認できます。種類に応じて、エンタープライズ アプリケーションまたはアプリの登録に表示されます。サービス プリンシパルの名前、アプリケーション ID、テナント ID、割り当てられたロールなどのプロパティを確認できます。サインイン アクティビティを分析するには、Microsoft Entra の サインイン ログ を使用するか、Microsoft Graph 経由でサインイン レポートを照会します。これにより、認証イベント、サービス プリンシパルの作成イベント、サインイン テレメトリを確認できます。
アクセス ポリシーと認証の設定は、新しいサービス プリンシパルにどのような影響を与えますか?
アクセス ポリシーと認証の設定により、サービス プリンシパルがアクセスできるリソースと、認証の方法が決まります。アプリケーション オブジェクトとサービス プリンシパル オブジェクトは最小特権で構成し、リソース ロールを割り当てます。また、Microsoft Entra 管理センターで条件付きアクセスとアクセス ポリシーを利用します。認証方法(クライアント シークレット、証明書、マネージド ID)は、セキュリティ更新プログラムとベスト プラクティスに沿って選択し、リスクを低減します。
Microsoft のファースト パーティ アプリや Microsoft のサービスは、テナント内にサービス プリンシパルを作成できますか?
はい。Microsoft のファースト パーティ アプリや Microsoft のサービスは、テナントで使用される際に、Microsoft Entra ID 内にサービス プリンシパル オブジェクトを作成することがよくあります。これらは entra apps や microsoft first-party apps として表示される場合があります。一部の Microsoft サービスはオンボーディング時にサービス プリンシパルを自動的に作成します。これらは Microsoft Entra 管理センターで確認および制御でき、対応している場合はジャスト イン タイムの適格性を適用できます。
リスクを減らすために、Microsoft Entra でアクセス許可とプリンシパル オブジェクトを管理するにはどうすればよいですか?
サービス プリンシパルの作成イベントを監査し、サービス プリンシパル オブジェクトに付与されたアクセス許可を確認して、過剰な特権を削除します。適切な場合は、委任のアクセス許可ではなくアプリケーション アクセス許可を使用し、ロールの割り当てを活用します。条件付きアクセスとジャスト イン タイムのプロビジョニング(またはジャスト イン タイムの対象となるサービス プリンシパル)を実装し、資格情報を定期的にローテーションします。より具体的なセキュリティ ガイダンスやテクニカル サポートの手順については、Microsoft Learn やその他のリソースを参照してください。
サービス プリンシパルの確認と作成を自動化するには、どのようなツールを使用できますか(PowerShell、Azure CLI など)?
Microsoft Graph PowerShell SDK、Azure CLI、Microsoft Graph API を使うと、サービスプリンシパルの作成と確認を自動化できます。az ad sp create-for-rbac などのコマンドや、Microsoft Graph PowerShell SDK の同等のコマンドを使うと、サービスプリンシパルを作成し、クライアント ID、アプリケーション ID、テナント ID を出力できます。スクリプトで Microsoft Entra のサービスプリンシパル オブジェクトを列挙し、サインインやアクセス許可のデータを収集してレポートに活用することもできます。
クライアント アプリケーションによって作成されたサービスプリンシパルなのか、Microsoft アカウントによって作成されたものなのかは、どのように判断できますか?
Microsoft Entra 管理センターでサービスプリンシパルの詳細を確認するか、Microsoft Graph にクエリを実行して、アプリ所有者、発行元、作成元のアプリケーションの種類などのプロパティを確認します。クライアント アプリケーションによって作成されたサービスプリンシパルは、アプリケーション ID やクライアント ID を参照しており、多くの場合、作成したプリンシパルと作成日時が表示されます。Microsoft のサービスや Microsoft のファースト パーティ アプリ向けに作成された Microsoft サービスプリンシパルには、通常、発行元や Microsoft の既知の識別子が含まれています。
Office 365 for IT Pros とサービスプリンシパルのベスト プラクティスに関する追加のリソースやガイダンスはどこで確認できますか?
Microsoft Learn、Microsoft Entra 管理センターのドキュメント、Microsoft ID プラットフォームのガイド、そして Office 365 for IT Pros 向けの記事を活用してください。そのほかのリソースとして、Microsoft Graph のドキュメント、Azure CLI と Microsoft Graph PowerShell SDK のリファレンス、Microsoft が公開しているセキュリティ アップデートがあります。複雑なシナリオについては、テクニカル サポートに問い合わせるか、テナント内に作成したアプリケーションおよびサービスプリンシパル オブジェクトに関する Microsoft Learn のラボを参照してください。