PowerShell 用のマイクロソフト グラフ SDK で認証用の証明書を使用する
インタラクティブセッションから離れる
のような記事では Azure AD アカウントのライセンスの更新 PowerShell 用のマイクロソフト グラフ SDK を使用して Microsoft 365 データにアクセスする場合は、対話型セッションで発行されたコマンドを使用しました。私が指摘しているように この記事この方法は、Graph SDK コマンドレットの動作を調べるだけでなく、プログラマや管理者が理解する重要なポイントも持つ場合に適しています。最も深刻な問題は、時間の経過とともに収集された同意が SDK に使用されるサービス プリンシパルが過剰な許可を得ることができることを意味するアクセス許可の発生です。解決策は、Azure AD に登録された個別のアプリを、ジョブを完了するのに十分なアクセス許可の同意を得て使用することです。これは管理の課題を生み出しますが、はるかに安全です。
登録されたアプリを使用するパスに沿って進む場合は、委任されたアクセスではなく、アプリのみの認証を使用できます。アプリのみの認証とは、アプリが資格情報として X.509 証明書を使用することを意味します。証明書は、(テスト目的で) 自己署名するか、または証明機関によって発行されます。マイクロソフトのドキュメント PowerShell 用のマイクロソフト グラフ SDK のアプリのみの認証を使用する には、アプリのみの認証用に Azure AD に登録されているアプリを構成する手順が含まれています。この記事では、手順を使用した経験について説明します。
証明書の取得
X.509 証明書が使用されるのを待っているのに、PowerShell で簡単に作成できる証明書はありません。このコード例では、次のコードを実行します。 新しい自己署名証明書 コマンドを実行するワークステーション上の現在のユーザーのローカル証明書ストアに格納された新しい証明書を作成するには、次のコマンドを使用します。
$Cert = 新しい自己署名証明書 -DnsName office365itpros.onmicrosoft,com -Cert:CurrentUserMy" – フレンドリー名 “マイクロソフトグラフSDK" – 件名 “マイクロソフトグラフ SDK 用テスト証明書"
取得子アイテム “証明書:現在のユーザーMy$($Cert.拇印)"
をクリックします。
拇印の件名
———- ——-
FC92991B21219F178AFB37C12DF231B6AFC3D790 CN=office365itpros.onmicrosoft
$証明 書 = 新機能–自己署名証明書 –Dns名 オフィス365itpros.マイクロソフト,com –サートストアの場所 “証明書:現在のユーザーマイ" –フレンドリー名 「グラフSDK」 –件名 “マイクロソフト グラフ SDK のテスト証明書" 取得–チャイルドアイテム “証明書:現在のユーザーMy$($Cert.拇印)" パス: マイクロソフト.パワーシェル.安全証書::現在のユーザー私の 拇印 件名 ————— ———– FC92991B21219F178AFB37C12DF231B6AFC3D790 CN=オフィス365itpros.マイクロソフト |
ローカル マシンの証明書ストアに証明書を作成する場合は、 証明書:ローカルマシンマイ を店舗の場所として指定します。管理者として PowerShell を実行する場合のみ、ローカル コンピューター ストアに新しい証明書を作成できます。テスト目的で、使用する証明書をストアに保存しても問題があります。運用環境に何かを入れる時期になると、コードが実行されるコンピューターに異なる証明書をインストールする必要があります。
証明書を作成したら、.cerファイルにエクスポートします。私がやったことは次のとおりです。
取得子アイテム “証明書:現在のユーザーMy$($Cert.拇印)"|証明書のエクスポート -ファイルパス C:tempマイクロソフトグラフSDK.cer
ディレクトリ: C:temp
モードラストライトタイム長さ名
—- ————- —— —-
-a—- 06/10/2021 17:01 861 マイクロソフトグラフSDK.cer
取得–チャイルドアイテム “証明書:現在のユーザーMy$($Cert.拇印)" | 輸出–証書 –ファイルパス C:一時グラフSDK.cer ディレクトリ: C:一時 モード ラストライトタイム 長さ 名前 —— ——————– ——— —— –ある—— 06/10/2021 17:01 861 グラフSDK.cer |
証明書をアプリケーションに接続する
Azure AD に登録されているアプリは、一連の Graph アクセス許可の同意を保持するコンテナーとして機能します。アクセス許可を使用すると、Graph クエリを使用してアプリがデータにアクセスできるようになります。スクリプトがアプリ専用認証を使用して接続する場合、対話型パスワードやアプリ シークレットなどの別のメカニズムではなく、アプリに認識されている証明書の拇印を渡すことによって認証されます。
これを可能にするには、次を使用して作成した証明書ファイルをロードする必要があります。 輸出証明書 コマンドレットをアプリに追加します。これは、アプリのプロパティの証明書とシークレットのセクションに移動し、アップロード証明書オプションを選択することによって行われます(図 1)。

アプリが Graph クエリで使用するアクセス許可を保持していることを忘れないでください、必要なグラフのアクセス許可をアプリに追加する必要があります。正確なアクセス許可は、アプリがアクセスするデータによって異なります。対話型セッションでコードを実行して、適切なアクセス許可セットを把握し、アプリに追加してテストできます。図 2 では、次の範囲の 5 つのアプリケーションアクセス許可を追加しました 監査ログ.読み取り.すべて (ユーザーのサインイン データを読み取るために必要) ユーザー.読み取り.すべて (ユーザー アカウントに関する情報を読むために必要)。

委任された ユーザー.読み取り アクセス許可が削除されます。これは、必要としないデフォルトのアクセス許可です。
マイクロソフトグラフへの接続
グラフに接続するには、3 つの情報が必要です。 コネクト・Mgグラフ コマンドレット:
- テナント識別子。これをアプリのプロパティからコピーできます。
- アプリ識別子。このことは、アプリのプロパティで使用できます。
- 証明書の拇印。これは証明書のプロパティとして使用できます (上記の例を参照)。
この情報を使用して、次のようなコマンドを実行できます (テナント識別子、アプリ識別子、および証明書の拇印の値をテナントに合わせて置き換えることを忘れないでください)。
コネクトMgグラフ -テナントId “a562313f-14fc-43a2-9a7a-d2e27f4f3478" -AppId “d86b1929-b818-41 1b-834a-206385bf5347" -証明書サムプリント “FC92991B2119F178AFB37C12DF231B6AFC3D790"
マイクロソフトグラフへようこそ!
繋ぐ–Mgグラフ –テナントID “a562313f-14fc-43a2-9a7a-d2e27f4f3478" –アプリID “d86b1929-b818-411b-834a-206385bf5347" –証明書の拇印 「FC92991B21219F178AFB37C12DF231B6AFC3D790」 ようこそ 宛先 マイクロソフト グラフ! |
正しい設定で接続されていることを確認するには、 取得 -Mg コンテキスト コマンドレット。ここで確認する必要がある重要事項は、クライアント識別子、テナント識別子、拇印の入力設定に加えて、使用可能なアクセス許可 (スコープ) です。コンテキストスコープはレポートする必要があります 過程 代わりに 現在のユーザー (対話型ログイン)、アカウント名が表示されていない必要があります。
取得 -Mg コンテキスト
クライアントId : d86b1929-b818-411b-834a-206385bf547
テナントId : a562313f-14fc-43a2-9a7a-d2e27f4f3478
証明書サムプリント : FC92991B21219F178AFB37C12DF231B6AFC3D790
スコープ: {グループ.読み取り.すべて、メールボックス設定.読み取り、ユーザー.読み取り.すべて、組織.読み取り込み.All.}
認証タイプ : アプリケーションのみ
認証プロバイダーの種類 : クライアント資格プロバイダ
証明書名 :
アカウント:
アプリ名 : マイクロソフトグラフパワーシェルSDK証明書
コンテキストスコープ : プロセス
証書:
取得–Mg コンテキスト クライアント ID : d86b1929–b818–411b–834a–206385bf5347 テナントID : a562313f–14fc–43a2–9a7a–d2e27f4f3478 証明書の拇印 : FC92991B21219F178AFB37C12DF231B6AFC3D790 スコープ : {群.読む.すべての, メールボックスの設定.読む, 利用者.読む.すべての, 組織.読み取り書き込み.すべての...} 認証タイプ : アプリオン 認証プロバイダーの種類 : クライアント資格プロバイダ 証明書名 : アカウント : アプリ名 : マイクロソフト グラフ パワーシェル SDK 証明 書 コンテキストスコープ : 過程 証書 : |
何かが正しく見えない場合は、 切断- MgGraph セッションを終了し、戻ってアプリの設定を確認し (特に、必要なすべてのアクセス許可に同意が与えられていることを確認してください)、もう一度やり直してください。
コードの実行
適切なアクセス許可で正常に接続したら、コードを実行できます。通常どおり、対話型プロンプトは機能しませんので、対話式セッション用に作成されたコードをバックグラウンドジョブで動作させるためにいくつかの調整が必要になる場合があります。その後、次のような運用の詳細を把握する必要があります。
- 認証に使用する X.509 証明書と、適切な場所にインストールする方法
- ジョブのバックグラウンドとしてスクリプトを提出する方法。
- 出力を処理します (たとえば、スクリプトの結果をファイルに電子メールで送信する)。
そのすべては別の日の仕事です。
ディスカッション
コメント一覧
まだ、コメントがありません