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 에이전트 를 사용하는 것이 좋습니다.
활동 검사 스크립트를 사용하려면
- 데이터에 대해 쿼리를 실행합니다.
- 단일 검색에 나열할 수 있는 것보다 많은 레코드가 있는 경우 실행해야 하는 반환 명령을
nextQueryFilters받게 됩니다. 쿼리가 모든 결과를 반환할 때까지 검색할 때마다 이 명령을 가져옵니다.
요청 본문 매개 변수
- "filters": 요청에 대한 모든 검색 필터를 사용하여 개체를 필터링합니다. 자세한 내용은 활동 필터를 참조하세요 . 요청이 제한되지 않도록 하려면 쿼리에 제한을 포함해야 합니다(예: 마지막 날의 활동을 쿼리하거나 특정 앱을 필터링).
- "isScan": Boolean. 검색 모드를 사용하도록 설정합니다.
- "sortDirection": 정렬 방향입니다. 가능한 값은
asc및desc입니다. - "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)))
다음 단계
문제가 발생하는 경우 지원받을 수 있습니다. 제품 문제에 대해 도움이나 지원을 받으려면 지원 티켓을 여세요.