Slack 監査ログを収集する

以下でサポートされています。

このドキュメントでは、Google Cloud Run Functions または AWS Lambda を使用した Amazon S3 のいずれかを使用して、Slack 監査ログを Google Security Operations に取り込む方法について説明します。

Slack 監査ログは、Slack Enterprise Grid 組織全体で発生したセキュリティ関連のイベントの詳細な記録を提供します。監査ログ API を使用すると、コンプライアンスとセキュリティ モニタリングを目的として、ログイン、ファイルのダウンロード、アプリのインストール、管理上の変更などのユーザー アクションをモニタリングできます。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • 組織オーナーまたは管理者権限を持つ Slack Enterprise Grid プラン
  • 次のいずれかに対する特権アクセス権:

    • Google Cloud(オプション 1: Cloud Run functions と Cloud Scheduler の場合)
    • AWS(オプション 2: S3、IAM、Lambda、EventBridge)

Slack の認証情報を収集する

Slack アプリを作成する

Slack Audit Logs API には、auditlogs:read スコープのユーザー OAuth トークンが必要です。このトークンは、ワークスペース レベルではなく、Enterprise Grid 組織レベルでアプリをインストールして取得する必要があります。

  1. Enterprise Grid の組織オーナー アカウントまたは管理者アカウントで Slack 管理コンソールにログインします。
  2. Slack API アプリのページに移動します。
  3. [Create New App] をクリックします。
  4. [ゼロから作成] を選択します。
  5. 次の構成の詳細を指定します。
    • アプリ名: わかりやすい名前を入力します(例: Google SecOps Audit Integration)。
    • アプリを開発するワークスペースを選択: 開発用 Slack ワークスペース(組織内の任意のワークスペース)を選択します。
  6. [アプリを作成] をクリックします。

OAuth スコープを構成する

  1. アプリの設定ページで、左側のナビゲーションから [OAuth & Permissions] を選択します。
  2. [スコープ] セクションまで下にスクロールします。
  3. [User Token Scopes]([Bot Token Scopes] ではない)で、[Add an OAuth Scope] をクリックします。
  4. 次のスコープを追加します。
    • auditlogs:read - このスコープにより、Enterprise Grid 組織の Audit Logs API へのアクセスが可能になります。
  5. [Bot Token Scopes] で、[Add an OAuth Scope] をクリックします。
  6. 次のスコープを追加します。

    • users:read - 組織レベルのアプリのインストールを有効にするために必要なスコープです。

リダイレクト URL を構成する

  1. アプリの設定ページで、左側のナビゲーションから [OAuth & Permissions] を選択します。
  2. [リダイレクト URL] セクションに移動します。
  3. [Add New Redirect URL] をクリックします。
  4. 次の URL を入力します。

    https://slack.com/oauth/v2/authorize
    
  5. [追加] をクリックします。

  6. [Save URLs] をクリックします。

一般公開を有効にする

エンタープライズ組織レベル(ワークスペースだけでなく)でアプリをインストールするには、公開配布を有効にする必要があります。

公開配信が必要な理由

  • Slack では、組織全体の権限を持つアプリで一般公開配信を有効にする必要があります。
  • これにより、個々のワークスペースではなく、組織レベルでインストールできるようになります。
  • この権限がない場合、アプリをインストールできるのは Enterprise Grid 内の 1 つのワークスペースのみです。
  • 一般公開を有効にすると、インストール範囲に関する内部制限が解除されます。

一般公開を有効にする手順は次のとおりです。

  1. アプリの設定ページで、左側のナビゲーションから [配信を管理] を選択します。
  2. [Share Your App with Other Workspaces] で、4 つのセクションすべてに緑色のチェックマークが付いていることを確認します。
    • ハードコードされた情報を削除する
    • 一般公開を有効にする
    • リダイレクト URL を設定する
    • OAuth スコープを追加する
  3. いずれかのセクションに赤い X が表示されている場合は、そのセクションを開いて必要な操作を行います。
  4. [ハードコードされた情報を確認して削除しました] の横にあるチェックボックスをオンにします。
  5. [公開配信を有効にする] をクリックします。

エンタープライズ組織にアプリをインストールする

  1. アプリの設定ページで、左側のナビゲーションから [OAuth & Permissions] を選択します。
  2. [Share Your App with Your Workspace] で、[Sharable URL] をコピーします。
  3. ブラウザに URL を入力します。
  4. 重要: インストール画面の右上にあるプルダウン メニューを確認します。
  5. 個々のワークスペースではなく、エンタープライズ組織にインストールしていることを確認します。
  6. プルダウンにワークスペース名が表示されている場合は、それをクリックして、代わりに Enterprise 組織名を選択します。
  7. リクエストされた権限を確認し、[許可] をクリックします。

認証情報を取得する

承認が完了すると、[OAuth & Permissions] ページにリダイレクトされます。

  1. [OAuth Tokens for Your Workspace] で、[User OAuth Token] を見つけます。
  2. トークンは xoxp- で始まります。
  3. [コピー] をクリックして、このトークンを安全に保存します。

  4. 組織 ID をメモします。

    1. Slack 管理コンソールに移動します。
    2. [設定と権限]> [組織の設定] に移動します。
    3. 組織 ID をコピーします。

権限を確認する

アプリに必要な権限があることを確認するには:

  1. Slack API アプリのページに移動します。
  2. アプリを選択
  3. 左側のナビゲーションで [OAuth & Permissions] を選択します。
  4. [OAuth Tokens for Your Workspace] で、User OAuth Tokenxoxp- で始まる)が表示されていることを確認します。
  5. [スコープ] で、[ユーザー トークン スコープ] に auditlogs:read が表示されていることを確認します。

テスト API へのアクセス

  • 統合に進む前に、トークンをテストします。

    SLACK_TOKEN="xoxp-your-token-here"
    
    curl -H "Authorization: Bearer $SLACK_TOKEN" \
      "https://api.slack.com/audit/v1/logs?limit=1"
    

    成功したレスポンスには、監査ログイベントを含む entries 配列が含まれます。invalid_auth エラーまたは missing_scope エラーが表示された場合は、トークンとスコープを確認します。

オプション 1: Google Cloud Run Functions を使用して Slack 監査ログのエクスポートを構成する

このオプションでは、Google Cloud Run functions と Cloud Scheduler を使用して Slack 監査ログを収集し、Chronicle 取り込みスクリプトを使用して Google SecOps に直接取り込みます。

始める前に(オプション 1)

次の追加の前提条件を満たしていることを確認します。

  • 次の API が有効になっている GCP プロジェクト。
    • Cloud Functions API
    • Cloud Scheduler API
    • Secret Manager API
  • Cloud Functions、Cloud Scheduler ジョブ、Secret Manager のシークレットを作成する権限
  • Google SecOps サービス アカウントの JSON ファイル

Google SecOps サービス アカウントを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイル をダウンロードします。
  4. JSON ファイルを安全に保存します。これは、Google Secret Manager でシークレットとしてアップロードします。

関数コードを準備する

Chronicle ingestion-scripts GitHub リポジトリからデプロイ ファイルをダウンロードします。

  1. slack フォルダから、以下をダウンロードします。
    • .env.yml
    • main.py
    • requirements.txt
  2. リポジトリのルートから、common ディレクトリ全体とそのすべてのファイルをダウンロードします。

    デプロイ ディレクトリの構造は次のようになります。

    deployment_directory/
    ├── common/
       ├── __init__.py
       ├── auth.py
       ├── env_constants.py
       ├── ingest.py
       ├── status.py
       └── utils.py
    ├── .env.yml
    ├── main.py
    └── requirements.txt
    

Google Secret Manager でシークレットを構成する

Cloud Run 関数が安全にアクセスできるように、機密性の高い認証情報を Secret Manager に保存します。

Google SecOps サービス アカウントのシークレットを作成する

  1. GCP Console で、[セキュリティ> Secret Manager] に移動します。
  2. [シークレットの作成] をクリックします。
  3. 次の構成の詳細を指定します。
    • 名前: 「chronicle-service-account」と入力します。
    • シークレット値: Google SecOps サービス アカウントの JSON ファイルの内容全体を入力します。
  4. [シークレットの作成] をクリックします。
  5. シークレットのリソース名をコピーします。書式は次のとおりです。

    projects/PROJECT_ID/secrets/chronicle-service-account/versions/latest
    

Slack トークンのシークレットを作成する

  1. [Secret Manager] ページで、[シークレットを作成] をクリックします。
  2. 次の構成の詳細を指定します。
    • 名前: 「slack-admin-token」と入力します。
    • シークレット値: Slack ユーザー OAuth トークン(xoxp- で始まる)を入力します。
  3. [シークレットの作成] をクリックします。
  4. シークレットのリソース名をコピーします。書式は次のとおりです。

    projects/PROJECT_ID/secrets/slack-admin-token/versions/latest
    

環境変数を構成する

  1. デプロイ ディレクトリで .env.yml ファイルを開き、環境変数を構成します。

    CHRONICLE_CUSTOMER_ID: "<your-chronicle-customer-id>"
    CHRONICLE_REGION: "us"
    CHRONICLE_SERVICE_ACCOUNT: "projects/<PROJECT_ID>/secrets/chronicle-service-account/versions/latest"
    CHRONICLE_NAMESPACE: ""
    POLL_INTERVAL: "5"
    SLACK_ADMIN_TOKEN: "projects/<PROJECT_ID>/secrets/slack-admin-token/versions/latest"
    

    次のように置き換えます。

    • <your-chronicle-customer-id>: Google SecOps のお客様 ID。
    • <PROJECT_ID>: Google Cloud プロジェクト ID。
    • CHRONICLE_REGION: Google SecOps リージョンに設定します。有効な値: usasia-northeast1asia-south1asia-southeast1australia-southeast1europeeurope-west2europe-west3europe-west6europe-west9europe-west12me-central1me-central2me-west1northamerica-northeast2southamerica-east1
    • POLL_INTERVAL: 関数が実行される頻度(分単位)。この期間は、Cloud Scheduler ジョブの間隔と同じにする必要があります。
  2. .env.yml ファイルを保存します。

Cloud Run 関数をデプロイする

  1. Google Cloud コンソールでターミナルまたは Cloud Shell を開きます。デプロイ ディレクトリに移動し、次のコマンドを実行します。

    gcloud functions deploy slack-audit-to-chronicle \
      --entry-point main \
      --trigger-http \
      --runtime python312 \
      --env-vars-file .env.yml \
      --timeout 540s \
      --memory 512MB \
      --service-account <SERVICE_ACCOUNT_EMAIL>
    

    <SERVICE_ACCOUNT_EMAIL> は、Cloud Run 関数で使用するサービス アカウントのメールアドレスに置き換えます。

  2. デプロイが完了するまで待ちます。デプロイが完了したら、出力から関数 URL をメモします。

Cloud Scheduler を設定する

  1. GCP Console で、[Cloud Scheduler] > [ジョブを作成] に移動します。
  2. 次の構成情報を提供してください。

    設定
    名前 slack-audit-scheduler
    リージョン Cloud Run functions をデプロイしたリージョンと同じリージョンを選択します。
    周波数 */5 * * * *(5 分ごと、POLL_INTERVAL 値と一致)
    タイムゾーン タイムゾーンを選択します(UTC を推奨)
  3. [続行] をクリックします。

  4. [実行を構成する] セクションで、次の操作を行います。

    • ターゲット タイプ: [HTTP] を選択します。
    • URL: デプロイ出力から Cloud Run 関数の URL を入力します。
    • HTTP メソッド: [POST] を選択します。
  5. [認証ヘッダー] セクションで、次の操作を行います。

    • [OIDC トークンを追加] を選択します。
    • サービス アカウント: Cloud Run 関数で使用したサービス アカウントと同じアカウントを選択します。
  6. [作成] をクリックします。

スケジュールの頻度のオプション

ログの量とレイテンシの要件に基づいて頻度を選択します。

頻度 CRON 式 ユースケース
5 分おき */5 * * * * 標準(推奨)
15 分ごと */15 * * * * 検索量が普通
1 時間ごと 0 * * * * 音量が小さい

統合をテストする(オプション 1)

  1. Cloud Scheduler コンソールで、ジョブ(slack-audit-scheduler)を見つけます。
  2. [強制実行] をクリックして、ジョブを手動でトリガーします。
  3. 数秒待ちます。
  4. Cloud Functions に移動します。
  5. 関数名(slack-audit-to-chronicle)をクリックします。
  6. [ログ] タブをクリックします。
  7. 関数が正常に実行されたことを確認します。以下のものを探します。

    Retrieving the Slack Audit logs since: YYYY-MM-DDTHH:MM:SSZ
    Processing logs...
    Retrieved X audit logs from the API call
    Logs processed successfully.
    

オプション 2: AWS S3 を使用して Slack 監査ログのエクスポートを構成する

このオプションでは、AWS Lambda を使用して Slack 監査ログを収集し、Amazon S3 に保存してから、ログを取り込むように Google SecOps フィードを構成します。

始める前に(オプション 2)

次の追加の前提条件を満たしていることを確認します。

  • S3 バケット、IAM ユーザー/ロール/ポリシー、Lambda 関数、EventBridge ルールを作成する権限を持つ AWS アカウント。

Amazon S3 バケットを作成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. バケットの名前リージョンを後で参照できるように保存します(例: slack-audit-logs)。

S3 アップロードの IAM ポリシーとロールを構成する

  1. AWS コンソールで、[IAM] > [ポリシー] > [ポリシーの作成] > [JSON] タブに移動します。
  2. 次のポリシーを入力します。別のバケット名を使用した場合は、slack-audit-logs を置き換えます。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::slack-audit-logs/*"
        },
        {
          "Sid": "AllowGetStateObject",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::slack-audit-logs/slack/audit/state.json"
        }
      ]
    }
    
  3. [次へ] をクリックします。

  4. ポリシー名 SlackAuditS3Policy を入力します。

  5. [ポリシーを作成] をクリックします。

  6. [IAM] > [ロール] > [ロールの作成] > [AWS サービス] > [Lambda] に移動します。

  7. 新しく作成したポリシー SlackAuditS3Policy を関連付けます。

  8. ロールに「SlackAuditToS3Role」という名前を付けて、[ロールを作成] をクリックします。

Lambda 関数を作成する

  1. AWS コンソールで、[Lambda] > [Functions] > [Create function] に移動します。
  2. [Author from scratch] をクリックします。
  3. 次の構成情報を提供してください。

    設定
    名前 slack_audit_to_s3
    ランタイム Python 3.13
    アーキテクチャ x86_64
    実行ロール SlackAuditToS3Role
  4. [関数を作成] をクリックします。

  5. 関数を作成したら、[コード] タブを開き、スタブを削除して次のコード(slack_audit_to_s3.py)を入力します。

    #!/usr/bin/env python3
    # Lambda: Pull Slack Audit Logs (Enterprise Grid) to S3 (JSONL format)
    import os, json, time, urllib.parse
    from urllib.request import Request, urlopen
    from urllib.error import HTTPError, URLError
    import boto3
    
    BASE_URL = "https://api.slack.com/audit/v1/logs"
    TOKEN = os.environ["SLACK_AUDIT_TOKEN"]
    BUCKET = os.environ["S3_BUCKET"]
    PREFIX = os.environ.get("S3_PREFIX", "slack/audit/")
    STATE_KEY = os.environ.get("STATE_KEY", "slack/audit/state.json")
    LIMIT = int(os.environ.get("LIMIT", "200"))
    MAX_PAGES = int(os.environ.get("MAX_PAGES", "20"))
    LOOKBACK_SEC = int(os.environ.get("LOOKBACK_SECONDS", "3600"))
    HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60"))
    HTTP_RETRIES = int(os.environ.get("HTTP_RETRIES", "3"))
    RETRY_AFTER_DEFAULT = int(os.environ.get("RETRY_AFTER_DEFAULT", "2"))
    # Optional server-side filters (comma-separated 'action' values)
    ACTIONS = os.environ.get("ACTIONS", "").strip()
    
    s3 = boto3.client("s3")
    
    def _get_state() -> dict:
        try:
            obj = s3.get_object(Bucket=BUCKET, Key=STATE_KEY)
            st = json.loads(obj["Body"].read() or b"{}")
            return {"cursor": st.get("cursor")}
        except Exception:
            return {"cursor": None}
    
    def _put_state(state: dict) -> None:
        body = json.dumps(state, separators=(",", ":")).encode("utf-8")
        s3.put_object(
            Bucket=BUCKET, Key=STATE_KEY, Body=body, ContentType="application/json"
        )
    
    def _http_get(params: dict) -> dict:
        qs = urllib.parse.urlencode(params, doseq=True)
        url = f"{BASE_URL}?{qs}" if qs else BASE_URL
        req = Request(url, method="GET")
        req.add_header("Authorization", f"Bearer {TOKEN}")
        req.add_header("Accept", "application/json")
        attempt = 0
        while True:
            try:
                with urlopen(req, timeout=HTTP_TIMEOUT) as r:
                    return json.loads(r.read().decode("utf-8"))
            except HTTPError as e:
                # Respect Retry-After on 429/5xx
                if e.code in (429, 500, 502, 503, 504) and attempt < HTTP_RETRIES:
                    retry_after = 0
                    try:
                        retry_after = int(
                            e.headers.get("Retry-After", RETRY_AFTER_DEFAULT)
                        )
                    except Exception:
                        retry_after = RETRY_AFTER_DEFAULT
                    time.sleep(max(1, retry_after))
                    attempt += 1
                    continue
                raise
            except URLError:
                if attempt < HTTP_RETRIES:
                    time.sleep(RETRY_AFTER_DEFAULT)
                    attempt += 1
                    continue
                raise
    
    def _write_page(data: dict, page_idx: int) -> str:
        """Extract entries from Slack API response and write as JSONL."""
        entries = data.get("entries") or []
        if not entries:
            return None
        lines = [json.dumps(entry, separators=(",", ":")) for entry in entries]
        body = "\n".join(lines).encode("utf-8")
        ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime())
        key = f"{PREFIX}{ts}-slack-audit-p{page_idx:05d}.json"
        s3.put_object(
            Bucket=BUCKET, Key=key, Body=body, ContentType="application/json"
        )
        return key
    
    def lambda_handler(event=None, context=None):
        state = _get_state()
        cursor = state.get("cursor")
        params = {"limit": LIMIT}
        if ACTIONS:
            params["action"] = [a.strip() for a in ACTIONS.split(",") if a.strip()]
        if cursor:
            params["cursor"] = cursor
        else:
            # First run (or reset): fetch a recent window by time
            params["oldest"] = int(time.time()) - LOOKBACK_SEC
        pages = 0
        total = 0
        last_cursor = None
        while pages < MAX_PAGES:
            data = _http_get(params)
            _write_page(data, pages)
            entries = data.get("entries") or []
            total += len(entries)
            # Cursor for next page
            meta = data.get("response_metadata") or {}
            next_cursor = meta.get("next_cursor") or data.get("next_cursor")
            if next_cursor:
                params = {"limit": LIMIT, "cursor": next_cursor}
                if ACTIONS:
                    params["action"] = [
                        a.strip() for a in ACTIONS.split(",") if a.strip()
                    ]
                last_cursor = next_cursor
                pages += 1
                continue
            break
        if last_cursor:
            _put_state({"cursor": last_cursor})
        return {
            "ok": True,
            "pages": pages + (1 if total or last_cursor else 0),
            "entries": total,
            "cursor": last_cursor,
        }
    
    if __name__ == "__main__":
        print(lambda_handler())
    

Lambda 環境変数を構成する

  1. [構成> 環境変数 > 編集 > 環境変数を追加] に移動します。
  2. 次の環境変数を入力し、実際の値に置き換えます。

    キー 値の例
    SLACK_AUDIT_TOKEN xoxp-...auditlogs:read を含む組織レベルのユーザー トークン)
    S3_BUCKET slack-audit-logs
    S3_PREFIX slack/audit/
    STATE_KEY slack/audit/state.json
    LIMIT 200
    MAX_PAGES 20
    LOOKBACK_SECONDS 3600
    HTTP_TIMEOUT 60
    HTTP_RETRIES 3
    RETRY_AFTER_DEFAULT 2
    ACTIONS (省略可、カンマ区切りのアクション フィルタ)
  3. [保存] をクリックします。

  4. [構成] タブを選択します。[全般設定] パネルで、[編集] をクリックします。

  5. [タイムアウト] を 5 minutes(300 秒)に変更して、[保存] をクリックします。

EventBridge スケジュールを作成する

  1. [Amazon EventBridge] > [Scheduler] > [スケジュールの作成] に移動します。
  2. 次の構成の詳細を指定します。
    • 名前: 「slack-audit-1h」と入力します。
    • 定期的なスケジュール: [レートベースのスケジュール] を選択します。
    • レート式: 「1 hours」と入力します。
    • 柔軟な時間枠: [オフ] を選択します。
  3. [次へ] をクリックします。
  4. [Target] を選択します。
    • ターゲット API: [AWS Lambda 呼び出し] を選択します。
    • Lambda 関数: slack_audit_to_s3 を選択します。
  5. [次へ] をクリックします。
  6. [次へ] をクリックします(省略可能な設定はスキップします)。
  7. 確認して [スケジュールを作成] をクリックします。

省略可: Google SecOps の読み取り専用 IAM ユーザーを作成する

  1. AWS コンソール > IAM > ユーザー > ユーザーを作成 に移動します。
  2. 次の構成の詳細を指定します。
    • ユーザー名: 「secops-reader」と入力します。
    • アクセスの種類: [プログラムによるアクセス] を選択します。
  3. [次へ] をクリックします。
  4. [ポリシーを直接アタッチする] を選択します。
  5. [ポリシーを作成] をクリックします。[JSON] タブで、次のように入力します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::slack-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::slack-audit-logs"
        }
      ]
    }
    
  6. [次へ] をクリックします。

  7. ポリシー名 secops-reader-policy を入力します。

  8. [ポリシーを作成] をクリックします。

  9. ユーザー作成ページに戻り、ポリシー リストを更新して secops-reader-policy を選択します。

  10. [次へ] をクリックします。

  11. [Create user] をクリックします。

  12. 作成したユーザー secops-reader を選択します。

  13. [セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。

  14. [サードパーティ サービス] を選択します。

  15. [次へ] をクリックします。

  16. [アクセスキーを作成] をクリックします。

  17. [Download .csv file] をクリックして、認証情報を保存します。

Slack 監査ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Slack Audit Logs)。
  5. [ソースタイプ] として [Amazon S3 V2] を選択します。
  6. [ログタイプ] として [Slack Audit] を選択します。
  7. [次へ] をクリックします。

    次の入力パラメータの値を指定します。

    • S3 URI: 接頭辞パスを含む S3 バケット URI を入力します。

      s3://slack-audit-logs/slack/audit/
      

      slack-audit-logs は、実際の S3 バケット名に置き換えます。

    • Source deletion option: 必要に応じて削除オプションを選択します。

    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。

    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー(secops-reader IAM ユーザーから)。

    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー(secops-reader IAM ユーザーから)。

    • アセットの名前空間: アセットの名前空間

    • Ingestion labels: このフィードのイベントに適用されるラベル。

  8. [次へ] をクリックします。

  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
action metadata.product_event_type action フィールドから直接マッピングされます
actor.type principal.labels キー actor.type で直接マッピングされます
actor.user.email principal.user.email_addresses 直接マッピングされます。
actor.user.id principal.user.product_object_id 直接マッピングされます。
actor.user.id principal.user.userid 直接マッピングされます。
actor.user.name principal.user.user_display_name 直接マッピングされます。
actor.user.team principal.user.group_identifiers 直接マッピングされます。
context.ip_address principal.ip 直接マッピングされます。
context.location.domain about.resource.attribute.labels キー context.location.domain で直接マッピングされます
context.location.id about.resource.id 直接マッピングされます。
context.location.name about.resource.name 直接マッピングされます。
context.location.name about.resource.attribute.labels キー context.location.name で直接マッピングされます
context.location.type about.resource.resource_subtype 直接マッピングされます。
context.session_id network.session_id 直接マッピングされます。
context.ua network.http.user_agent 直接マッピングされます。
context.ua network.http.parsed_user_agent context.ua フィールドから派生した解析済みユーザー エージェント
country principal.location.country_or_region 直接マッピングされます。
date_create metadata.event_timestamp.seconds エポック タイムスタンプがタイムスタンプ オブジェクトに変換される
details.inviter.email target.user.email_addresses 直接マッピングされます。
details.inviter.id target.user.product_object_id 直接マッピングされます。
details.inviter.name target.user.user_display_name 直接マッピングされます。
details.inviter.team target.user.group_identifiers 直接マッピングされます。
details.reason security_result.description 直接マッピングされます。配列の場合は、カンマで連結されます。
details.type about.resource.attribute.labels キー details.type で直接マッピングされます
details.type security_result.summary 直接マッピングされます。
entity.app.id target.resource.id 直接マッピングされます。
entity.app.name target.resource.name 直接マッピングされます。
entity.channel.id target.resource.id 直接マッピングされます。
entity.channel.name target.resource.name 直接マッピングされます。
entity.channel.privacy target.resource.attribute.labels キー entity.channel.privacy で直接マッピングされます
entity.file.filetype target.resource.attribute.labels キー entity.file.filetype で直接マッピングされます
entity.file.id target.resource.id 直接マッピングされます。
entity.file.name target.resource.name 直接マッピングされます。
entity.file.title target.resource.attribute.labels キー entity.file.title で直接マッピングされます
entity.huddle.date_end about.resource.attribute.labels キー entity.huddle.date_end で直接マッピングされます
entity.huddle.date_start about.resource.attribute.labels キー entity.huddle.date_start で直接マッピングされます
entity.huddle.id about.resource.attribute.labels キー entity.huddle.id で直接マッピングされます
entity.huddle.participants.0 about.resource.attribute.labels キー entity.huddle.participants.0 で直接マッピングされます
entity.huddle.participants.1 about.resource.attribute.labels キー entity.huddle.participants.1 で直接マッピングされます
entity.type target.resource.resource_subtype 直接マッピングされます。
entity.user.email target.user.email_addresses 直接マッピングされます。
entity.user.id target.user.product_object_id 直接マッピングされます。
entity.user.name target.user.user_display_name 直接マッピングされます。
entity.user.team target.user.group_identifiers 直接マッピングされます。
entity.workflow.id target.resource.id 直接マッピングされます。
entity.workflow.name target.resource.name 直接マッピングされます。
id metadata.product_log_id 直接マッピングされます。
ip principal.ip 直接マッピングされます。
user_agent network.http.user_agent 直接マッピングされます。
user_id principal.user.product_object_id 直接マッピングされます。
username principal.user.product_object_id 直接マッピングされます。
metadata.event_type デフォルトは USER_COMMUNICATION です。アクションが user_created の場合は USER_CREATION、アクションが user_login または user_login_failed の場合は USER_LOGIN、アクションが user_logout の場合は USER_LOGOUT、アクションが file_ と一致する場合は USER_RESOURCE_ACCESS、アクションが app_private_public_auth_policy_ と一致する場合は USER_RESOURCE_UPDATE_PERMISSIONS、アクションが preflegal_hold_workflow_channel_user_deactivateduser_reactivatedrole_change_user_channel_ と一致する場合は USER_CHANGE_PERMISSIONS に設定します。
metadata.log_type SLACK_AUDIT にハードコード
metadata.product_name date_create が存在する場合は Enterprise Grid に設定し、それ以外の場合は user_id が存在する場合は Audit Logs に設定します。
metadata.vendor_name Slack にハードコード
extensions.auth.mechanism REMOTE にハードコード
extensions.auth.type アクションに user_login または user_logout が含まれている場合は SSO、それ以外の場合は MACHINE に設定します。
security_result.action デフォルトは ALLOW です。アクションが user_login_failed の場合は BLOCK に設定します。
target.application date_create が存在する場合は Slack に設定し、それ以外の場合は user_id が存在する場合は SLACK に設定します。
details.url_private target.url 変更履歴からマッピング
details.previous_ip_address principal.labels 変更履歴からマッピング
details.previous_ua principal.labels 変更履歴からマッピング

変更履歴

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。