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

G Suite 監査 Source の収集の設定

このページでは、監査 Source を持つ Google Apps でのログ収集を設定して、ログを Sumo Logic に取り込む方法について説明します。

このページでは、監査 Source を持つ G Suite でのログ収集を設定する方法について説明します。リンクをクリックして、トピックに移動してください。

Source の設定について 

イベントを収集する各 Google App について 1 つずつ G Suite アプリケーション監査 Source を設定します。

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

Source Category の設定では、2 通りの方法で設定して使用できます。

すべての Source Category に 1 つの Source Category を使用する。G Suite アプリケーション監査 Source を初めてセットアップするユーザ向けには、各 Google Apps 監査 Source について 1 つの同じ Source Category を使用することをお勧めします。たとえば、google_apps です。

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

  • google_app_admin
  • google_app_calendar
  • google_app_drive
  • google_app_login
  • Google_app_token

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

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

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

Google 認証と承認 

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

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

ステップ 1: Collector の設定

Google Apps Audit 用に Hosted Collector を設定します。

ステップ 2: G Suite アプリケーション監査 Source の設定 

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

G Suite アプリケーション監査 Source を設定するには、次の手順を実行します。

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

G Suite アプリケーション監査の既知の問題 

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

G Suite ライセンスの要件。G Suite ドライブ監査イベントは、G Suite Business、Enterprise、または Drive Enterprise ライセンスを持つユーザが所有するファイルについてのみログに記録されます。

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

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

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

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

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

FER (Field Extraction Rules)

  • Name (名前): "Google" などの関連する名前
  • Scope (範囲): _sourceCategory=google*
  • Parse Expression (parse 式)
    | 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

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