ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Microsoft Graph Powershell SDK の Connect-MgGraph の認証キャッシュはいつまで保持されるのか? BingAI 3種・ChatGPT・Google Bardの回答を比較検証してみた

 

Microsoft Graph PowerShell SDKとは

Microsoft Graph APIPowershellから利用できるようにしたPowerShell モジュールです。Microsoft Graph API は、Azure AD ,Teams, Outlook 等の Microsoft 各サービスにアクセスし、データを取得できるAPIです。

Connect-MgGraph の認証情報キャッシュ

Microsoft Graph Powershell ではまずConnect-MgGraphで接続した後に、目的のコマンドを実行する形になります。Connec-MgGraph で接続すると、 C:\Users\[ユーザー名]\.graph フォルダに *cahce.bin3 というファイルで認証情報が保持されるようです。

Disconnect-MgGraph コマンドを実行すると、この認証情報キャッシュは削除されます。しかし、Disconnect-MgGraph を実行せずにPowershell を閉じてしまった場合、このファイルは削除されず残り、次回Connect-MgGraphを実行した際には、キャッシュの情報で認証されサインインを求められません。

 

認証情報キャッシュに有効期限は無いのか?

Microsoft Graph Powershell の Connect-MgGraph の認証キャッシュはいつまで保持されるのか?という疑問を持ったのですが、あちこちで調べても回答を見つけられることができませんでした。

 

 

Bing AIやChatGPTにきいてみると

困ったときは流行りのAIに質問です。

 

"より厳密"な Bing AI

 

"よりバランスよく" Bing AI

 

"より創造的"な Bing AI

 

ChatGPT (無課金なので3.5-turbo)

 

Google Bard

 

回答をまとめるとこんな感じです。

  • より厳密なBing AI
    • わからない
  • よりバランスよく Bing AI
    • 保持期限に制限はない
    • ※ただしソースとして示されたURLにはそのような記載なし
  • より創造的な Bing AI
    • 14日
    • ※ただしソースとして示されたURLにはそのような記載なし
  • ChatGPT(無課金)
    • セッションの間だけ保持。 -Persistパラメータでキャッシュされる
  • Google Bard
    • 14日間

5つのAIによる合議制といこうかと思いましたが……見事に回答はバラバラです。

まず -Persistパラメータなしで認証情報はキャッシュされているので、ChatGPTの答えは違うことがわかっています。次にバランスBingAIと創造的BingAIの回答は、一見もっともらしいですがソースとして示されたURLに該当する記述は一切ありませんでした。Bardの答えは簡潔すぎてもう少し情報が欲しいですね。

ひとまず回答が一致した創造的BingAIとGoogle Bardの回答「14日」を信じて検証を勧めます。

 

AIを信じて実際に試してみる

というわけで実際に試してみることにしました。

  1. 一度Connect-MgGraph でサインインして認証情報をキャッシュさせる
  2. PCを14日放置する
  3. 14日後に Connect-MgGraph で接続してみる

3.の段階で、キャッシュファイルが消えている or サインインが求められるのであれば、創造的なBingAIおよびGoogle Bardの回答は正しいと立証できます。

 

1.Disconnect-MgGraph を実行せずにPowerShell ウィンドウを閉じる

まずConnect-MgGraph でサインインします。

すると C:\Users\[ユーザー名]\.graph フォルダに *cahce.bin3 というファイルが作成されます。

 

2.PCを再起動してみる

14日放置する前に、WindowsUpdate等で再起動してしまう場合を想定して、再起動しても残っているか確認しました。再起動後もキャッシュファイルは残っていました。

Connect-MgGraph で接続すると、サインインは求められませんでした。

 

3.14日間17日間放置してみた後で再度Connect-MgGraphで接続

諸般の事情で予定より長く17日放置してみました。キャッシュファイルは2.の時点と変化ありません。

Connect-MgGraphを実行すると....サインインを求められることはありませんでした

キャッシュファイルは更新されています。

というわけで、回答が一致した独創的BingAIとGoogle Bardの回答の保持期間「14日」は誤りということが確認できました。

 

【結論】やはり認証情報キャッシュには有効期限はない

結果的に、"よりバランスよく"BingAIの回答である「保持期限はない」が残りました。

Microsoft learn の下記URLに「Disconnect-MgGraph を呼び出すまでサインインしたままになる」記述がありましたので、保持期限はないと解釈できます。

(Edgeで翻訳)

サインインすると、 を呼び出すまでサインインしたままになります。Microsoft Graph PowerShell によってアクセス トークンが自動的に更新され、Microsoft Graph PowerShell によってトークンが安全にキャッシュされるため、PowerShell セッション間でサインインが保持されます。Disconnect-MgGraph

 

learn.microsoft.com

 

さいごに

あえて遠回りしてAIの回答を信じて検証してみました。AIの回答は鵜呑みにするのではなくちゃんと検証することが大事ですね。

キャッシュされた認証情報自体は暗号化されているようですが、セキュリティ面のリスクや、次回使用する際に前回と同じ権限で使うわけではないということもありますので、基本的には Disconnect-MgGraph を実行する習慣をつけた方が良さそうです。

 

 

なお、2023年6月20日に再度同じ質問をしてみたところ、Google Bardの回答は変わっていました。保持期限は1時間だそうです。さらなる進化に期待です。