アプリで Exchange オンライン管理コマンドレットを実行できるようにする

アプリで Exchange オンライン管理コマンドレットを実行できるようにする

Exchange Online PowerShell での Exchange.ManageAsApp アクセス許可の使用

Exchange Online 管理 PowerShell モジュールの V3.0 でマネージド ID のサポートが追加されたことで、開発者は作成にもっと関心を持つようになるかもしれません。 Exchange Online コマンドレットを使用する Azure オートメーション ランブック をクリックして、メールボックスのようなデータを処理します。この議論では、私がマネージドアイデンティティに言及するとき、私は システム割り当ての管理対象 ID Azure オートメーション アカウント内での作業。基本的に、マネージド ID は、Azure が自動的に管理する Azure リソースにアクセスするために使用されるサービス プリンシパルです。マネージド ID の資格情報にアクセスできません。他のアプリのサービス プリンシパルと同様に、マネージド ID サービス プリンシパルは、アプリなどのリソースへのアクセスを許可するアクセス許可を保持できます。

たとえば、運用手順書で次のようなコマンドで Exchange Online に接続するのが簡単になりました。

Connect-ExchangeOnline -ManagedIdentity -Organization office365itpros.onmicrosoft.com 

Exchange Online は、運用手順書を実行している Azure オートメーション アカウントが所有するマネージド ID を使用して接続します。

前述のように、接続後に何か興味深いことをする前に、マネージド ID にはアクセス許可が必要です。エクスチェンジ・オンラインの必須の許可は、 Exchange.ManageAsApp, これにより、アプリは、アプリが管理者アカウントであるかのように Exchange Online コマンドレットを実行できます。登録済みアプリとマネージド ID の両方のサービス プリンシパルは、Exchange Online コマンドレットで便利な作業を行うためにこのアクセス許可を必要とします。

いくつかの背景

2020年11月、 マイクロソフトは、Outlook REST API の非推奨化を発表しました。.これは、開発者を従来のAPIからグラフに移すためのより広範な取り組みの一環でした。マイクロソフトはまた、Exchange Web Services (EWS) をレガシ API と見なしていますが、この場合、 Exchange チームは Outlook REST API に重点を置きました。、これは、 グラフ Outlook メール API 置き換えます。

同時に、マイクロソフトは「Azure ポータルから Exchange アプリのアクセス許可を削除しました。."ザ Exchange.ManageAsApp アクセス許可は、Office 365 Exchange Online API のアクセス許可の 1 つです。Microsoft のアクションでは、Azure AD 管理センターのアプリにアクセス許可を割り当てる機能は削除されませんでした。それはちょうどプロセスを少し難しくしました。

Exchange の割り当て。ManageAsApp

割り当てるには Exchange.ManageAsApp 登録済みアプリへのアクセス許可を[登録済みアプリ]ブレードでアプリを選択します。API アクセス許可に移動して、通常どおりアクセス許可を追加します。Azure AD に選択するアクセス許可の範囲が表示されたら、 私の組織のAPI ]タブを使用し、検索ボックスに「Office 365 Exchange Online 」と入力します。Azure AD は、Office 365 Exchange Online API を検出します (図 1)。ここに示すアプリケーション識別子に注意してください。これは後で必要になります。

Office 365 Exchange Online API の検索
図 1: Office 365 Exchange Online API の検索

次に、Office 365 Exchange Online API のアクセス許可のセットを参照し、 Exchange.ManageAsApp (図2)。アプリケーションのアクセス許可が選択されていることを確認し、[アクセス許可の追加]をクリックします。アプリの詳細に戻ったら、Graph API のアクセス許可の場合と同様に、割り当てに同意します。

Exchange.ManageAsApp アクセス許可の追加
図 2: Exchange.ManageAsApp アクセス許可の追加

登録されたアプリは、管理者として Exchange Online コマンドレットを実行できるようになりました。それはすべてうまくいっていますが、マネージド ID についてはどうでしょうか。

マネージド ID は異なる

登録済みアプリとは異なり、マネージド ID は Azure AD 管理センターの[エンタープライズ アプリ]セクションに表示されます。エンタープライズ アプリを開き、フィルターを適用して管理対象 ID を検索します (図 3)。

Azure AD 管理センターでのマネージド ID の選択
図 3: Azure AD 管理センターでの管理対象 ID の選択

Azure AD には、マネージド ID を持つ Azure オートメーション アカウントが一覧表示されます。操作するオートメーション アカウントを選択します。アクセス許可にアクセスすると、Azure AD から次のことが通知されます。アプリは同意を必要としないため、このアプリケーションに同意する機能は無効になっています。同意の付与は、リソースにアクセスするためのアクセス許可を必要とするアプリケーションにのみ適用されます。."つまり、Azure AD 管理センターを通じて、オートメーション アカウント、またはマネージド ID のサービス プリンシパルに API を割り当てることはできません。

代わりに、PowerShell usi を使用して作業を行うことができます。Microsoft Graph PowerShell SDK の ng コマンドレット。その方法は次のとおりです。

  • マネージド ID で使用されるオートメーション アカウントの名前を書き留めます。この例では、アカウント名は “ExoAutomationAccount" です。
  • グラフに AppRoleAssignment.ReadWrite.All 許可。
  • を実行する Get-MgServicePrincipal コマンドレットを使用して、オートメーション アカウントのサービス プリンシパルを変数に入力します。コマンドレットに渡されるフィルターには、オートメーション アカウントの名前が含まれます。
  • 変数に Office 365 Exchange Online エンタープライズ アプリ。Microsoft は、このアプリをテナントに組み込み、管理アプリが Exchange を管理できるようにします。Office 365 Exchange Online アプリのアプリ ID は、常に次のようになります。 00000002-0000-0ff1-ce00-0000000000000.
  • 検索する アプリケーションとしての交換の管理 Exchange Online アプリケーションによって保持されるセット内のロール。このロールは、 Exchange.ManageAsApp アクセス許可: ロールを持つすべてのアプリがアクセス許可を使用できるようにします。
  • 管理対象 ID にロールを割り当てるパラメーターを作成します。
  • 使用 New-MgServicePrincipalRoleAssignment コマンドレットを使用して役割を割り当てます。
Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All
Select-MgProfile Beta
$ManagedIdentityApp = Get-MgServicePrincipal -Filter "displayName eq 'ExoAutomationAccount'"
$ExoApp = Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'"
$AppPermission = $ExoApp.AppRoles | Where-Object {$_.DisplayName -eq "Manage Exchange As Application"}
$AppRoleAssignment = @{
"PrincipalId" = $ManagedIdentityApp.Id
"ResourceId" = $ExoApp.Id
"AppRoleId" = $AppPermission.Id
}
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentityApp.Id -BodyParameter $AppRoleAssignment

新しい役割の割り当てはすぐに有効になります。間違えた場合は、 Remove-MgServicePrincipalAppRoleAssignment コマンドレット。その方法は次のとおりです。

[Array]$SPPermissions = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentityApp.Id
$Role = $ExoApp.AppRoles | Where-Object {$_.DisplayName -eq "Manage Exchange As Application"}
$Assignment = $SpPermissions | Where-Object {$_.AppRoleId -eq $Role.Id}
Remove-MgServicePrincipalAppRoleAssignment -AppRoleAssignmentId $Assignment.Id -ServicePrincipalId $ManagedIdentityApp.Id

小さな痛みを割り当て

おそらくマイクロソフトは、 Exchange.ManageAsApp 2020年11月の発表時にアプリへの許可。アクセス許可を割り当てるためにPowerShellに行かなければならないのは苦痛ですが、それは一度だけ起こる必要があるものなので、それほど悪くはありません。私はMicrosoft 365の中で嘆くべき他のより深刻なことがあります。


Microsoft 365 エコシステムが実際に継続的にどのように機能するかについては、 IT プロフェッショナル向け Office 365 電子ブック。毎月の更新プログラムにより、サブスクライバーは Office 365 エコシステム全体で何が重要かを常に把握できます。

未分類

Posted by admin