次の方法で共有


電子情報開示に Microsoft Purview API を使用する

Microsoft Graph電子情報開示Microsoft Purview アプリケーション プログラミング インターフェイス (API) を使用すると、organizationは反復的なタスクを自動化し、既存の電子情報開示ツールと統合して、業界の規制で必要になる可能性がある反復可能なワークフローを構築できます。 この記事では、電子情報開示用の Microsoft Purview API へのアクセスを有効にするために必要な前提条件を構成する方法について説明します。 このガイダンスは、クライアント シークレットまたは自己署名証明書を使用して、API へのアプリ専用アクセスを使用して要求を認証する方法に基づいています。

Microsoft Purview API

電子情報開示用の Microsoft Purview API には、2 つの個別の API が含まれています。

  • Microsoft Graph: Microsoft.Graph.Security 名前空間の一部であり、 電子情報開示ケースの操作に使用されます。
  • Microsoft Purview eDiscovery API: 電子情報開示で検索およびレビュー セットからエクスポートするときに作成されたパッケージをプログラムでダウンロードするためにのみ使用されます。

Microsoft Graph の電子情報開示 API では、 プレミアム機能が有効になっている電子情報開示ケースのみがサポートされます。

Microsoft Graph 呼び出し内でサポートされている API 呼び出しの一覧については、「Microsoft Purview eDiscovery API を使用する」を参照してください。

データへのアプリケーション アクセス

電子情報開示用の Microsoft Purview API を呼び出すには、まず、Microsoft Identity Platform (Entra ID) にアプリを登録する必要があります。

アプリケーションは、次の 2 つの方法でデータにアクセスできます。

  • 委任されたアクセス: サインインしているユーザーに代わって動作するアプリ。
  • アプリ専用アクセス: 独自の ID で動作するアプリ。

アクセス シナリオの詳細については、「 認証と承認の基本」を参照してください。

Microsoft Graph API

前提条件

アプリ専用アクセスの実装には、Azure portalでのアプリの登録、クライアント シークレット/証明書の作成、API アクセス許可の割り当て、サービス プリンシパルの設定、Microsoft Graph API の呼び出しにアプリ専用アクセスの使用が含まれます。 アプリを登録するには、クライアント シークレット/証明書を作成し、アカウントが クラウド アプリケーション管理者である必要がある API アクセス許可を割り当てます。

Azure portalでアプリを登録する方法の詳細については、「Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。

Microsoft Purview eDiscovery API アプリケーションのアクセス許可にテナント全体の管理者の同意を付与するには、organizationの代わりに同意する権限を持つユーザーとしてサインインする必要があります。 詳細については、「アプリケーションに テナント全体の管理者の同意を付与する」を参照してください。

サービス プリンシパルを設定するには、次の前提条件が必要です。

電子情報開示にアプリ専用アクセスを実装する方法の詳細については、「Microsoft Purview eDiscoveryのアプリ専用アクセスを設定する」を参照してください。

アプリ専用アクセスを使用して Microsoft Graph APIに接続する

PowerShell の Connect-MgGraph コマンドレットを使用して、アプリのみのアクセス方法を使用して Microsoft Graph の認証と接続を行います。 このコマンドレットを使用すると、アプリが Microsoft Graph と安全に対話でき、Microsoft Purview eDiscovery API を調べることができます。

クライアント シークレットを使用した接続

クライアント シークレットを使用して接続するには、次の PowerShell コードの例を更新して実行します。

$clientSecret = "<client secret>" ## Update with client secret added to the registered app
$appID = "<APP ID>" ## Update with Application ID of registered/Enterprise app
$tenantId = "<Tenant ID>" ## Update with tenant ID
$ClientSecretPW = ConvertTo-SecureString "$clientSecret" -AsPlainText -Force
$clientSecretCred = New-Object System.Management.Automation.PSCredential -ArgumentList ("$appID", $clientSecretPW)
Connect-MgGraph -TenantId "$tenantId" -ClientSecretCredential $clientSecretCred

証明書を使用した接続

証明書を使用して接続するには、次の PowerShell コードの例を更新して実行します。

$certPath = "Cert:\currentuser\my\<xxxxxxxxxx>" ## Update with the cert thumbnail
$appID = "<APP ID>" ## Update with Application ID of registered/Enterprise app
$tenantId = "<Tenant ID>" ## Update with tenant ID
$ClientCert = Get-ChildItem $certPath 
Connect-MgGraph -TenantId $TenantId -ClientId $appId -Certificate $ClientCert 

Microsoft Graph API 呼び出しを呼び出す

接続後、Microsoft Graph APIへの呼び出しを開始できます。

たとえば、ediscoveryCases API を使用して、テナント内の 電子情報開示ケースを 一覧表示できます。 各操作のガイダンスには、次の情報が一覧表示されます。

  • API 呼び出しを行うために必要なアクセス許可
  • HTTP 要求とメソッド
  • ヘッダーと本文の情報を要求する
  • 応答
  • 例 (HTTP、C#、CLI、Go、Java、PHP、PowerShell、Python)

Microsoft Graph PowerShell モジュールを介して接続されているため、HTTP メソッドまたは PowerShell メソッドを使用できます。

まず、 PowerShell の例を見てみましょう。

電子情報開示ケースの一覧の PowerShell の例。

ご覧のように、テナント内のすべてのケースの一覧が返されます。 ケースをさらに詳しく説明する場合は、ケース ID を記録することが重要です。 今後の API 呼び出しには、この ID が必要です。

次に、 HTTP の例を見てみましょう。 Invoke-MgGraphRequest コマンドレットを使用して、PowerShell を使用して呼び出しを行います。

まず、URL を変数に格納します。

$uri = "https://graph.microsoft.com/v1.0/security/cases/ediscoveryCases"

次に、Invoke-MgGraphRequest コマンドレットを使用して API 呼び出しを行います。

Invoke-MgGraphRequest -Method Get -Uri $uri

次の出力からわかるように、返された応答から値を抽出する必要があります。

URL 出力の PowerShell の例。

次のコマンドを使用して、応答の Value 要素を新しい変数に保存できます。

$cases = (Invoke-MgGraphRequest -Method Get -Uri $uri).value

URL を抽出するための PowerShell の例。

ケースの URL を抽出するための PowerShell の例。

このコマンドは、ハッシュ テーブルのコレクションを返します。 必要に応じて、少しの PowerShell コードを実行して、ハッシュ テーブルを PowerShell オブジェクトに変換して、 format-table や format-list などのコマンドレット パラメーターで簡単に使用 できます

$CasesAsObjects = @()
foreach($i in $cases) {$CasesAsObjects += [pscustomobject]$i}
$CasesAsObjects | ft displayname,id,status

ハッシュ テーブルを変換する PowerShell の例。

Microsoft Purview eDiscovery API

Microsoft Purview eDiscovery API を構成して、電子情報開示ケースのエクスポート パッケージとエクスポート プロセスからのレポートのプログラムによるダウンロードを有効にすることができます。

前提条件

このセクションの構成手順を実行する前に、「Microsoft Graph API」セクションで詳しく説明されている構成を完了して検証します。 以前に登録したアプリを Microsoft Entra ID に拡張して、エクスポート パッケージのプログラムによるダウンロードを実現するために必要なアクセス許可を含めます。

この構成には、次の前提条件が既に用意されています。

  • Azure portalに登録されているアプリは、適切なクライアント シークレットまたは証明書で構成されています。
  • Microsoft Purview のサービス プリンシパルには、関連する電子情報開示ロールが割り当てられます。
  • Microsoft Graph 用に構成された Microsoft 電子情報開示 API のアクセス許可。

既存の登録済みアプリの API アクセス許可を拡張してプログラムによるダウンロードを有効にするには、次の手順を実行します。

  • テナントに新しい Microsoft アプリケーションとサービス プリンシパルを登録します。
  • Azure portalで以前に登録したアプリに追加の API アクセス許可を割り当てます。

Microsoft Purview eDiscovery API アプリケーションのアクセス許可にテナント全体の管理者の同意を付与するには、organizationの代わりに同意する権限を持つユーザーとしてサインインします。 詳細については、「アプリケーションに テナント全体の管理者の同意を付与する」を参照してください。

構成の手順

手順 1: Microsoft Entra ID に MicrosoftPurviewEDiscovery アプリを登録する

次の手順を実行します。

  1. MicrosoftPurviewEDiscovery アプリがまだ登録されていないことを検証します。 Azure portalにサインインし、[Microsoft Entra ID>Enterprise アプリケーション] に移動します。

  2. [アプリケーションの種類] フィルターを変更して、Microsoft アプリケーションを表示します

  3. 検索ボックスに「 MicrosoftPurviewEDiscovery」と入力します。 MicrosoftPurviewEDiscovery アプリが表示されます。 MicrosoftPurviewEDiscovery アプリが一覧にない場合は、Microsoft Entra ID でアプリを登録します。

    アプリを登録するには、次の手順を実行します。

    • Microsoft.Graph PowerShell モジュールを使用して、Microsoft Entra ID で MicrosoftPurviewEDiscovery アプリを登録します。 詳細については、「 Microsoft Graph PowerShell SDK のインストール」を参照してください。
    • モジュールがコンピューターにインストールされたら、次のコマンドレットを実行して、PowerShell を使用して Microsoft Graph に接続します。
    Connect-MgGraph -scopes "Application.ReadWrite.All"
    

    Microsoft Graph PowerShell コマンドレットを初めて使用する場合は、必要なアクセス許可に同意するように求められる場合があります。

    MicrosoftPurviewEDiscovery アプリを登録するには、次の PowerShell コマンドを実行します。

    $spId = @{"AppId" = "b26e684c-5068-4120-a679-64a5d2c909d9" }
    
    New-MgServicePrincipal -BodyParameter $spId;
    

注:

PowerShell スクリプトを使用して、Microsoft Entra ID で新しいアプリケーションを登録し、必要に応じてアプリケーション認証用のMicrosoft Purview eDiscovery API アクセス許可を割り当てます。 アプリケーションを登録したら、クライアント シークレットまたは証明書を構成し、ポータルを通じて管理者の同意を付与する必要があります。

手順 2: 登録されているアプリに追加の MicrosoftPurviewEDiscovery アクセス許可を割り当てる

サービス プリンシパルが追加されたら、この記事の Microsoft Graph API セクションで作成した以前に登録したアプリのアクセス許可を更新します。 Azure portalにサインインし、[Microsoft Entra ID>App Registrations] に移動します。

  1. この記事の Microsoft Graph API セクションで作成したアプリを見つけて選択します。
  2. ナビゲーション メニューから [ API アクセス許可] を選択します。
  3. [アクセス許可の追加] を選択し、organizationで使用する API を選択します。
  4. MicrosoftPurviewEDiscovery を検索して選択します。
  5. [ アプリケーションのアクセス許可] を選択します
  6. 電子情報開示の [チェック] ボックスを選択します。
  7. [ アクセス許可の追加] を選択します
  8. [API のアクセス許可] で、[管理同意の付与 (organization)] を選択して、追加されたアクセス許可を承認します。

管理者の同意が付与されると、organizationに対して追加されたアクセス許可の状態が更新されます。

エクスポート パッケージとレポートのダウンロード

ケース ID とエクスポート ジョブ ID の取得

電子情報開示ケースでエクスポート プロセスのエクスポート パッケージとレポートをダウンロードするには、エクスポート ジョブのケース ID と操作またはジョブ ID が必要です。

Microsoft Purview ポータルを使用してこの情報を収集するには、

  • 電子情報開示ケースを開きます。
  • エクスポート プロセスを見つけます。
  • [ サポート情報のコピー] を選択します。
  • この情報をテキスト エディター (メモ帳など) に追加します。

または、次のGraph API呼び出しを使用して、この情報にプログラムでアクセスして、エクスポートするケース ID とジョブ ID を見つけます。

  1. この記事の「アプリ専用アクセスを使用して Microsoft Graph APIに接続する」セクションの手順に従って、Microsoft Graph に接続します。

  2. ケース名がわかっている場合は、次のコマンドで電子情報開示 Graph PowerShell コマンドレットを使用します。

    Get-MgSecurityCaseEdiscoveryCase | where {$_.displayname -eq "<Name of case>"} 
    
  3. ケース ID を取得したら、次のコマンドを使用して、ケースの操作を検索してエクスポートのジョブ ID を特定します。

    Get-MgSecurityCaseEdiscoveryCaseOperation -EdiscoveryCaseId "<case ID>" 
    

エクスポート ジョブは、検索からの直接エクスポートの 場合は exportResult 、レビュー セットからのエクスポートの 場合は ContentExport のアクションでログに記録されます。 エクスポート ジョブの名前は、この API 呼び出しによって返されません。 エクスポート プロセスの名前を見つけるには、特定の操作 ID を照会する必要があります。 エクスポート プロセスの名前を見つけるには、次のコマンドを使用します。

Get-MgSecurityCaseEdiscoveryCaseOperation -EdiscoveryCaseId "<case ID>" -CaseOperationId “<operation ID>”

エクスポート操作の名前は、 AdditionalProperties フィールドに含まれます。

HTTP API 呼び出しを直接実行して、organization内のケースを一覧表示するには、「電子情報開示ケースの一覧表示」を参照してください。

HTTP API 呼び出しを直接実行してケースの操作を一覧表示するには、「 caseOperations の一覧表示」を参照してください。

API 呼び出しでケース ID を使用して、操作を一覧表示するケースを示します。 例:

https://graph.microsoft.com/v1.0/security/cases/ediscoveryCases/<CaseID>/operations/

エクスポート ジョブの名前は、この API 呼び出しでは返されません。 エクスポート プロセスの名前を見つけるには、特定のジョブ ID を照会する必要があります。 例:

https://graph.microsoft.com/v1.0/security/cases/ediscoveryCases/<CaseID>/operations/<Operation ID

エクスポート パッケージのダウンロード

エクスポート パッケージのダウンロード URL の取得

exportFileMetaData プロパティには、エクスポート パッケージとレポートをダウンロードするために必要な URL が含まれています。 URL を取得するには、エクスポート プロセスを実行した電子情報開示ケースのケース ID とエクスポート プロセスの操作 ID が 必要です。

この情報を見つけるには、次の電子情報開示グラフ PowerShell コマンドレットを使用します。

$operation = Get-MgSecurityCaseEdiscoveryCaseOperation -EdiscoveryCaseId "<case ID>" -CaseOperationId “<operation ID>”
$Operation.AdditionalProperties.exportFileMetadata

操作の exportFileMetaData 情報を返す HTTP API 呼び出しを直接行うには、 caseOperations の一覧表示に関するページを参照してください。

Microsoft Purview ポータルの各エクスポート パッケージには、 exportFileMetaData プロパティにエントリがあります。 各エントリには、次の情報が一覧表示されます。

  • エクスポート パッケージ ファイル名
  • エクスポート パッケージを取得する downloadUrl
  • エクスポート パッケージのサイズ

エクスポート パッケージをダウンロードするためのスクリプトの例

Microsoft Purview eDiscovery API は Microsoft Graph APIとは別であるため、ダウンロード要求を承認するには別の認証トークンが必要です。 MSAL.PS PowerShell モジュールGet-MSALToken コマンドレットを使用して、別のトークンを取得します。 また、 Connect-MgGraph コマンドレットを使用して Microsoft Graph API に接続する必要もあります。

次のスクリプト例は、エクスポート パッケージのプログラムによるダウンロードを有効にするために、独自のスクリプトを開発するときに参照として使用できます。

クライアント シークレットとの接続

クライアント シークレットを使用するようにアプリを構成した場合は、次のサンプル スクリプトを参照として使用して、エクスポート パッケージとレポートをプログラムでダウンロードします。 メモ帳に内容をコピーし、 DownloadExportUsingApp.ps1として保存します。

[CmdletBinding()]
param (
    [Parameter(Mandatory = $true)]
    [string]$tenantId,
    [Parameter(Mandatory = $true)]
    [string]$appId,
    [Parameter(Mandatory = $true)]
    [string]$appSecret,
    [Parameter(Mandatory = $true)]
    [string]$caseId,
    [Parameter(Mandatory = $true)]
    [string]$exportId,
    [Parameter(Mandatory = $true)]
    [string]$path = "D:\Temp",
    [ValidateSet($null, 'USGov', 'USGovDoD')]
    [string]$environment = $null    
)

if (-not(Get-Module -Name Microsoft.Graph -ListAvailable)) {
    Write-Host "Installing Microsoft.Graph module"
    Install-Module Microsoft.Graph -Scope CurrentUser
}

if (-not(Get-Module -Name MSAL.PS -ListAvailable)) {
    Write-Host "Installing MSAL.PS module"
    Install-Module MSAL.PS -Scope CurrentUser
}

$password = ConvertTo-SecureString $appSecret -AsPlainText -Force
$clientSecretCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($appId, $password)

if (-not(Get-MgContext)) {
    Write-Host "Connect with credentials of a ediscovery admin (token for graph)"
    if (-not($environment)) {
        Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $clientSecretCred
    }
    else {
        Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $clientSecretCred -Environment $environment
    }
}

Write-Host "Connect with credentials of a ediscovery admin (token for export)"
$exportToken = Get-MsalToken -ClientId $appId -Scopes "b26e684c-5068-4120-a679-64a5d2c909d9/.default" -TenantId $tenantId -RedirectUri "http://localhost" -ClientSecret $password

$uri = "/v1.0/security/cases/ediscoveryCases/$($caseId)/operations/$($exportId)"

$export = Invoke-MgGraphRequest -Uri $uri;
if (-not($export)){
    Write-Host "Export not found"
    exit
}
else{
    $export.exportFileMetadata | % {
        Write-Host "Downloading $($_.fileName)"
        Invoke-WebRequest -Uri $_.downloadUrl -OutFile "$($path)\$($_.fileName)" -Headers @{"Authorization" = "Bearer $($exportToken.AccessToken)"; "X-AllowWithAADToken" = "true" }
    }
}

スクリプトを保存し、次の PowerShell モジュールがインストールされている新しい PowerShell ウィンドウを開きます。

  • Microsoft.Graph
  • MSAL.PS

スクリプトを保存したディレクトリを参照し、次のコマンドを実行します。

.\DownloadExportUsingApp.ps1 -tenantId “<tenant ID>” -appId “<App ID>” -appSecret “<Client Secret>” -caseId “<CaseID>” -exportId “<ExportID>” -path “<Output Path>”

パスとして指定したフォルダーを確認して、ダウンロードしたファイルを表示します。

証明書を使用した接続

証明書を使用するようにアプリを構成した場合は、次のサンプル スクリプトを参照として使用して、エクスポート パッケージとレポートをプログラムでダウンロードします。 内容をテキスト エディターにコピーし、 DownloadExportUsingAppCert.ps1として保存します。

[CmdletBinding()]
param (
    [Parameter(Mandatory = $true)]
    [string]$tenantId,
    [Parameter(Mandatory = $true)]
    [string]$appId,
    [Parameter(Mandatory = $true)]
    [String]$certPath,
    [Parameter(Mandatory = $true)]
    [string]$caseId,
    [Parameter(Mandatory = $true)]
    [string]$exportId,
    [Parameter(Mandatory = $true)]
    [string]$path = "D:\Temp",
    [ValidateSet($null, 'USGov', 'USGovDoD')]
    [string]$environment = $null    
)

if (-not(Get-Module -Name Microsoft.Graph -ListAvailable)) {
    Write-Host "Installing Microsoft.Graph module"
    Install-Module Microsoft.Graph -Scope CurrentUser
}

if (-not(Get-Module -Name MSAL.PS -ListAvailable)) {
    Write-Host "Installing MSAL.PS module"
    Install-Module MSAL.PS -Scope CurrentUser
}

##$password = ConvertTo-SecureString $appSecret -AsPlainText -Force
##$clientSecretCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($appId, $password)

$ClientCert = Get-ChildItem $certPath 

if (-not(Get-MgContext)) {
    Write-Host "Connect with credentials of a ediscovery admin (token for graph)"
    if (-not($environment)) {
        Connect-MgGraph -TenantId $TenantId -ClientId $appId -Certificate $ClientCert
    }
    else {
        Connect-MgGraph -TenantId $TenantId -ClientId $appId -Certificate $ClientCert -Environment $environment
    }
}

Write-Host "Connect with credentials of a ediscovery admin (token for export)"

$connectionDetails = @{
    'TenantId'          = $tenantId
    'ClientId'          = $appID
    'ClientCertificate' = $ClientCert
    'Scope' = "b26e684c-5068-4120-a679-64a5d2c909d9/.default"
}

$exportToken = Get-MsalToken @connectionDetails

$uri = "/v1.0/security/cases/ediscoveryCases/$($caseId)/operations/$($exportId)"

$export = Invoke-MgGraphRequest -Uri $uri;
if (-not($export)){
    Write-Host "Export not found"
    exit
}
else{
    $export.exportFileMetadata | % {
        Write-Host "Downloading $($_.fileName)"
        Invoke-WebRequest -Uri $_.downloadUrl -OutFile "$($path)\$($_.fileName)" -Headers @{"Authorization" = "Bearer $($exportToken.AccessToken)"; "X-AllowWithAADToken" = "true" }
    }
} 

スクリプトを保存するときに、次の PowerShell モジュールがインストールされている新しい PowerShell ウィンドウを開きます。

  • Microsoft.Graph
  • MSAL.PS

スクリプトを保存したディレクトリを参照し、次のコマンドを実行します。

.\DownloadExportUsingAppCert.ps1 -tenantId “<tenant ID>” -appId “<App ID>” -certPath “<Certificate Path>” -caseId “<CaseID>” -exportId “<ExportID>” -path “<Output Path>”

パスとして指定したフォルダーを確認して、ダウンロードしたファイルを表示します。