Slack 監査ログを収集する

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

このドキュメントでは、Google Cloud Run 関数または 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. [新しいアプリを作成] をクリックします。
  4. [From scratch] を選択します。
  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. [ボットトークンのスコープ] で、[OAuth スコープを追加] をクリックします。
  6. 次のスコープを追加します。
    • users:read - 組織レベルでアプリをインストールできるようにします。

Enterprise 組織にアプリをインストールする

Audit Logs API は Enterprise 組織全体のイベントを読み取るため、アプリは単一のワークスペースではなく組織レベルでインストールする必要があります。Slack では、これを行う 2 つの方法が記載されています。どちらも同じ組織レベルのユーザー OAuth トークンを生成します。いずれか 1 つを使用します。

オプション A: アプリの設定からインストールする(組織レベルのアプリ)

これは、Slack のエンタープライズ組織向けのアプリ開発ページのパスです。リダイレクト URL、公開配布、ウェブ サービスは必要ありません。

  1. アプリの設定ページで、左側のナビゲーションから [組織レベルのアプリ] を選択します。
  2. [オプトイン] をクリックします。
  3. 確認プロンプトで [はい、オプトインします] をクリックします。

  4. Enterprise 組織のオーナーとしてログインします。

  5. 左側のナビゲーションで [OAuth と権限] を選択します。

  6. [Install to Organization] をクリックします。

  7. 確認画面でリクエストされた権限を確認し、[許可] をクリックします。

オプション B: 公開配布と共有可能な URL

これは、Slack の Audit Logs API ページのパスです。公開配布を有効にしても、アプリが Slack Marketplace に掲載されるわけではありません。開発ワークスペース外でのインストールのみが許可されます。

  1. アプリの設定ページで、左側のナビゲーションから [OAuth & Permissions] を選択します。
  2. [リダイレクト URL] セクションで、[新しいリダイレクト URL を追加] をクリックし、URL を入力して [追加] をクリックし、[URL を保存] をクリックします。

  3. 左側のナビゲーションから [配布の管理] を選択します。

  4. [Share Your App with Other Workspaces] で、4 つのチェックリスト セクションすべてに緑色のチェックマークが表示されていることを確認します。セクションに赤い X が表示されている場合は、セクションを開いて必要な操作を行います。

  5. [I've reviewed and removed any hard-coded information] チェックボックスをオンにします。

  6. [Activate Public Distribution](公開配信を有効にする)をクリックします。

  7. エンタープライズ組織のオーナーとしてログインします。

  8. [Share Your App with Your Workspace] で、[Sharable URL] をコピーしてブラウザで開きます。

  9. インストール画面で、右上にあるプルダウンを開き、個人のワークスペースではなく、エンタープライズ組織を選択します。

  10. リクエストされた権限を確認し、[許可] をクリックします。

認証情報を取得する

  1. インストールが完了すると、[OAuth と権限] ページに戻ります。
  2. [OAuth トークン] セクションで、[ユーザー OAuth トークン] を見つけます。
  3. トークンは xoxp- で始まります。
  4. [コピー] をクリックし、このトークンを安全に保存します。

    重要: これは、Cloud Run 関数または Lambda 関数の SLACK_ADMIN_TOKEN です。安全に保管してください。Enterprise Grid 組織内のすべての監査ログに対する読み取りアクセス権が付与されます。

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

    1. 組織の URL(例: acmeinc.enterprise.slack.com)を使用して、ウェブブラウザで Slack を開きます。
    2. ページが読み込まれたら、URL を読み取ります。形式は https://app.slack.com/client/EXXXXXXX/CXXXXXXX です。
    3. E で始まる文字列をコピーします。これが組織 ID です。

権限を確認する

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

  1. Slack API アプリのページに移動します。
  2. アプリを選択
  3. 左側のナビゲーションで [OAuth と権限] を選択します。
  4. [OAuth トークン] で、ユーザー OAuth トークン(xoxp- で始まる)が表示されていることを確認します。
  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 Audit Logs を収集し、Google SecOps 取り込みスクリプトを使用して Google SecOps に直接取り込みます。

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

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

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

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

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

関数コードを準備する

Google SecOps 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. Google Cloud コンソールで、[セキュリティ] > [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 リージョンに設定します。有効な値: us、asia-northeast1、asia-south1、asia-southeast1、australia-southeast1、europe、europe-west2、europe-west3、europe-west6、europe-west9、europe-west12、me-central1、me-central2、me-west1、northamerica-northeast2、southamerica-east1。
      • POLL_INTERVAL: 関数が実行される頻度(分単位)。この期間は、Cloud Scheduler ジョブの間隔と同じにする必要があります。
  2. .env.yml ファイルを保存します。

Pub/Sub トピックの作成

Cloud Scheduler は、Pub/Sub トピックを介して Cloud Run 関数をトリガーします。

  1. GCP Console で、[Pub/Sub> トピック] に移動します。
  2. [トピックを作成] をクリックします。
  3. [トピック ID] フィールドに「slack-audit-trigger」と入力します。
  4. [作成] をクリックします。

Cloud Run 関数をデプロイする

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

    gcloud run deploy slack-audit-to-chronicle \
      --source . \
      --function main \
      --base-image google-22/python312 \
      --region <REGION> \
      --service-account <SERVICE_ACCOUNT_EMAIL> \
      --env-vars-file .env.yml \
      --memory 512Mi \
      --timeout 540 \
      --max-instances 1 \
      --no-allow-unauthenticated
    
    • <REGION> はリージョン(us-central1 など)に置き換え、<SERVICE_ACCOUNT_EMAIL> は Cloud Run 関数で使用するサービス アカウントのメールアドレスに置き換えます。
  2. 次のように、関数の Pub/Sub トリガーを作成します。

    gcloud eventarc triggers create slack-audit-trigger \
      --location <REGION> \
      --destination-run-service slack-audit-to-chronicle \
      --destination-run-region <REGION> \
      --event-filters "type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic projects/<PROJECT_ID>/topics/slack-audit-trigger \
      --service-account <SERVICE_ACCOUNT_EMAIL>
    
    • <PROJECT_ID> は、実際の Google Cloud プロジェクト ID に置き換えます。
  3. デプロイが完了するまで待ちます。

Cloud Scheduler を設定する

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

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

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

    • ターゲット タイプ: [Pub/Sub] を選択します。
    • トピック: slack-audit-trigger を選択します。
    • メッセージ本文: 「run」と入力します。
  5. [作成] をクリックします。

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

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

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

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

  1. Cloud Scheduler コンソールで、ジョブ(slack-audit-scheduler)を見つけます。
  2. [強制実行] をクリックして、ジョブを手動でトリガーします。
  3. 数秒待ちます。
  4. Cloud Run に移動します。
  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. [Select Target](ターゲットを選択):
    • Target API: [AWS Lambda Invoke] を選択します。
    • 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. [.csv ファイルをダウンロード] をクリックして、認証情報を保存します。

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

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

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

      ```
      s3://slack-audit-logs/slack/audit/
      ```
      
      Replace `slack-audit-logs` with your actual S3 bucket name.
      
    • Source deletion option: 必要に応じて削除オプションを選択します。

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

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

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

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

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

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

  10. [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、アクションが pref、legal_hold_、workflow_、channel_、user_deactivated、user_reactivated、role_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 に設定します。

変更ログ

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

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