Logic Apps の Defender for Endpoint コネクタでサービス プリンシパル・マネージド ID を使う
はじめに
Logic Apps のコネクタには各 Azure や M365 サービスにアクセスする際、サービス プリンシパルやマネージド ID が選択可能です。Azure リソースであれば、RBAC を付与するだけなのでシンプルですが、M365 系は API のアクセス許可が必要になります。そのため、今回は Defender for Endpoint (コネクタ名としては Microsoft Defender ATP) のアラート情報取得にサービス プリンシパル・マネージド ID を使って検証します。
なお、今回の各種アクセス許可の付与にはグローバル管理者、アプリケーション管理者、クラウド アプリケーション管理者のいずれかの Azure AD ロールが必要となるようです。
サービス プリンシパルでアクセス
参考としたドキュメントはこちらです。
まず作成したサービス プリンシパルに Defender for Endpoint API のアクセス許可を付与します。[API のアクセス許可] から[アクセス許可の追加] をクリックし、[所属する組織で使用している API] から WindowsDefenderATP を検索します。(部分一致ではなく前方一致で検索されるようなので、Windows から入力が必要です)
アプリケーションのアクセス許可を選択し、アラート情報を取得するので [Alert.Read.All] を選択します。
最後に管理者の同意を行います。
作成したサービス プリンシパルを Logic Apps のコネクタで設定します。Microsoft Defender ATP のコネクタで [サービス プリンシパルを使用して接続する] をクリックします。
サービス プリンシパルの情報を入力し、保存します。
実行するとアラート情報が取得できていることが確認できます。
マネージド ID でアクセス
マネージド ID の場合はもう少し複雑です。アプリの登録ページに出てこないため、ポータルからは API アクセス許可が付与できず、CLI からの操作になります。参考はこちらですが、MS Graph API 用なので、Defender for Endpoint API 用に変更しています。
まずは Logic Apps でマネージド ID を有効化します。[ID] からシステム割り当て済みを有効にしてオブジェクト ID をコピーしておきます。
MS Graph PowerShell を使用してマネージド ID に API アクセス許可を付与します。
# テナント ID と先ほどメモしたオブジェクト ID を設定
$TenantID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$SpID="70291fef-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$ApiName = "WindowsDefenderATP"
# API の許可を指定、1 つのみ指定
# 複数必要の場合は「マネージド ID にアクセス許可を設定」のコマンドを繰り返し実施
$PermissionName = "Alert.Read.All"
# 事前に MS Graph PowerShell にログイン
Connect-MgGraph -TenantId $TenantID -Scopes Application.Read.All,AppRoleAssignment.ReadWrite.All
Import-Module Microsoft.Graph.Applications
# 対象 API のサービスプリンシパルを取得
$ApiServicePrincipal = Get-MgServicePrincipal -Filter "DisplayName eq '$ApiName'" | Select-Object -first 1
# マネージド ID にアクセス許可を設定
$AppRole = $ApiServicePrincipal.AppRoles | Where-Object {$_.Value -eq $PermissionName -and $_.AllowedMemberTypes -contains "Application"}
$params = @{
PrincipalId = $SpID
ResourceId = $ApiServicePrincipal.Id
AppRoleId = $AppRole.Id
}
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $SpID -BodyParameter $params
MS Graph PowerShell のインストール方法などはこちら。
Azure AD の[エンタープライズ アプリケーション] のページから対象のマネージド ID のアクセス許可を確認すると、追加されていることが確認できます。
設定したマネージド ID を Logic Apps のコネクタで設定します。Microsoft Defender ATP のコネクタで [マネージド ID を使用して接続する] をクリックします。
システム割り当てマネージド ID を選択します。
実行するとアラート情報が取得できていることが確認できます。
Discussion