API를 사용하여 활동 조사

참고

  • Microsoft Cloud App Security 이름이 바뀌었습니다. 이제 Microsoft Defender for Cloud Apps 호출되었습니다. 앞으로 몇 주 안에 여기와 관련 페이지에서 스크린샷과 지침을 업데이트할 예정입니다. 변경 내용에 대한 자세한 내용은 이 공지 사항을 참조하세요. Microsoft 보안 서비스의 최근 이름 바꾸기에 대한 자세한 내용은 Microsoft Ignite 보안 블로그를 참조하세요.

  • Microsoft Defender for Cloud Apps 이제 Microsoft 365 Defender 일부입니다. Microsoft 365 Defender 포털을 사용하면 보안 관리자가 한 위치에서 보안 작업을 수행할 수 있습니다. 이렇게 하면 워크플로가 간소화되고 다른 Microsoft 365 Defender 서비스의 기능이 추가됩니다. Microsoft 365 Defender Microsoft ID, 데이터, 디바이스, 앱 및 인프라 전반에서 보안을 모니터링하고 관리하기 위한 홈이 될 것입니다. 이러한 변경 내용에 대한 자세한 내용은 Microsoft 365 Defender Microsoft Defender for Cloud Apps 참조하세요.

활동 API를 사용하여 연결된 클라우드 앱에서 사용자가 수행하는 활동을 조사할 수 있습니다.

활동 API 모드는 대량의 데이터(5,000개 이상의 활동)를 검색하고 검색하는 데 최적화되어 있습니다. API 검사는 모든 결과가 검색될 때까지 활동 데이터를 반복적으로 쿼리합니다.

참고

대량의 활동 및 대규모 배포의 경우 활동 검사에 SIEM 에이전트 를 사용하는 것이 좋습니다.

활동 검사 스크립트를 사용하려면

  1. 데이터에 대해 쿼리를 실행합니다.
  2. 단일 검색에 나열할 수 있는 것보다 많은 레코드가 있는 경우 실행해야 하는 반환 명령을 nextQueryFilters 받게 됩니다. 쿼리가 모든 결과를 반환할 때까지 검색할 때마다 이 명령을 가져옵니다.

요청 본문 매개 변수

  • "filters": 요청에 대한 모든 검색 필터를 사용하여 개체를 필터링합니다. 자세한 내용은 활동 필터를 참조하세요 . 요청이 제한되지 않도록 하려면 쿼리에 제한을 포함해야 합니다(예: 마지막 날의 활동을 쿼리하거나 특정 앱을 필터링).
  • "isScan": Boolean. 검색 모드를 사용하도록 설정합니다.
  • "sortDirection": 정렬 방향입니다. 가능한 값은 ascdesc입니다.
  • "sortField": 활동을 정렬하는 데 사용되는 필드입니다. 가능한 값은 다음과 같습니다.
    • date - 활동이 발생한 날짜입니다(기본값).
    • created - 활동이 저장된 타임스탬프 입니다.
  • "limit": 정수입니다. 스캔 모드에서 500에서 5000 사이(기본값은 500)입니다. 모든 데이터를 검색하는 데 사용되는 반복 횟수를 제어합니다.

응답 매개 변수

  • "data": 반환된 데이터입니다. 각 반복마다 최대 "제한" 레코드 수를 포함합니다. 끌어올 레코드가 더 많은 경우(hasNext=true) 모든 데이터가 한 번만 나열되도록 마지막 몇 개 레코드가 삭제됩니다.
  • "hasNext": Boolean. 데이터에 대한 다른 반복이 필요한지 여부를 표시합니다.
  • "nextQueryFilters": 다른 반복이 필요한 경우 실행할 연속 JSON 쿼리를 포함합니다. 이 매개 변수는 다음 요청에서 "filters" 매개 변수로 사용합니다. "hasNext" 매개 변수를 False로 설정하면 모든 데이터를 반복했으므로 이 매개 변수가 누락됩니다.

다음 Python 예제에서는 Exchange Online 지난 날의 모든 활동을 가져옵니다.

import requests
import json
ACTIVITIES_URL = 'https://<your_tenant>.<tenant_region>.portal.cloudappsecurity.com/api/v1/activities/'

your_token = '<your_token>'
headers = {
'Authorization': 'Token {}'.format(your_token),
}

filters = {
  # optionally, edit to match your filters
  'date': {'gte_ndays': 1},
  'service': {'eq': [20893]}
}
request_data = {
  'filters': filters,
  'isScan': True
}

records = []
has_next = True
while has_next:
    content = json.loads(requests.post(ACTIVITIES_URL, json=request_data, headers=headers).content)
    response_data = content.get('data', [])
    records += response_data
    print('Got {} more records'.format(len(response_data)))
    has_next = content.get('hasNext', False)
    request_data['filters'] = content.get('nextQueryFilters')

print('Got {} records in total'.format(len(records)))

다음 단계

문제가 발생하는 경우 지원받을 수 있습니다. 제품 문제에 대해 도움이나 지원을 받으려면 지원 티켓을 여세요.