X

アプリが PowerShell モジュールを使用するためのアクセス許可Microsoft Teams割り当てる

アプリが PowerShell モジュールを使用するためのアクセス許可Microsoft Teams割り当てる | Microsoft 365

Teams 管理者権限をアプリとオートメーションの認定に割り当てる

先週、私は割り当てる方法を説明しました Exchange.ManageAsApp Azure オートメーション アカウントへのアクセス許可。このアクセス許可により、オートメーション運用手順書は、 システム割り当ての管理対象 ID をクリックし、Exchange Online 管理モジュールでコマンドレットを実行します。基本的に、このアクセス許可は、対話的にサインインして Exchange Online コマンドレットを実行する Exchange 管理者のように動作する権限をオートメーション アカウントに付与します。その結果、Exchange Online モジュール用に記述されたスクリプトは、Azure オートメーションによって実行される候補になります。

同じ状況が Teams PowerShell モジュールにも当てはまります。誰かが Connect-MicrosoftTeams コマンドレット 対話型セッションで Teams 管理エンドポイントに接続するには、Azure AD アカウントで保持されているすべての権利とアクセス許可を使用できます。これらの権利とアクセス許可にグローバル管理者や Teams 管理者などの役割が含まれている場合は、テナントレベルで Teams の管理操作を実行できます。

アプリに管理者として行動する権利を与える

Azure オートメーション運用手順書の Teams PowerShell モジュールのコマンドレットを使用するには、オートメーション アカウントが管理者として機能するアクセス許可を保持している必要があります。この要件は、Runbook でマネージド ID を使用する場合を含め、アプリがバックグラウンド ジョブでモジュールを使用するときに使用されるすべての認証方法に適用されます。

運用手順書は、次のような管理された ID を使用して Teams に接続します。

Connect-MicrosoftTeams -Identity

接続を認証するとき、Azure AD は、運用手順書を所有するオートメーション アカウントが保持するロールとアクセス許可を評価します。これは、ユーザーが対話型の PowerShell セッションで Teams に接続する場合と同等です。アカウントが Teams 管理者ロールを保持している場合は、コマンドレットを実行して、Teams テナント構成の更新、ポリシーの変更、およびアカウントの更新を行うことができます。

Teams 管理者権限の割り当て (役割)

前回の記事では、Exchange Online を管理する役割を割り当てました (Exchange Online は Exchange.ManageAsApp アクセス許可) をオートメーション アカウントに追加します。同じ原則が Teams にも適用されます。アプリが Exchange Online を管理できるように役割を割り当てる代わりに、役割を割り当てて、アプリが Exchange Online を管理できるようにします。他の記事で説明したように、Azure AD 管理センターはオートメーション アカウントへのロールの割り当てをサポートしていないため、PowerShell を使用してこれを行う必要があります。

このコード:

  • マイクロソフト グラフに接続します。
  • 変数に Skype および Teams テナント管理 API .app。これは、テナントにインストールされたエンタープライズ アプリで、Teams 管理センターなどのコンポーネントが Teams を管理できるようにします。そのアプリIDは常に 48ac35b8-9aa8-4d74-927d-1f4a14a0b239.
  • 検索する Application_access Skype および Teams テナント管理 API アプリによって保持されるセット内のロール。
  • 使用するオートメーション アカウントの詳細を変数に入力します。この例では、アカウントは TeamsAutomationAccount と呼ばれます。
  • 役割を割り当てるためのパラメーターを設定します。
  • を実行する New-MgServicePrincipalAppRoleAssignment コマンドレット Application_access オートメーション アカウントのサービス プリンシパルに対するロール。

コードは次のとおりです。

Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All
Select-MgProfile Beta
# Fetch details of the Teams management app
$TeamsApp = Get-MgServicePrincipal -Filter "AppId eq '48ac35b8-9aa8-4d74-927d-1f4a14a0b239'" 
$AppPermission = $TeamsApp.AppRoles | Where-Object {$_.DisplayName -eq "Application_access"} # Create the payload for the assignment
$ManagedIdentityApp = Get-MgServicePrincipal -Filter "displayName eq 'TeamsAutomationAccount'"
$AppRoleAssignment = @{
"PrincipalId" = $ManagedIdentityApp.Id
"ResourceId" = $TeamsApp.Id
"AppRoleId" = $AppPermission.Id }
# Assign the role to the service principal for the managed identity.
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentityApp.Id -BodyParameter $AppRoleAssignment

コードの実行後、オートメーション アカウントのアクセス許可を確認すると、Teams 管理者の役割が存在することがわかります (図 1)。

図 1: オートメーション アカウントのサービス プリンシパルに割り当てられた Teams の管理役割

アクセス許可が付与されると、オートメーション アカウントは管理操作の実行のみを許可することに注意してください。その他の操作では、Teams グラフのアクセス許可に対する同意が必要な場合があります。

チームポリシーの操作

Teams PowerShell モジュールの現在のバージョン (4.7) では、マネージド ID を使用して Skype for Business コネクタから古いコマンドレットを実行することはサポートされていません (次のような Get-CsTeamsMessagingPolicy).これは、Microsoft がマネージド ID をサポートするためにこれらのコマンドレットを更新する必要があるためです。

オートメーション運用手順書で古いコマンドレットを実行する必要がある場合は、Teams 管理者ロールを保持するアカウントを使用して Teams にサインインできます。たとえば、アカウントの資格情報を Azure Key Vault に格納し、それらの cred を使用できます。エンシャル Connect-MicrosoftTeams.

Azure の自動化とチーム

スケジュールされた運用手順書で自動化アカウントを使用することは、管理ジョブを確実に実行するための優れた方法です。Teams のような一般的な Microsoft 365 PowerShell モジュールを使用できることで、可能な作業の範囲が広がります。マネージド ID は、資格情報を維持する必要性を軽減し、物事をより安全に保ちます。全体として、それは素晴らしい組み合わせです。


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

admin: