Slack 監査ログを収集する
このガイドでは、Google Cloud Run Functions または AWS Lambda を使用した Amazon S3 のいずれかを使用して、Slack 監査ログを Google Security Operations に取り込む方法について説明します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス。
- Slack Enterprise Grid プランと、組織オーナーまたは管理者権限。
- 次のいずれかに対する特権アクセス権:
- Google Cloud(オプション 1: Cloud Run functions と Cloud Scheduler の場合)、または
- AWS(オプション 2: S3、IAM、Lambda、EventBridge)。
Slack 監査ログの収集の前提条件(アプリ ID、OAuth トークン、組織 ID)
Slack Audit Logs API には、auditlogs:read スコープのユーザー OAuth トークンが必要です。このトークンは、ワークスペース レベルではなく、Enterprise Grid 組織レベルでアプリをインストールして取得する必要があります。
監査ログ用の Slack アプリを作成する
- Enterprise Grid 組織のオーナーまたは管理者アカウントで Slack 管理コンソールにログインします。
- https://api.slack.com/apps にアクセスし、[Create New App > From scratch] をクリックします。
- 次の構成の詳細を入力します。
- アプリ名: わかりやすい名前を入力します(例:
Google SecOps Audit Integration)。 - アプリを開発するワークスペースを選択する: 開発用 Slack ワークスペース(組織内の任意のワークスペース)を選択します。
- アプリ名: わかりやすい名前を入力します(例:
- [アプリを作成] をクリックします。
OAuth スコープを構成する
- 左側のサイドバーで [OAuth & Permissions] に移動します。
- [スコープ] セクションまで下にスクロールします。
- [User Token Scopes]([Bot Token Scopes] ではない)で、[Add an OAuth Scope] をクリックします。
- スコープ
auditlogs:readを追加します。
一般公開を有効にする
- 左側のサイドバーで [Manage Distribution] に移動します。
- [Share Your App with Other Workspaces] で、4 つのセクションすべてに緑色のチェックマークが付いていることを確認します。
- ハードコードされた情報を削除する
- 一般公開を有効にする
- リダイレクト URL を設定する
- OAuth スコープを追加する
- [一般公開の配信を有効にする] をクリックします。
Enterprise Grid 組織にアプリをインストールする
- 左側のサイドバーで [OAuth & Permissions] に移動します。
- [Install to Organization]([Install to Workspace] ではない)をクリックします。
重要: インストール画面の右上にあるプルダウンで、個々のワークスペースではなく、Enterprise 組織にインストールしていることを確認します。
- リクエストされた権限を確認し、[許可] をクリックします。
- 承認が完了すると、[OAuth & Permissions](OAuth と権限)ページにリダイレクトされます。
認証情報を取得する
- [OAuth Tokens for Your Workspace] で、[User OAuth Token] を見つけます。
xoxp-で始まるトークン(例:xoxp-1234567890-0987654321-1234567890-abc123def456)をコピーして安全に保存します。
重要: これは、Lambda 関数または Cloud Run 関数の SLACK_ADMIN_TOKEN です。安全に保管してください。
- 組織 ID をメモします。
- Slack 管理コンソールに移動します。
- [設定と権限]> [組織の設定] に移動します。
- 組織 ID をコピーします。
オプション 1: Google Cloud Run Functions を使用して Slack 監査ログのエクスポートを構成する
このオプションでは、Google Cloud Run Functions と Cloud Scheduler を使用して Slack Audit Logs を収集し、Google SecOps に直接取り込みます。
ディレクトリの設定
- Cloud Run 関数のデプロイ用に、ローカルマシンに新しいディレクトリを作成します。
- Chronicle ingestion-scripts GitHub リポジトリから次のファイルをダウンロードします。
- slack フォルダから、以下をダウンロードします。
.env.ymlmain.pyrequirements.txt
- リポジトリのルートから、common ディレクトリ全体とそのすべてのファイルをダウンロードします。
common/__init__.pycommon/auth.pycommon/env_constants.pycommon/ingest.pycommon/status.pycommon/utils.py
- slack フォルダから、以下をダウンロードします。
- ダウンロードしたすべてのファイルをデプロイ ディレクトリに配置します。
ディレクトリ構造は次のようになります。
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 でシークレットを作成する
- Google Cloud コンソールで、[セキュリティ] > [Secret Manager] に移動します。
- [シークレットの作成] をクリックします。
- Chronicle サービス アカウントについて、次の構成の詳細を指定します。
- 名前: 「
chronicle-service-account」と入力します。 - シークレット値: Google SecOps の取り込み認証 JSON ファイルの内容を貼り付けます。
- 名前: 「
- [シークレットの作成] をクリックします。
- シークレット リソース名を
projects/<PROJECT_ID>/secrets/chronicle-service-account/versions/latestの形式でコピーします。 - [シークレットを作成] をもう一度クリックして、2 つ目のシークレットを作成します。
- Slack トークンの構成の詳細を次のとおりに入力します。
- 名前: 「
slack-admin-token」と入力します。 - シークレット値: Slack ユーザー OAuth トークン(
xoxp-で始まる)を貼り付けます。
- 名前: 「
- [シークレットの作成] をクリックします。
- シークレット リソース名を
projects/<PROJECT_ID>/secrets/slack-admin-token/versions/latestの形式でコピーします。
必要なランタイム環境変数を設定する
- デプロイ ディレクトリにある
.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 ジョブの間隔と同じにする必要があります。
.env.ymlファイルを保存します。
Cloud Run 関数のデプロイ
- Google Cloud コンソールでターミナルまたは Cloud Shell を開きます。
- デプロイ ディレクトリに移動します。
cd /path/to/deployment_directory
- 次のコマンドを実行して、Cloud Run 関数をデプロイします。
gcloud functions deploy slack-audit-to-chronicle \
--entry-point main \
--trigger-http \
--runtime python39 \
--env-vars-file .env.yml \
--timeout 300s \
--memory 512MB \
--service-account <SERVICE_ACCOUNT_EMAIL>
<SERVICE_ACCOUNT_EMAIL> は、Cloud Run 関数で使用するサービス アカウントのメールアドレスに置き換えます。
- デプロイが完了するまで待ちます。
- デプロイが完了したら、出力から関数 URL をメモします。
Cloud Scheduler を設定する
- Google Cloud コンソールで、[Cloud Scheduler] > [ジョブを作成] に移動します。
- 次の構成の詳細を入力します。
- 名前: 「
slack-audit-scheduler」と入力します。 - リージョン: Cloud Run functions の関数をデプロイしたリージョンと同じリージョンを選択します。
- 頻度:
*/5 * * * *と入力します(5 分ごとに実行され、POLL_INTERVAL値と一致します)。 - タイムゾーン: [UTC] を選択します。
- ターゲット タイプ: [HTTP] を選択します。
- URL: デプロイ出力から Cloud Run 関数の URL を入力します。
- HTTP メソッド: [POST] を選択します。
- Auth ヘッダー: [OIDC トークンを追加] を選択します。
- サービス アカウント: Cloud Run functions に使用したサービス アカウントと同じアカウントを選択します。
- 名前: 「
- [作成] をクリックします。
オプション 2: AWS S3 を使用して Slack 監査ログのエクスポートを構成する
このオプションでは、AWS Lambda を使用して Slack 監査ログを収集し、S3 に保存してから、ログを取り込むように Google SecOps フィードを構成します。
Google SecOps 用に AWS S3 バケットと IAM を構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- 後で参照できるように、バケットの名前とリージョンを保存します(例:
slack-audit-logs)。 - IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成した [User] を選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [.csv ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、今後の参照に備えます。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションの [権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
S3 アップロードの IAM ポリシーとロールを構成する
- AWS コンソールで、[IAM] > [ポリシー] > [ポリシーの作成] > [JSON] タブ に移動します。
- 以下のポリシーをコピーして貼り付けます。
- ポリシー JSON(別のバケット名を入力した場合は
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"
}
]
}
- [次へ] をクリックします。
- ポリシー名
SlackAuditS3Policyを入力します。 - [ポリシーを作成] をクリックします。
- [IAM] > [ロール] > [ロールの作成] > [AWS サービス] > [Lambda] に移動します。
- 新しく作成したポリシー
SlackAuditS3Policyを関連付けます。 - ロールに「
SlackAuditToS3Role」という名前を付けて、[ロールを作成] をクリックします。
Lambda 関数を作成する
- AWS コンソールで、[Lambda] > [Functions] > [Create function] に移動します。
- [Author from scratch] をクリックします。
- 次の構成情報を提供してください。
| 設定 | 値 |
|---|---|
| 名前 | slack_audit_to_s3 |
| ランタイム | Python 3.13 |
| アーキテクチャ | x86_64 |
| 実行ロール | SlackAuditToS3Role |
- [関数を作成] をクリックします。
- 関数を作成したら、[コード] タブを開き、スタブを削除して、次のコード(
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"] # org-level user token with auditlogs:read
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")) # Slack recommends <= 200
MAX_PAGES = int(os.environ.get("MAX_PAGES", "20"))
LOOKBACK_SEC = int(os.environ.get("LOOKBACK_SECONDS", "3600")) # First-run window
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), empty means no filter
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
# Re-raise other HTTP errors
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 (one event per line).
Chronicle requires newline-delimited JSON, not a JSON array.
"""
entries = data.get("entries") or []
if not entries:
# No entries to write, skip file creation
return None
# Convert each entry to a single-line JSON string
lines = [json.dumps(entry, separators=(",", ":")) for entry in entries]
# Join with newlines to create JSONL format
body = "\n".join(lines).encode("utf-8")
# Write to S3
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 entries in JSONL format
written_key = _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())
- [構成> 環境変数 > 編集 > 環境変数を追加] に移動します。
- 次の環境変数を入力し、実際の値に置き換えます。
環境変数
| キー | 値の例 |
|---|---|
S3_BUCKET |
slack-audit-logs |
S3_PREFIX |
slack/audit/ |
STATE_KEY |
slack/audit/state.json |
SLACK_AUDIT_TOKEN |
xoxp-***(auditlogs:read を含む組織レベルのユーザー トークン) |
LIMIT |
200 |
MAX_PAGES |
20 |
LOOKBACK_SECONDS |
3600 |
HTTP_TIMEOUT |
60 |
HTTP_RETRIES |
3 |
RETRY_AFTER_DEFAULT |
2 |
ACTIONS |
(省略可、CSV) user_login,app_installed |
- [保存] をクリックします。
- [CONFIGURATION] タブを選択します。
- [全般設定] パネルで、[編集] をクリックします。
- [Timeout] を [5 minutes (300 seconds)] に変更して、[Save] をクリックします。
EventBridge スケジュールを作成する
- [Amazon EventBridge] > [Scheduler] > [スケジュールの作成] に移動します。
- 次の構成の詳細を入力します。
- 名前: 「
slack-audit-1h」と入力します。 - 繰り返しスケジュール: [レートベースのスケジュール] を選択します。
- レート式: 「
1時間」と入力します。 - 柔軟な時間枠: [オフ] を選択します。
- 名前: 「
- [次へ] をクリックします。
- [ターゲット] を選択します。
- ターゲット API: [AWS Lambda 呼び出し] を選択します。
- Lambda 関数:
slack_audit_to_s3を選択します。
- [次へ] をクリックします。
- [次へ] をクリックします(省略可能な設定はスキップします)。
- 確認して [スケジュールを作成] をクリックします。
(省略可)Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する
- AWS コンソール > IAM > ユーザー > ユーザーを作成 に移動します。
- 次の構成の詳細を入力します。
- ユーザー名: 「
secops-reader」と入力します。 - アクセスの種類: [プログラムによるアクセス] を選択します。
- ユーザー名: 「
- [次へ] をクリックします。
- [ポリシーを直接アタッチする] を選択します。
- [ポリシーを作成] をクリックします。
- [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"
}
]
}
- [次へ] をクリックします。
- ポリシー名
secops-reader-policyを入力します。 - [ポリシーを作成] をクリックします。
- ユーザー作成ページに戻り、ポリシー リストを更新して
secops-reader-policyを選択します。 - [次へ] をクリックします。
- [Create user] をクリックします。
- 作成したユーザー
secops-readerを選択します。 - [セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。
- [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- [アクセスキーを作成] をクリックします。
- [Download .csv file] をクリックして、認証情報を保存します。
Slack Audit Logs を取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Slack Audit Logs)。 - [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [Slack Audit] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- S3 URI:
s3://slack-audit-logs/slack/audit/ - Source deletion options: 必要に応じて削除オプションを選択します。
- ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー(
secops-readerから)。 - シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー(
secops-readerから)。 - アセットの名前空間: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- S3 URI:
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
action |
metadata.product_event_type |
未加工ログの action フィールドから直接マッピングされます。 |
actor.type |
principal.labels.value |
actor.type フィールドから直接マッピングされ、キー actor.type が追加されます。 |
actor.user.email |
principal.user.email_addresses |
actor.user.email フィールドから直接マッピングされます。 |
actor.user.id |
principal.user.product_object_id |
actor.user.id フィールドから直接マッピングされます。 |
actor.user.id |
principal.user.userid |
actor.user.id フィールドから直接マッピングされます。 |
actor.user.name |
principal.user.user_display_name |
actor.user.name フィールドから直接マッピングされます。 |
actor.user.team |
principal.user.group_identifiers |
actor.user.team フィールドから直接マッピングされます。 |
context.ip_address |
principal.ip |
context.ip_address フィールドから直接マッピングされます。 |
context.location.domain |
about.resource.attribute.labels.value |
context.location.domain フィールドから直接マッピングされ、キー context.location.domain が追加されます。 |
context.location.id |
about.resource.id |
context.location.id フィールドから直接マッピングされます。 |
context.location.name |
about.resource.name |
context.location.name フィールドから直接マッピングされます。 |
context.location.name |
about.resource.attribute.labels.value |
context.location.name フィールドから直接マッピングされ、キー context.location.name が追加されます。 |
context.location.type |
about.resource.resource_subtype |
context.location.type フィールドから直接マッピングされます。 |
context.session_id |
network.session_id |
context.session_id フィールドから直接マッピングされます。 |
context.ua |
network.http.user_agent |
context.ua フィールドから直接マッピングされます。 |
context.ua |
network.http.parsed_user_agent |
parseduseragent フィルタを使用して context.ua フィールドから取得した、解析済みのユーザー エージェント情報。 |
country |
principal.location.country_or_region |
country フィールドから直接マッピングされます。 |
date_create |
metadata.event_timestamp.seconds |
date_create フィールドのエポック タイムスタンプがタイムスタンプ オブジェクトに変換されます。 |
details.inviter.email |
target.user.email_addresses |
details.inviter.email フィールドから直接マッピングされます。 |
details.inviter.id |
target.user.product_object_id |
details.inviter.id フィールドから直接マッピングされます。 |
details.inviter.name |
target.user.user_display_name |
details.inviter.name フィールドから直接マッピングされます。 |
details.inviter.team |
target.user.group_identifiers |
details.inviter.team フィールドから直接マッピングされます。 |
details.reason |
security_result.description |
details.reason フィールドから直接マッピングされます。配列の場合は、カンマで連結されます。 |
details.type |
about.resource.attribute.labels.value |
details.type フィールドから直接マッピングされ、キー details.type が追加されます。 |
details.type |
security_result.summary |
details.type フィールドから直接マッピングされます。 |
entity.app.id |
target.resource.id |
entity.app.id フィールドから直接マッピングされます。 |
entity.app.name |
target.resource.name |
entity.app.name フィールドから直接マッピングされます。 |
entity.channel.id |
target.resource.id |
entity.channel.id フィールドから直接マッピングされます。 |
entity.channel.name |
target.resource.name |
entity.channel.name フィールドから直接マッピングされます。 |
entity.channel.privacy |
target.resource.attribute.labels.value |
entity.channel.privacy フィールドから直接マッピングされ、キー entity.channel.privacy が追加されます。 |
entity.file.filetype |
target.resource.attribute.labels.value |
entity.file.filetype フィールドから直接マッピングされ、キー entity.file.filetype が追加されます。 |
entity.file.id |
target.resource.id |
entity.file.id フィールドから直接マッピングされます。 |
entity.file.name |
target.resource.name |
entity.file.name フィールドから直接マッピングされます。 |
entity.file.title |
target.resource.attribute.labels.value |
entity.file.title フィールドから直接マッピングされ、キー entity.file.title が追加されます。 |
entity.huddle.date_end |
about.resource.attribute.labels.value |
entity.huddle.date_end フィールドから直接マッピングされ、キー entity.huddle.date_end が追加されます。 |
entity.huddle.date_start |
about.resource.attribute.labels.value |
entity.huddle.date_start フィールドから直接マッピングされ、キー entity.huddle.date_start が追加されます。 |
entity.huddle.id |
about.resource.attribute.labels.value |
entity.huddle.id フィールドから直接マッピングされ、キー entity.huddle.id が追加されます。 |
entity.huddle.participants.0 |
about.resource.attribute.labels.value |
entity.huddle.participants.0 フィールドから直接マッピングされ、キー entity.huddle.participants.0 が追加されます。 |
entity.huddle.participants.1 |
about.resource.attribute.labels.value |
entity.huddle.participants.1 フィールドから直接マッピングされ、キー entity.huddle.participants.1 が追加されます。 |
entity.type |
target.resource.resource_subtype |
entity.type フィールドから直接マッピングされます。 |
entity.user.email |
target.user.email_addresses |
entity.user.email フィールドから直接マッピングされます。 |
entity.user.id |
target.user.product_object_id |
entity.user.id フィールドから直接マッピングされます。 |
entity.user.name |
target.user.user_display_name |
entity.user.name フィールドから直接マッピングされます。 |
entity.user.team |
target.user.group_identifiers |
entity.user.team フィールドから直接マッピングされます。 |
entity.workflow.id |
target.resource.id |
entity.workflow.id フィールドから直接マッピングされます。 |
entity.workflow.name |
target.resource.name |
entity.workflow.name フィールドから直接マッピングされます。 |
id |
metadata.product_log_id |
id フィールドから直接マッピングされます。 |
ip |
principal.ip |
ip フィールドから直接マッピングされます。action フィールドに基づくロジックによって決定されます。デフォルトは USER_COMMUNICATION ですが、action の値に基づいて USER_CREATION、USER_LOGIN、USER_LOGOUT、USER_RESOURCE_ACCESS、USER_RESOURCE_UPDATE_PERMISSIONS、USER_CHANGE_PERMISSIONS などの他の値に変更されます。「SLACK_AUDIT」にハードコードされています。date_create が存在する場合は「Enterprise Grid」に設定し、存在しない場合は user_id が存在すれば「監査ログ」に設定します。「Slack」にハードコードされます。「REMOTE」にハードコードされます。action に「user_login」または「user_logout」が含まれている場合は、「SSO」に設定されます。それ以外の場合は、「MACHINE」に設定されます。記載の例ではマッピングされていません。デフォルトは「ALLOW」ですが、action が「user_login_failed」の場合は「BLOCK」に設定されます。date_create が存在する場合は「Slack」に設定され、それ以外の場合は user_id が存在する場合は「SLACK」に設定されます。 |
user_agent |
network.http.user_agent |
user_agent フィールドから直接マッピングされます。 |
user_id |
principal.user.product_object_id |
user_id フィールドから直接マッピングされます。 |
username |
principal.user.product_object_id |
username フィールドから直接マッピングされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。