メインコンテンツまでスキップ
Sumo Logic Japanese

G Suite のログの収集

この手順では、G Suite からログを収集して Sumo Logic に取り込む方法について説明します。

ログ タイプ

各 Google App には、アクションを JSON 形式で記録する独自のログがあります。すべてのログの構造はほぼ同じで、ほとんどのログには ID、アクター、IP アドレスがあります。違うのは、アクションが記録される JSON のイベント セクションです。

コレクタの設定

Google Apps Audit 用にホスト型コレクタを設定します。

ソースの設定について

イベントを収集する各 Google App について 1 つずつ G Suite Apps Audit ソースを設定します。

  • Google 管理
  • Google ドライブ
  • Google ログイン
  • Google トークン

ソース カテゴリの設定では、2 通りの方法で設定して使用できます。

すべてのソース カテゴリに 1 つのソース カテゴリを使用する。Google Apps Audit ソースを初めてセットアップするユーザ向けには、各 Google Apps Audit ソースについて 1 つの同じソース カテゴリを使用することをお勧めします。たとえば、google_apps です。

ソースごとに異なるソース カテゴリを使用する。ソースごとに異なるソース カテゴリを使用できますが、ソース カテゴリの命名規則としては、ワイルドカードを適用できる規則を使用することをお勧めします。たとえば、ソースカテゴリに次のような名前を付けておけば、クエリ google_app* を使用してそのすべてを参照することができます。

  • google_app_admin
  • google_app_drive
  • google_app_login
  • Google_app_token

G Suite Apps Audit ソースは、Google Apps Reports API を使用して、ウォッチポイントからすべての監査ログを取得します。次の Google アプリケーションからのアクティビティが Sumo の G Suite App でサポートされています。

  • 管理
  • カレンダー
  • ドライブ
  • ログイン
  • トークン

ソースはアプリごとに 1 つだけ設定する必要があります。つまり、カレンダー監査ログを収集するために 1 つのソースを設定し、トークン監査ログを収集するために別のソースを 1 つ設定することもできます。

Google 認証と承認

このソースでは、Google Apps Reports API との統合に OAuth を使用します。そのため、Google Apps の認証情報が Sumo Logic に保存されることはなく、Sumo Logic から Google Apps アカウントの詳細を確認することはできません。  Sumo Logic は、認証および承認後に生成された OAuth トークンのみを保存します。

Google Apps 監査ソースを作成または変更するときは、Google のアカウントおよび Reports API へのアクセス権を持つユーザの資格情報を使用して Google で認証する必要があります。詳細は、Google の「Reports API: Prerequisites (レポート API: 前提条件)」のドキュメントを参照してください。Google の OAuth 同意フローで、Sumo Logic アプリに Reports API を使用する権限を付与するように求められます。

Google Apps Audit ソースの設定

ホスト型コレクタをセットアップして資格情報を用意したら、ソースを設定するため準備は完了です。モニタリングする各 Google アプリケーションについて以下の手順を実行します。  ソースを設定する前に、上記の「ソース設定について」で説明したソース カテゴリ戦略のいずれかを選択してください。

Google Apps Audit ソースを設定する手順

  1. Google Apps Audit ソースを設定します。
  2. 以下のソース フィールドを設定します。
    1. Name (名前)。(必須) 名前は必須です。 
    2. Description (説明)。省略可能。 
    3. Application (アプリケーション): このソースでデータを収集するアプリケーションを選択します。
    4. Source Category (ソース カテゴリ)。(必須)   
    5. Sign in with Google (Google でサインイン): クリックすると、Google Apps Reports API を使用してウォッチポイントを設定することを Sumo Logic に許可します。[Accept (受け入れる)] をクリックします。
  3. [Save (保存)] をクリックします。 

Google Apps Audit の既知の問題

Google API には、Sumo Logic では変更できない既知の問題がいくつかあります。 

認証トークンの制限。Google では、アプリケーション (Sumo Logic など) に対して、1 つの Google Apps アカウントごとにアクティブ認証トークンが 25 個までに制限されています。Google のドキュメントでは、26 番目のトークンが作成されると最も古いトークンが無効になると記述されています。ただし、テストでは、26 番目のトークンが発行されると、それまでの 25 個のトークンすべてが無効になることがわかりました。この場合は、Sumo Logic ですべての Google Apps Audit ソースを削除して再作成することが唯一の回避策です。

レコードの重複。以下の状況では、重複するログ メッセージが収集される可能性があります。

  • 複雑なイベント。新しいカレンダー エントリなど、複数のサブイベントを含む複雑なイベントのログが記録されると、そのイベントのログを記録する JSON オブジェクトが作成されます。そのオブジェクトには、読み込まれるアクション (ゲストの招待など) ごとにイベントの詳細情報の配列が作成されます。この場合、各サブアクションで重複したイベント ログが作成されることがあります。そのため、3 つのサブアクションを持つイベントが 1 つある場合、まったく同じメッセージ イベント データが 3 つ重複する可能性があります。これは、おそらく Google API のバグによるものです。
  • ウォッチポイントの有効期限。Google API のウォッチポイントは約 1 週間後に期限切れになります。残念ながら、ウォッチポイントの有効期限を更新する方法はありません。Sumo Logic では、各ウォッチポイントの期限切れになる時期をトラッキングし、短い間隔で新しいウォッチポイントを作成し、古いウォッチポイントを削除する必要があります。これにより、同じアプリケーションに 2 つのウォッチポイントが存在する重複期間が短くなり、通常では数秒しか発生しません。この重複した期間では、ログが重複する可能性があり、その両方が収集されます (これは、一部のデータが失われる可能性がある場合よりも、これは望ましい状況です)。

サービスの可用性。ログ記録は Google サービスの可用性に依存します。場合によっては、アプリケーションが一定期間ログの作成を停止することがあります。Sumo Logic では、開発や QA テストでこの問題を確認しました。

これらの制限や既知の問題に関するフィードバックを送る場合は、Google サポートまたは Google アカウントの連絡先に連絡してください。

フィールド抽出ルール

  • Name (名前)。"Google" などの関連する名前
  • Scope (範囲): _sourceCategory=google*
  • Parse Expression (パース式)
    | json "id","actor","events" 
    | json field=actor "email", "profileId"
    | json field=id "applicationName"

ログ メッセージのサンプル

{
   "kind": "admin#reports#activity",
   "id": {
      "time": "2017-02-10T19:14:24.519Z",
      "uniqueQualifier": "-123",
      "applicationName": "token",
      "customerId": "ABC123"
   },
   "etag": "\"xyz\"",
   "actor": {
      "email": "sumo@sumologic.com",
      "profileId": "123456789"
   },
   "events": [
      {
         "name": "authorize",
         "parameters": [
            {
               "name": "client_id",
               "value": "123.apps.googleusercontent.com"
            },
            {
               "name": "app_name",
               "value": "Dialpad"
            },
            {
               "name": "scope",
               "multiValue": [
                  "https://www.googleapis.com/sumo/userinfo.email",
                  "https://www.googleapis.com/sumo/userinfo.profile",
                  "https://www.google.com/sumo/feeds",
                  "https://www.googleapis.com/sumo/sumo.me"
               ]
            }
         ]
      }
   ]
}

クエリのサンプル

カウントで上位 10 件のアプリケーション

_source=google_* token
| json "id","actor", "events"
| json field=actor "email", "profileId"
| json field=id "applicationName"
| where applicationName="token"
| parse regex field=events "\[\{\"name\":\"(?<token_action>.*?)\",\"parameters\"" nodrop
| parse regex field=events "\{\"name\":\"app_name\",\"value\":\"(?<app_name>.*?)\"\}" nodrop
| count by app_name
| top 10 app_name by _count

複数の IP からのログイン

_sourceCategory=google* 
| json "actor","ipAddress"
| json "events"
| json field=actor "email", "profileId"
// Needed because a group by operator is required in dashboards
| count by email, ipAddress
| join (count by ipAddress, email) as t1, (count_distinct(ipAddress) by email) as t2 on t1.email=t2.email 
| where t2__count_distinct >1 
| t1_email as email
| t1_ipAddress as ipAddress
| count by email
| sort by _count desc, email asc

  • この記事は役に立ちましたか?