M365Con 2027 – 無料オンラインカンファレンス · 11–22 Jan 2027 · 120 sessions→ m365con.net

2025-12-08

PowerShellでマネージドIDを使ってMicrosoft Graphに接続する

PowerShellでマネージドIDを使ってMicrosoft Graphに接続する
2025年になってもMSOnlineやAzureADモジュールを使ったPowerShellを書いていませんか?このエピソードでは、それらのレガシーなスタックがなぜ時代遅れなのか、そして純粋なRESTとMicrosoft Graphによる「APIファースト」のアプローチへどう移行するかを解説します。「トークン取得、ヘッダー設定、REST呼び出し」という基本パターン、3つの実践的な認証フロー(デバイスコード、証明書を使ったクライアント資格情報、マネージドID)、そしてほとんどのGraphスクリプトを壊す「トークンのaudience」に関する落とし穴を取り上げます。Linux、コンテナ、GitHub Actions、Azure Functions、Azure Automationのいずれでも、モジュールへの脆い依存なしに動作するクロスプラットフォームのGraph自動化を構築する方法を紹介します。さらに、このパターンをIntuneデバイスの整理、ID のオンボーディング、コンプライアンスのドリフト検出と修復といったエンタープライズシナリオに適用し、最小権限のGraph権限、堅牢なリトライロジック、ページネーションのヘルパー、Log Analyticsでの完全な監査証跡を実装します。AzureやIntune、Microsoft 365の管理者の方には必聴の内容です。

Microsoft 365 が業務の中心になるにつれ、管理タスクの自動化は欠かせなくなっています。PowerShell と Graph API を組み合わせると、効率が上がり、貴重な時間を節約できます。この強力な組み合わせにより、運用を効率化する堅牢な管理機能を利用できるようになります。

ただし、多くのユーザーは課題に直面します。たとえば、一部の重要な機能はドキュメント化されたエンドポイントがなく、自動化の取り組みを複雑にします。さらに、従来の API はサイレントな失敗を引き起こすことがあり、スクリプトの保守性を妨げます。ご安心ください。この投稿では、これらの複雑な概念を分かりやすく実行可能なステップに分解し、明確な解決策とともにプロセスを案内します。

重要なポイント

  • PowerShell を Graph API と統合して Microsoft 365 のタスクを自動化し、効率を高めます。
  • スムーズに実行するために、PowerShell 7 以降や最新の Microsoft Graph モジュールなどの前提条件を満たしていることを確認してください。
  • アクセス許可とスコープを理解し、最小権限の原則に従ってスクリプトが Microsoft 365 でアクセスできる範囲を制御します。
  • Azure AD にアプリを登録して、スクリプト用の安全な ID を作成し、Microsoft Graph への安全なアクセスを可能にします。
  • デバイスコードフローやマネージド ID フローなど、適切な認証フローを選択して、アクセストークンを効果的に保護します。
  • PowerShell で適切に構成された HTTP リクエストを作成し、Microsoft Graph API とやり取りしてデータを取得します。
  • API の エラーと上限に慎重に対処し、スクリプトがスムーズに実行され、中断を回避できるようにします。
  • 必要なプロパティのみを取得する選択的取得やリクエストのバッチ処理を使ってスクリプトを最適化し、パフォーマンスを向上させリソース消費を抑えます。

PowerShell + Graph API の前提条件

PowerShell + Graph API を使って Microsoft 365 のタスクの自動化を始める前に、システムと環境を適切に準備する必要があります。この準備により、スムーズな実行と Microsoft Graph リソースへの安全なアクセスが保証されます。

PowerShell モジュールのインストール

Microsoft Graph API と対話するには、適切な PowerShell モジュールをインストールする必要があります。Microsoft Graph PowerShell SDK には、この統合に必要なすべてのコマンドレットが含まれています。エラーを避けるために、システムが以下の最小要件を満たしていることを確認してください。

要件 説明
PowerShell のバージョン PowerShell バージョン 7 以降が必要です。
.NET Framework macOS では .NET Framework 4.7.2 以降が必要です。
PowerShellGet PowerShellGet を最新バージョンに更新してください。
実行ポリシー 実行ポリシーを RemoteSigned 以下の制限に設定してください。

Install-Module PowerShellGet -Force を実行して PowerShellGet を更新し、Set-ExecutionPolicy RemoteSigned で実行ポリシーを設定できます。その後、次のコマンドで Microsoft Graph モジュールをインストールします。

Install-Module Microsoft.Graph -Scope CurrentUser

このコマンドは最新の安定版モジュールをダウンロードし、Microsoft Graph エンドポイントを簡単に呼び出せるようにします。

Microsoft 365 環境のセットアップ

自動化には、Microsoft 365 環境を正しく構成することが重要です。以下の手順に従って開始してください。

  1. システムが要件を満たしていることを確認します。PowerShell 7.2 以降、.NET Framework 4.7.2 以降、最新の PowerShellGet モジュールです。
  2. 上記のとおり Microsoft Graph PowerShell モジュールをインストールします。
  3. モジュールをインポートし、必要なスコープで認証して Microsoft 365 テナントに接続します。例:
Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"

このコマンドはサインインを求め、ユーザーおよびディレクトリデータの読み取りと書き込みの権限をセッションに付与します。自動化の必要に応じてスコープを調整できます。

アクセス許可とスコープの理解

アクセス許可とスコープは、スクリプトが Microsoft 365 で何にアクセスまたは変更できるかを定義します。Microsoft Graph API は主に 2 種類のアクセス許可を使用します。

  • 委任されたアクセス許可: サインインしたユーザーとしてスクリプトを実行する場合に適用されます。ユーザーが所有またはアクセスできるデータへのアクセスに制限されます。
  • アプリケーションのアクセス許可: サインインしたユーザーがいなくても、アプリやスクリプトが組織全体のデータにアクセスできるようにします。

一般的なアクセス許可には、読み取り専用アクセス用の *.Read.All と、完全な読み取りおよび書き込み機能用の *.ReadWrite.All があります。たとえば、SecurityActions.Read.All はセキュリティアクションの表示を許可し、SecurityActions.ReadWrite.All は変更を許可します。

アプリケーションのアクセス許可には管理者の同意が必要です。セキュリティを確保するため、テナント管理者がこれらのアクセス許可を承認する必要があります。また、機密データにアクセスするには、Security Reader などの適切な Microsoft Entra ロールがユーザーに必要です。このロールベースのアクセスは、追加のセキュリティ層となります。

Microsoft Graph PowerShell SDK を使って接続する場合は、スクリプトに必要なスコープのみを指定してください。この方法は最小権限の原則に従い、セキュリティリスクを減らします。アプリに付与されたアクセス許可は、そのアプリのすべてのユーザーに適用されることに注意し、定期的に確認・管理してください。

アクセス許可を理解して慎重に構成することで、環境を保護しつつ、PowerShell + Graph API による強力な自動化を実現できます。

Azure AD におけるアプリの ID

新しいアプリの登録

PowerShell と Graph API で Microsoft 365 のタスクを自動化するには、まず Azure Active Directory (Azure AD) にアプリケーションを登録する必要があります。このアプリは、スクリプトが Microsoft Graph に安全にアクセスするために使用する ID として機能します。以下の手順に従ってアプリを登録してください。

  1. Azure portal を開き、Azure Active Directory > アプリの登録 > 新規登録 に移動します。
  2. 「My Graph App」など、わかりやすい名前をアプリに付けます。
  3. サポートされるアカウントの種類を選択します。
    • 単一テナント: 自分の Azure AD テナントのユーザーのみがサインインできます。
    • マルチテナント: 任意の Azure AD テナントのユーザーがサインインできます。
    • マルチテナントおよび個人用アカウント: Azure AD ユーザーと個人用 Microsoft アカウントの両方を含みます。

Apple Podcasts · Spotify · YouTube · YouTube Music

Use Managed Identity with PowerShell for Microsoft Graph (English)