ゲスト アカウントは、Microsoft Graph PowerShell SDK で写真を更新できません。

ゲスト アカウントは、Microsoft Graph PowerShell SDK で写真を更新できません。

新しいコマンドレットを使用するためのスクリプトのアップグレード

Microsoft は、Azure AD および Microsoft Online Services (MSOL) PowerShell モジュールを 2022 年後半または 2023 年初頭に非推奨にする予定です。別に ライセンス管理コマンドレットの場合、これらのモジュールの他のコマンドレットは引き続き機能しますが、サポートされません。最終的に、コマンドレットは機能しなくなるため、スクリプトをアップグレードし、Azure AD ゲスト アカウントの管理方法など、作業を完了するための新しい方法を模索する時期が熟しています。

ほとんどの場合、Azure AD コマンドレットを Microsoft Graph PowerShell SDK のコマンドレットに置き換えることで、スクリプトをアップグレードできます。我々は、の打ち上げの準備として Office 365 for IT プロフェッショナル (2023 年版) 電子ブックでは、できるだけ多くの Microsoft Graph API クエリまたは SDK コマンドレットに置き換えるために、本書のすべての Azure AD および MSOL コード例について説明します。マイクロソフトは、 便利なコマンドレット マップ 開発者が古いコマンドレットを適切な代替品と照合できるようにします。

Microsoft では、グラフで直接同等のコマンドレットをまだ提供していないため、コマンドレットを置き換えることがまだ不可能な場合があります。このような場合、古いコードは引き続き機能するため、そのままにしておきます。適切な代替品が利用可能になったら、新しいグラフベースのコードでブックを更新します。

Azure AD アカウントで写真を使用するのは良いことです

テナント管理者は、通常のユーザー アカウントとゲスト アカウントの両方のすべての Azure AD アカウントの写真を追加することをお勧めします。認識する顔があると、Teams でドキュメントを共有したり、チャネルの会話に参加したりしているユーザーを簡単に理解できます。テナント管理者は多忙な人々であり、"ゲストの衛生" (不要なゲスト アカウントや古いゲスト アカウントのクリーンアップ) に時間を費やしても、Azure AD 管理センターまたは PowerShell 経由でゲスト アカウントの写真を追加できない場合があります。このため、ゲストアカウントが自分の写真を更新できれば良いでしょう。

2021 年 4 月に、Azure AD PowerShell モジュールのコマンドレットを使用して、別の Microsoft 365 テナントの Azure AD ゲスト アカウントの写真を更新する方法について説明しました。これは比較的簡単な手順で、Azure AD モジュールの動作方法によって促進されます。テナントに接続すると、サインインしているアカウントがアクセスできるアカウントやその他のオブジェクトを操作できます。この場合、ゲストアカウントです。

時は流れ、ゲストが自分の写真をアップロードする方法を示す例をアップグレードする時が来ました。残念なことに、 Set-MgUserPhotoContent コマンドレットは、 Set-AzureADUserThumbNailPhoto コマンドレットは、ゲスト アカウントを持つターゲット テナントに接続してアカウントの写真を更新する手法では機能しません。少なくとも、ターゲットテナントが特定の条件を満たさない限り、機能しません。

Microsoft Graph PowerShell SDK の実験

私は何ができるかを見るためにゲストアカウントを持っているいくつかのターゲットテナントで実験しました。ザ コネクト-マグネシウムグラフ コマンドレットはテナントに接続しても構わず、ゲスト アカウントでサインインできます。この時点で、物事はうまくいきません。Azure AD モジュールに接続すると、上記の投稿で説明したようにゲスト アカウントを更新できます。

ただし、Microsoft Graph では、アクセス許可 (またはスコープ) に対してより制限的なアプローチが取られています。管理者は、 Microsoft Graph PowerShell SDK との対話型セッションに使用されるサービス プリンシパル ユーザーアカウントと対話するためのアクセス許可。この場合、同意が User.ReadWrite.All ユーザー アカウント (またはゲスト アカウント) を写真で更新できる前のアクセス許可。PowerShell SDK を使用した対話型セッション 委任されたアクセス許可なので、権限が User.ReadWrite.All (すべてのメールボックスへのアクセスを意味する)、グラフはサインインしているユーザーに対するアクセス許可の範囲を制限します。

私たちの有名な技術編集者、ヴァシル・ミチェフは、彼が問題を解決したと考えました。 メモを公開しました その旨で。不幸なことに、さらなる調査により、Microsoft Graph PowerShell SDK を使用してターゲット テナントに接続し、ゲスト アカウントの写真を更新することが判明しました。これは、Microsoft Graph PowerShell エンタープライズ アプリ (アプリケーション ID 14d82eec-204b-4c2f-b7e8-296a70dab67e) のサービス プリンシパルが User.ReadWrite.All 許可。

サービスプリンシパルの質問

これらの要件を満たすsは誰かが走ったことを意味します コネクト-マグネシウムグラフ ターゲットテナント内の過去のある時点で。このアクションにより、サービス プリンシパルが Azure AD にまだ認識されていない場合に、サービス プリンシパルが作成されます。サービス プリンシパルがターゲット テナントに存在しない場合、管理者がサインインしてサービス プリンシパルを作成するまで、Connect-MgGraph は続行できません (図 1)。サービス プリンシパルの作成後、次のようなアクセス許可を使用するための同意を受け取ることができます。 User.ReadWrite.All.

Azure AD で、Microsoft Graph PowerShell SDK のサービス プリンシパルを作成するように求められます。

Azure AD Guest Account
図 1: Azure AD で、Microsoft Graph PowerShell SDK のサービス プリンシパルを作成するように求められます。

これらの条件は一部のテナントに存在する可能性がありますが、サービス プリンシパルが存在し、アクセス許可を保持しているという保証はありません。たとえば、ゲスト アカウントを使用して Microsoft テナントに接続すると、 ユーザー読み取り 権限は利用可能ですが、 User.ReadWrite.All 権限はありません。

Disconnect-MgGraph
Connect-MgGraph -TenantId 72f988bf-86f1-41af-91ab-2d7cd011db47
Welcome To Microsoft Graph!
Get-Mgcontext

ClientId              : 14d82eec-204b-4c2f-b7e8-296a70dab67e
TenantId              : 72f988bf-86f1-41af-91ab-2d7cd011db47
CertificateThumbprint :
Scopes                : {openid, profile, User.Read, email}
AuthType              : Delegated
AuthProviderType      : InteractiveAuthenticationProvider
CertificateName       :
Account               :
AppName               : Microsoft Graph PowerShell
ContextScope          : CurrentUser
Certificate           :
PSHostVersion         : 5.1.22000.653
ClientTimeout         : 00:05:00

一言で言えば、Microsoft Graph PowerShell SDK を使用して、他のテナントのゲスト アカウントの写真を更新することができますが、条件が正確に正しい場合に限ります。

その許可されたサービス プリンシパル

最後に、もう一度 Microsoft Graph PowerShell SDK で使用されるサービス プリンシパルの累積的な性質.管理者が Graph SDK で使用するためのアクセス許可に同意した場合、管理者が削除しない限り、そのアクセス許可はサービス プリンシパルに割り当てられたままになります。時間が経つにつれて、アクセス許可が発生し、サービス プリンシパルは高度なアクセス許可になります。これにより、テナント管理者は対話型セッションで SDK コマンドレットを簡単に実行できますが、望ましくない可能性があります。逆に、対話型セッションはアプリケーションのアクセス許可ではなく委任されたアクセス許可を使用するため、グラフは使用しません。 サインインしているユーザーが、他の方法では開けなかったデータにアクセスできるようにします.これは知ってうれしいです。

未分類

Posted by admin