次の方法で共有


API を使用してアクティビティを調査する

アクティビティ API を使用して、接続されたクラウド アプリ全体でユーザーが実行したアクティビティを調査できます。

アクティビティ API モードは、大量のデータ (5,000 を超えるアクティビティ) のスキャンと取得に最適化されています。 API スキャンは、すべての結果がスキャンされるまでアクティビティ データを繰り返し照会します。

注:

大量のアクティビティと大規模なデプロイの場合は、アクティビティ スキャンに SIEM エージェント を使用することをお勧めします。

アクティビティ スキャン スクリプトを使用するには

  1. データに対してクエリを実行します。
  2. 1 回のスキャンで表示できるレコード数を超えるレコードがある場合は、実行する必要がある nextQueryFilters を含む return コマンドが返されます。 このコマンドは、クエリがすべての結果を返すまでスキャンするたびに取得されます。

要求本文パラメーター

  • "filters": 要求のすべての検索フィルターを使用してオブジェクトをフィルター処理します。詳細については、「 アクティビティ フィルター 」を参照してください。 要求が調整されないようにするには、クエリに制限を含める必要があります (たとえば、最後の日のアクティビティをクエリする、特定のアプリをフィルター処理するなど)。
  • "isScan": ブール値。 スキャン モードを有効にします。
  • "sortDirection": 並べ替えの方向。 可能な値は、ascdesc です。
  • "sortField": アクティビティの並べ替えに使用されるフィールド。 使用可能な値は次のとおりです。
    • date - アクティビティが発生した日付 (既定値)。
    • created - アクティビティが保存されたときの タイムスタンプ
  • "limit": 整数。 スキャン モードでは、500 から 5000 の間 (既定値は 500)。 すべてのデータのスキャンに使用されるイテレーションの数を制御します。

応答パラメーター

  • "data": 返されるデータ。 各イテレーションに含まれるレコードの数は最大で "制限" されます。 プルするレコードが増える場合 (hasNext=true)、最後のいくつかのレコードが削除され、すべてのデータが 1 回だけ一覧表示されます。
  • "hasNext": Boolean。 データに対する別のイテレーションが必要かどうかを示します。
  • "nextQueryFilters": 別のイテレーションが必要な場合は、実行する連続した JSON クエリが含まれます。 これは、次の要求の "filters" パラメーターとして使用します。 "hasNext" パラメーターが False に設定されている場合、すべてのデータを反復処理したので、このパラメーターは見つからないことに注意してください。

次の Python の例では、過去 1 日のすべてのアクティビティを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)))

次の手順

問題が発生した場合は、ここにお問い合わせください。 製品の問題に関するサポートまたはサポートを受けるためには、 サポート チケットを開いてください。