다음을 통해 공유


eDiscovery에 Microsoft Purview API 사용

Microsoft Graph의 eDiscoveryMicrosoft Purview API(애플리케이션 프로그래밍 인터페이스)를 사용하면 organization 반복적인 작업을 자동화하고 기존 eDiscovery 도구와 통합하여 업계 규정에 따라 필요할 수 있는 반복 가능한 워크플로를 빌드할 수 있습니다. 이 문서에서는 eDiscovery용 Microsoft Purview API에 액세스할 수 있도록 필요한 필수 구성 요소를 구성하는 방법에 대한 지침을 제공합니다. 이 지침은 클라이언트 암호 또는 자체 서명된 인증서를 사용하여 요청을 인증하는 API에 대한 앱 전용 액세스를 사용하는 방법을 기반으로 합니다.

Microsoft Purview API

eDiscovery용 Microsoft Purview API에는 다음과 같은 두 가지 개별 API가 포함됩니다.

  • Microsoft Graph: 네임스페이 Microsoft.Graph.Security 스의 일부이며 eDiscovery 사례 작업에 사용됩니다.
  • Microsoft Purview eDiscovery API: eDiscovery의 검색검토 집합에서 내보낼 때 만든 패키지를 프로그래밍 방식으로 다운로드하는 데만 사용됩니다.

Microsoft Graph의 eDiscovery API는 프리미엄 기능이 사용하도록 설정된 eDiscovery 사례만 지원합니다.

Microsoft Graph 호출 내에서 지원되는 API 호출 목록은 Microsoft Purview eDiscovery API 사용을 참조하세요.

데이터에 대한 애플리케이션 액세스

eDiscovery용 Microsoft Purview API를 호출하려면 먼저 microsoft Identity Platform, Entra ID 앱을 등록해야 합니다.

애플리케이션은 다음 두 가지 방법으로 데이터에 액세스할 수 있습니다.

  • 위임된 액세스: 로그인한 사용자를 대신하여 작동하는 앱입니다.
  • 앱 전용 액세스: 자체 ID를 사용하여 작동하는 앱입니다.

액세스 시나리오에 대한 자세한 내용은 인증 및 권한 부여 기본 사항을 참조하세요.

Microsoft Graph API

필수 구성 요소

앱 전용 액세스를 구현하려면 Azure Portal 앱을 등록하고, 클라이언트 암호/인증서를 만들고, API 권한을 할당하고, 서비스 주체를 설정한 다음, 앱 전용 액세스를 사용하여 Microsoft Graph API를 호출해야 합니다. 앱을 등록하려면 클라이언트 비밀/인증서를 만들고 API 권한을 할당하려면 계정이 클라우드 애플리케이션 관리자여야 합니다.

Azure Portal 앱을 등록하는 방법에 대한 자세한 내용은 Microsoft ID 플랫폼 애플리케이션 등록을 참조하세요.

Microsoft Purview eDiscovery API 애플리케이션 권한에 대한 테넌트 전체 관리자 동의를 부여하려면 organization 대신하여 동의할 권한이 있는 사용자로 로그인해야 합니다. 자세한 내용은 애플리케이션에 테넌트 전체 관리자 동의 부여를 참조하세요.

서비스 주체를 설정하려면 다음 필수 구성 요소가 필요합니다.

eDiscovery에 대한 앱 전용 액세스를 구현하는 자세한 단계는 Microsoft Purview eDiscovery 대한 앱 전용 액세스 설정을 참조하세요.

앱 전용 액세스를 사용하여 Microsoft Graph API 연결

PowerShell의 Connect-MgGraph cmdlet을 사용하여 앱 전용 액세스 방법을 사용하여 Microsoft Graph를 인증하고 연결합니다. 이 cmdlet을 사용하면 앱이 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를 사용하여 테넌트 내에서 eDiscovery 사례를 나열할 수 있습니다. 각 작업에 대한 지침에는 다음 정보가 나열됩니다.

  • API 호출에 필요한 권한
  • HTTP 요청 및 메서드
  • 요청 헤더 및 본문 정보
  • 응답
  • 예제(HTTP, C#, CLI, Go, Java, PHP, PowerShell, Python)

Microsoft Graph PowerShell 모듈을 통해 연결되었으므로 HTTP 또는 PowerShell 메서드를 사용할 수 있습니다.

먼저 PowerShell 예제를 살펴보겠습니다.

eDiscovery 사례 목록에 대한 PowerShell 예제입니다.

보듯이 테넌트 내의 모든 사례 목록을 반환합니다. 사례를 자세히 살펴보면 사례 ID를 기록하는 것이 중요합니다. 향후 API 호출에는 이 ID가 필요합니다.

이제 HTTP 예제를 살펴보겠습니다. Invoke-MgGraphRequest cmdlet을 사용하여 PowerShell을 사용하여 호출합니다.

먼저 URL을 변수에 저장합니다.

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

그런 다음 Invoke-MgGraphRequest cmdlet을 사용하여 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 와 같은 cmdlet 매개 변수에서 더 쉽게 사용할 수 있습니다.

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

해시 테이블을 변환하는 PowerShell 예제입니다.

Microsoft Purview eDiscovery API

eDiscovery 사례의 내보내기 프로세스에서 내보내기 패키지 및 보고서를 프로그래밍 방식으로 다운로드할 수 있도록 Microsoft Purview eDiscovery API를 구성할 수 있습니다.

필수 구성 요소

이 섹션의 구성 단계를 실행하기 전에 Microsoft Graph API 섹션에 설명된 구성을 완료하고 유효성을 검사합니다. 내보내기 패키지의 프로그래밍 방식으로 다운로드하는 데 필요한 권한을 포함하도록 이전에 등록된 앱을 Microsoft Entra ID로 확장합니다.

이 구성은 이미 다음 필수 조건을 제공합니다.

  • Azure Portal 등록된 앱은 적절한 클라이언트 암호 또는 인증서로 구성됩니다.
  • Microsoft Purview의 서비스 주체는 관련 eDiscovery 역할을 할당했습니다.
  • Microsoft Graph에 대해 구성된 Microsoft eDiscovery API 권한입니다.

프로그래밍 방식으로 다운로드할 수 있도록 등록된 기존 앱의 API 권한을 확장하려면 다음 단계를 완료합니다.

  • 테넌트에서 새 Microsoft 애플리케이션 및 서비스 주체를 등록합니다.
  • Azure Portal 이전에 등록된 앱에 추가 API 권한을 할당합니다.

Microsoft Purview eDiscovery API 애플리케이션 권한에 대한 테넌트 전체 관리자 동의를 부여하려면 organization 대신하여 동의할 권한이 있는 사용자로 로그인합니다. 자세한 내용은 애플리케이션에 테넌트 전체 관리자 동의 부여를 참조하세요.

구성 단계

1단계: Microsoft Entra ID에 MicrosoftPurviewEDiscovery 앱 등록

다음 단계를 완료하세요.

  1. MicrosoftPurviewEDiscovery 앱이 아직 등록되어 있지 않은지 확인합니다. Azure Portal 로그인하고 Microsoft Entra ID>엔터프라이즈 애플리케이션으로 이동합니다.

  2. Microsoft 애플리케이션을 표시하도록 애플리케이션 유형 필터 를 변경합니다.

  3. 검색 상자에 MicrosoftPurviewEDiscovery를 입력합니다. MicrosoftPurviewEDiscovery 앱이 표시되어야 합니다. MicrosoftPurviewEDiscovery 앱이 나열되지 않은 경우 Microsoft Entra ID에 앱을 등록합니다.

    앱을 등록하려면 다음 단계를 완료합니다.

    • Microsoft.Graph PowerShell 모듈을 사용하여 MicrosoftPurviewEDiscovery 앱을 Microsoft Entra ID에 등록합니다. 자세한 내용은 Microsoft Graph PowerShell SDK 설치를 참조하세요.
    • 모듈이 컴퓨터에 설치되면 다음 cmdlet을 실행하여 PowerShell을 사용하여 Microsoft Graph에 연결합니다.
    Connect-MgGraph -scopes "Application.ReadWrite.All"
    

    Microsoft Graph PowerShell cmdlet을 처음 사용하는 경우 필요한 권한에 동의하라는 메시지가 표시될 수 있습니다.

    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>앱 등록으로 이동합니다.

  1. 이 문서의 Microsoft Graph API 섹션에서 만든 앱을 찾아 선택합니다.
  2. 탐색 메뉴에서 API 권한을 선택합니다.
  3. 권한 추가를 선택한 다음 내 organization 사용하는 API를 선택합니다.
  4. MicrosoftPurviewEDiscovery를 검색하고 선택합니다.
  5. 애플리케이션 사용 권한을 선택합니다.
  6. eDiscovery.Download.Read에 대한 검사 상자를 선택합니다.
  7. 권한 추가를 선택합니다.
  8. API 권한에서관리 동의 부여(organization)를 선택하여 추가된 권한을 승인합니다.

관리자 동의가 부여되면 추가된 권한의 상태 organization 대해 업데이트됩니다.

내보내기 패키지 및 보고서 다운로드

사례 ID 검색 및 작업 ID 내보내기

eDiscovery 사례에서 내보내기 프로세스의 내보내기 패키지 및 보고서를 다운로드하려면 내보내기 작업의 사례 ID와 작업 또는 작업 ID가 필요합니다.

Microsoft Purview 포털을 사용하여 이 정보를 수집하려면 다음을 수행합니다.

  • eDiscovery 케이스를 엽니다.
  • 내보내기 프로세스를 찾습니다.
  • 지원 정보 복사를 선택합니다.
  • 이 정보를 텍스트 편집기(예: 메모장)에 추가합니다.

또는 다음 Graph API 호출을 사용하여 이 정보에 프로그래밍 방식으로 액세스하여 내보내려는 사례 ID와 작업 ID를 찾습니다.

  1. 이 문서의 앱 전용 액세스를 사용하여 Microsoft Graph API 연결 섹션의 단계에 따라 Microsoft Graph에 연결합니다.

  2. 사례 이름을 알고 있는 경우 다음 명령과 함께 eDiscovery Graph PowerShell cmdlet을 사용합니다.

    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 사례를 나열하기 위해 직접 호출하도록 하려면 ediscoveryCases 나열을 참조하세요.

HTTP API 호출을 직접 수행하여 사례에 대한 작업을 나열하려면 사례 나열옵터레이션을 참조하세요.

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을 가져오려면 내보내기 프로세스를 실행한 eDiscovery 사례의 사례 ID 와 내보내기 프로세스에 대한 작업 ID 가 필요합니다.

다음 eDiscovery Graph PowerShell cmdlet을 사용하여 이 정보를 찾습니다.

$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 cmdlet을 사용하여 별도의 토큰을 가져옵니다. Connect-MgGraph cmdlet을 사용하여 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>”

다운로드한 파일을 볼 수 있는 경로로 지정한 폴더를 검토합니다.