Atlassian Confluence のログを収集する
このドキュメントでは、Atlassian Confluence ログを Google Security Operations に取り込む方法について説明します。パーサーは、まず Atlassian Confluence ログ用に設計された正規表現(grok パターン)を使用して、未加工のログ メッセージからフィールドを抽出します。grok 解析が失敗した場合、またはログが JSON 形式の場合、コードはメッセージを JSON として解析しようとします。最後に、抽出されたフィールドは Google SecOps UDM スキーマにマッピングされ、追加のコンテキストで拡充されます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- 監査ログへのアクセス権を持つ Atlassian Confluence Cloud アカウント、または管理者権限を持つ Confluence Data Center/Server
- AWS ベースの方法の場合: AWS(S3、IAM、Lambda、EventBridge)への特権アクセス
- Bindplane メソッドの場合: Windows 2016 以降、または
systemdを使用する Linux ホスト
統合オプションの概要
このガイドでは、2 つの統合パスについて説明します。
- オプション 1: BindPlane + Syslog 経由の Confluence Data Center/Server
- オプション 2: AWS Lambda + S3 経由の Confluence Cloud 監査ログ(JSON 形式)
Confluence のデプロイタイプとインフラストラクチャに最適なオプションを選択します。
オプション 1: Bindplane + Syslog 経由の Confluence Data Center/Server
このオプションは、syslog 経由でログを Bindplane エージェントに送信するように Confluence Data Center または Server を構成します。Bindplane エージェントは、ログを Google SecOps に転送します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルにアクセスします。
config.yamlファイルを見つけます。通常、Linux では/etc/bindplane-agent/ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano、vi、メモ帳など)を使用してファイルを開きます。
config.yamlファイルを次のように編集します。receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID customer_id: YOUR_CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com log_type: 'ATLASSIAN_CONFLUENCE' raw_log_field: body ingestion_labels: service: pipelines: logs/confluence: receivers: - udplog exporters: - chronicle/chronicle_w_labels- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<YOUR_CUSTOMER_ID_HERE>は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.jsonの値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agentWindows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Confluence Data Center/Server で Syslog 転送を構成する
オプション A: Log4j SyslogAppender を構成する(推奨)
- SSH または RDP を使用して Confluence サーバーにログインします。
- Log4j 構成ファイルを見つけます。
- Log4j2 の場合:
<confluence-install>/confluence/WEB-INF/classes/log4j2.xml
- Log4j2 の場合:
構成ファイルを編集して SyslogAppender を追加します。
<Configuration> <Appenders> <!-- Existing appenders --> <Syslog name="SyslogAppender" host="BINDPLANE_AGENT_IP" port="514" protocol="UDP" facility="LOCAL0" format="RFC5424"> <PatternLayout pattern="%d{ISO8601} %p [%t] [%c{1}] %m%n"/> </Syslog> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="SyslogAppender"/> <!-- Other appender refs --> </Root> <!-- Audit logger --> <Logger name="com.atlassian.confluence.event.events.security.AuditEvent" level="info" additivity="false"> <AppenderRef ref="SyslogAppender"/> </Logger> </Loggers> </Configuration>BINDPLANE_AGENT_IPは、BindPlane エージェントの IP アドレスに置き換えます。
Confluence を再起動して変更を適用します。
sudo systemctl restart confluence
オプション B: ローカルログファイルを転送するように rsyslog を構成する
- ファイルをログに書き込むように Confluence を構成します(デフォルトの動作)。
rsyslog が存在しない場合はインストールします。
sudo apt-get install rsyslog # Debian/Ubuntu sudo yum install rsyslog # RHEL/CentOSrsyslog 構成ファイル
/etc/rsyslog.d/confluence.confを作成します。# Forward Confluence logs to BindPlane $ModLoad imfile # Application logs $InputFileName /opt/atlassian/confluence/logs/atlassian-confluence.log $InputFileTag confluence-app: $InputFileStateFile stat-confluence-app $InputFileSeverity info $InputFileFacility local0 $InputRunFileMonitor # Audit logs (JSON format in DC/Server) $InputFileName /var/atlassian/application-data/confluence/log/audit/*.json $InputFileTag confluence-audit: $InputFileStateFile stat-confluence-audit $InputFileSeverity info $InputFileFacility local1 $InputRunFileMonitor # Forward to BindPlane agent *.* @@BINDPLANE_AGENT_IP:514BINDPLANE_AGENT_IPは、Bindplane エージェントの IP アドレスに置き換えます。- Confluence のインストールに基づいてログファイルのパスを調整します。
- 通常、アプリケーション ログは
<confluence-install>/logs/または<local-home>/logs/です。 - 監査ログ:
<confluence-home>/log/audit/*.json
- 通常、アプリケーション ログは
rsyslog を再起動します。
sudo systemctl restart rsyslog
オプション 2: AWS Lambda + S3 経由の Confluence Cloud 監査ログ
Confluence Cloud API 認証情報を収集する
- Atlassian アカウントにログインします。
- https://id.atlassian.com/manage-profile/security/api-tokens にアクセスします。
- [Create API Token] をクリックします。
- トークンのラベルを入力します(例:
Google Security Operations Integration)。 - [作成] をクリックします。
- API トークンをコピーして安全に保存します。
- Confluence Cloud サイトの URL(例:
https://yoursite.atlassian.net)をメモします。 - Atlassian アカウントのメールアドレス(認証に使用)をメモします。
Google SecOps 用に AWS S3 バケットと IAM を構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- 後で参照できるように、バケットの名前とリージョンを保存します(例:
confluence-audit-logs)。 - IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] で [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [CSV ファイルをダウンロード] をクリックし、[アクセスキー] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで [権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
S3 アップロードの IAM ポリシーとロールを構成する
- AWS コンソールで、[IAM] > [ポリシー] > [ポリシーの作成] > [JSON] タブに移動します。
次のポリシーを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObjects", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::confluence-audit-logs/*" }, { "Sid": "AllowGetStateObject", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confluence-audit-logs/confluence-audit/state.json" } ] }- 別のバケット名を入力した場合は、
confluence-audit-logsを置き換えます。
- 別のバケット名を入力した場合は、
[次へ] > [ポリシーを作成] をクリックします。
ポリシーに
ConfluenceAuditToS3Policyという名前を付けます。[IAM] > [ロール] > [ロールの作成] > [AWS サービス] > [Lambda] に移動します。
新しく作成したポリシー
ConfluenceAuditToS3Policyを関連付けます。ロールに「
ConfluenceAuditLambdaRole」という名前を付けて、[ロールを作成] をクリックします。
Lambda 関数を作成する
- AWS コンソールで、[Lambda] > [Functions] に移動します。
- [関数を作成> 一から作成] をクリックします。
次の構成情報を提供してください。
設定 値 名前 ConfluenceAuditToS3ランタイム Python 3.13 アーキテクチャ x86_64 実行ロール ConfluenceAuditLambdaRole関数を作成したら、[コード] タブを開き、スタブを削除して次のコードを入力します。
import json import os import boto3 from datetime import datetime, timezone, timedelta from urllib import request, parse, error from base64 import b64encode # Environment variables S3_BUCKET = os.environ['S3_BUCKET'] S3_PREFIX = os.environ.get('S3_PREFIX', 'confluence-audit/') STATE_KEY = os.environ.get('STATE_KEY', 'confluence-audit/state.json') CONFLUENCE_URL = os.environ['CONFLUENCE_URL'] # e.g., https://yoursite.atlassian.net CONFLUENCE_EMAIL = os.environ['CONFLUENCE_EMAIL'] CONFLUENCE_API_TOKEN = os.environ['CONFLUENCE_API_TOKEN'] MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '1000')) s3_client = boto3.client('s3') def lambda_handler(event, context): """Fetch Confluence Cloud audit logs and write to S3.""" # Read last execution state start_date = get_last_execution_time() end_date = datetime.now(timezone.utc) print(f"Fetching audit logs from {start_date} to {end_date}") # Fetch audit records records = fetch_audit_logs(start_date, end_date) if not records: print("No new audit records found.") save_state(end_date) return {'statusCode': 200, 'body': 'No new records'} # Write to S3 timestamp = end_date.strftime('%Y%m%d_%H%M%S') object_key = f"{S3_PREFIX}audit_{timestamp}.json" s3_client.put_object( Bucket=S3_BUCKET, Key=object_key, Body='\n'.join(json.dumps(record) for record in records), ContentType='application/json' ) print(f"Wrote {len(records)} records to s3://{S3_BUCKET}/{object_key}") # Update state save_state(end_date) return { 'statusCode': 200, 'body': f"Processed {len(records)} records" } def get_last_execution_time(): """Retrieve the last execution timestamp from S3 state file.""" try: response = s3_client.get_object(Bucket=S3_BUCKET, Key=STATE_KEY) state = json.loads(response['Body'].read()) return datetime.fromisoformat(state['last_execution']) except s3_client.exceptions.NoSuchKey: # First run: fetch logs from last 24 hours return datetime.now(timezone.utc) - timedelta(hours=24) except Exception as e: print(f"Error reading state: {e}") return datetime.now(timezone.utc) - timedelta(hours=24) def save_state(execution_time): """Save the execution timestamp to S3 state file.""" state = {'last_execution': execution_time.isoformat()} s3_client.put_object( Bucket=S3_BUCKET, Key=STATE_KEY, Body=json.dumps(state), ContentType='application/json' ) def fetch_audit_logs(start_date, end_date): """Fetch audit logs from Confluence Cloud REST API.""" records = [] start_param = int(start_date.timestamp() * 1000) # milliseconds end_param = int(end_date.timestamp() * 1000) # Build authentication header auth_string = f"{CONFLUENCE_EMAIL}:{CONFLUENCE_API_TOKEN}" auth_bytes = auth_string.encode('ascii') auth_b64 = b64encode(auth_bytes).decode('ascii') headers = { 'Authorization': f'Basic {auth_b64}', 'Accept': 'application/json' } # Confluence Cloud Audit API endpoint url = f"{CONFLUENCE_URL}/wiki/rest/api/audit?startDate={start_param}&endDate={end_param}&limit=1000" try: req = request.Request(url, headers=headers) with request.urlopen(req) as response: data = json.loads(response.read()) records = data.get('results', []) print(f"Retrieved {len(records)} audit records") except error.HTTPError as e: print(f"HTTP Error: {e.code} - {e.reason}") print(e.read().decode()) except Exception as e: print(f"Error fetching audit logs: {e}") return records[:MAX_RECORDS][構成] > [環境変数] に移動します。
[編集>新しい環境変数を追加] をクリックします。
次の環境変数を入力し、実際の値に置き換えます。
キー 値の例 S3_BUCKETconfluence-audit-logsS3_PREFIXconfluence-audit/STATE_KEYconfluence-audit/state.jsonCONFLUENCE_URLhttps://yoursite.atlassian.netCONFLUENCE_EMAILyour-email@example.comCONFLUENCE_API_TOKENyour-api-token-hereMAX_RECORDS1000[CONFIGURATION] タブを選択します。
[全般設定] パネルで、[編集] をクリックします。
[Timeout] を [5 minutes (300 seconds)] に変更し、[Save] をクリックします。
EventBridge スケジュールを作成する
- [Amazon EventBridge] > [Scheduler] > [スケジュールの作成] に移動します。
- 次の構成の詳細を入力します。
- 定期的なスケジュール: レート(
1 hour)。 - ターゲット: Lambda 関数
ConfluenceAuditToS3。 - 名前:
ConfluenceAuditToS3-1h
- 定期的なスケジュール: レート(
- [スケジュールを作成] をクリックします。
省略可: Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する
- AWS コンソール > IAM > [Users] に移動します。
- [ユーザーを追加] をクリックします。
- 次の構成の詳細を入力します。
- ユーザー: 「
secops-confluence-reader」と入力します。 - アクセスの種類: [アクセスキー - プログラムによるアクセス] を選択します。
- ユーザー: 「
- [次へ] をクリックします。
- [ポリシーを直接アタッチする>ポリシーを作成] をクリックします。
JSON エディタで、次のポリシーを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::confluence-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::confluence-audit-logs" } ] }名前を
secops-reader-policyに設定します。[Create policy] > を検索して選択 > [Next] > [Add permissions] に移動します。
[セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。
CSV をダウンロードします(これらの値はフィードに入力されます)。
Confluence のログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Confluence Cloud Audit Logs)。 - [ソースタイプ] として [Amazon S3 V2] を選択します。
- [Log type] で [Atlassian Confluence] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- S3 URI:
s3://confluence-audit-logs/confluence-audit/ - Source deletion options: 必要に応じて削除オプションを選択します。
- ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
- シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
- アセットの名前空間: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- S3 URI:
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| エージェント | read_only_udm.network.http.user_agent | 「agent」フィールドから取得された値。 |
| app_protocol | read_only_udm.network.application_protocol | 「app_protocol」フィールドから派生します。「app_protocol」に「HTTPS」、「HTTP」、「SSH」、「RDP」が含まれている場合は、対応するプロトコルが使用されます。それ以外の場合は、デフォルトで「UNKNOWN_APPLICATION_PROTOCOL」になります。 |
| app_protocol | read_only_udm.network.application_protocol_version | 「app_protocol」フィールドから取得された値。 |
| auditType.action | read_only_udm.security_result.action | 「auditType.action」フィールドから派生します。「auditType.action」に「successful」が含まれている場合、値は「ALLOW」に設定されます。「restricted」が含まれている場合、値は「BLOCK」に設定されます。 |
| auditType.action | read_only_udm.security_result.summary | 「auditType」が空でなく、「auditType_area」が「SECURITY」の場合、「auditType.action」フィールドから取得された値。 |
| auditType.actionI18nKey | read_only_udm.metadata.product_event_type | 「auditType」が空でない場合、「auditType.actionI18nKey」フィールドから取得された値。 |
| auditType.area | read_only_udm.security_result.detection_fields.value | 「auditType.area」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType area」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。 |
| auditType.category | read_only_udm.security_result.category_details | 「auditType」が空でない場合、「auditType.category」フィールドから取得された値。 |
| auditType.categoryI18nKey | read_only_udm.security_result.detection_fields.value | 「auditType.categoryI18nKey」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType categoryI18nKey」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。 |
| auditType.level | read_only_udm.security_result.detection_fields.value | 「auditType.level」フィールドから取得された値が、検出フィールドの「value」フィールドに割り当てられます。この検出フィールドの「key」フィールドは「auditType level」に設定されています。このマッピングは、「auditType」が空でない場合に実行されます。 |
| author.displayName | read_only_udm.principal.user.user_display_name | 「author.displayName」フィールドから取得された値。 |
| author.externalCollaborator | read_only_udm.security_result.about.resource.attribute.labels.value | 「author.externalCollaborator」フィールドから取得された値が、「key」フィールドが「externalCollaborator」に設定されたラベルの「value」フィールドに割り当てられます。 |
| author.id | read_only_udm.principal.user.userid | 「author.type」が「user」で、「principal_user_present」が「false」の場合、「author.id」フィールドから取得された値。 |
| author.isExternalCollaborator | read_only_udm.security_result.about.resource.attribute.labels.value | 「author.isExternalCollaborator」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「isExternalCollaborator」に設定されています。 |
| author.name | read_only_udm.principal.user.user_display_name | 「author.type」が「user」で、「principal_user_present」が「false」の場合、「author.name」フィールドから取得された値。 |
| bytes_in | read_only_udm.network.received_bytes | 「bytes_in」フィールドに数字が含まれている場合は、その値が使用されます。それ以外の場合は、デフォルトの 0 になります。 |
| category | read_only_udm.security_result.category_details | 「category」フィールドから取得された値。 |
| changedValues | read_only_udm.principal.resource.attribute.labels | changedValues の各要素を反復処理し、キーが changedValue[index][key] のようなラベルと、changedValues 配列の対応する値から値を作成します。 |
| 作成日 | read_only_udm.metadata.event_timestamp | 「creationDate」フィールドから取得された値。UNIX または UNIX_MS タイムスタンプとして解析されます。 |
| extraAttributes | read_only_udm.principal.resource.attribute.labels | 「extraAttributes」の各要素を反復処理し、「name」フィールドと「nameI18nKey」フィールドに基づいてキーを持つラベルと、対応する「value」フィールドの値を作成します。 |
| http_verb | read_only_udm.network.http.method | 「http_verb」フィールドから取得された値。 |
| ip | read_only_udm.target.ip | 「ip」フィールドから取得された値。 |
| principal_host | read_only_udm.principal.hostname | 「principal_host」フィールドから取得された値。 |
| referral_url | read_only_udm.network.http.referral_url | 「referral_url」フィールドから取得された値。 |
| remoteAddress | read_only_udm.principal.ip | 「remoteAddress」フィールドから取得された値。IP アドレスとして解析されます。 |
| response_code | read_only_udm.network.http.response_code | 「response_code」フィールドから取得された値。 |
| session_duration | read_only_udm.additional.fields.value.string_value | 「session_duration」フィールドから取得した値が、ラベルの「string_value」フィールドに割り当てられます。このラベルの「key」フィールドは「Session Duration」に設定されています。 |
| ソース | read_only_udm.principal.ip | 「source」フィールドから取得された値。IP アドレスとして解析されます。 |
| src_ip | read_only_udm.principal.ip | 「remoteAddress」が空の場合、「src_ip」フィールドから取得された値。 |
| 概要 | read_only_udm.security_result.summary | 「summary」フィールドから取得された値。 |
| sysAdmin | read_only_udm.security_result.about.resource.attribute.labels.value | 「sysAdmin」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「sysAdmin」に設定されています。 |
| superAdmin | read_only_udm.security_result.about.resource.attribute.labels.value | 「superAdmin」フィールドから取得された値が、ラベルの「value」フィールドに割り当てられます。このラベルの「key」フィールドは「superAdmin」に設定されています。 |
| target_url | read_only_udm.target.url | 「target_url」フィールドから取得された値。 |
| timestamp | read_only_udm.metadata.event_timestamp | 「timestamp」フィールドから取得された値。日付と時刻の文字列として解析されます。 |
| user_id | read_only_udm.principal.user.userid | 「user_id」フィールドから取得された値。 |
| read_only_udm.metadata.event_type | このフィールドの値は一連のチェックによって決定され、デフォルトは「GENERIC_EVENT」です。「principal_host」、「user_id」、「has_principal」、「author.type」などの他のフィールドの有無と内容に基づいて、「NETWORK_HTTP」、「USER_UNCATEGORIZED」、「STATUS_UPDATE」などの特定の値に設定されます。 | |
| read_only_udm.metadata.vendor_name | 「ATLASSIAN」に設定します。 | |
| read_only_udm.metadata.product_name | 「CONFLUENCE」に設定します。 | |
| read_only_udm.metadata.log_type | 「ATLASSIAN_CONFLUENCE」に設定します。 | |
| read_only_udm.principal.user.user_display_name | このフィールドの値は、コンテキストに応じて「author.displayName」または「affectedObject.name」のいずれかから取得できます。 | |
| read_only_udm.target.process.pid | このフィールドの値は、コンテキストに応じて「principal_host」または「pid」のいずれかから取得できます。 | |
| read_only_udm.principal.resource.attribute.labels | このフィールドには、「affectedObjects」、「changedValues」、「extraAttributes」などのフィールドから派生したさまざまなラベルが入力されます。これらのラベルのキーと値は、これらのフィールドの特定のコンテンツに基づいて動的に生成されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。