DomainTools Iris Investigate の結果を収集する
このドキュメントでは、Amazon S3 を使用して DomainTools Iris Investigate の結果を Google Security Operations に取り込む方法について説明します。パーサーは、DomainTools の Iris API からの未加工の JSON データを、Google SecOps の Unified Data Model(UDM)に準拠した構造化形式に変換します。ドメインの詳細、連絡先情報、セキュリティ リスク、SSL 証明書、その他の関連属性に関する情報を抽出し、対応する UDM フィールドにマッピングして、一貫した分析と脅威インテリジェンスを実現します。
始める前に
- Google SecOps インスタンス
- DomainTools エンタープライズ アカウントへの特権アクセス(Iris Investigate への API アクセス)
- AWS(S3、IAM、Lambda、EventBridge)への特権アクセス
DomainTools API キーとエンドポイントを取得する
- DomainTools API ダッシュボードにログインします(API キーをリセットできるのは API 所有者アカウントのみです)。
- [My Account] セクションで、[Account Summary] タブにある [View API Dashboard] リンクを選択します。
- [API Username] セクションに移動して、ユーザー名を取得します。
- 同じタブで、[API キー] を見つけます。
- キーをコピーして安全な場所に保存します。
- 新しいキーが必要な場合は、[API キーをリセット] を選択します。 
- Iris Investigate エンドポイント( - https://api.domaintools.com/v1/iris-investigate/)をメモします。
Google SecOps 用に AWS S3 バケットと IAM を構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- 後で参照できるように、バケットの名前とリージョンを保存します(例: domaintools-iris)。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] として [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、後で使用できるようにします。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで、[権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索して選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
S3 アップロードの IAM ポリシーとロールを構成する
- AWS コンソールで、[IAM] > [ポリシー] > [ポリシーの作成] > [JSON] タブに移動します。
- 次のポリシーを入力します。 - { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutDomainToolsIrisObjects", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::domaintools-iris/*" } ] }- 別のバケット名を入力した場合は、domaintools-irisを置き換えます。
 
- 別のバケット名を入力した場合は、
- [次へ] > [ポリシーを作成] をクリックします。 
- [IAM] > [ロール] > [ロールの作成] > [AWS サービス] > [Lambda] に移動します。 
- 新しく作成したポリシーを関連付けます。 
- ロールに「 - WriteDomainToolsIrisToS3Role」という名前を付けて、[ロールを作成] をクリックします。
Lambda 関数を作成する
- AWS コンソールで、[Lambda] > [Functions] > [Create function] に移動します。
- [Author from scratch] をクリックします。
- 次の構成情報を提供してください。 - 設定 - 値 - 名前 - domaintools_iris_to_s3- ランタイム - Python 3.13 - アーキテクチャ - x86_64 - 実行ロール - WriteDomainToolsIrisToS3Role
- 関数を作成したら、[コード] タブを開き、スタブを削除して次のコード( - domaintools_iris_to_s3.py)を入力します。- #!/usr/bin/env python3 # Lambda: Pull DomainTools Iris Investigate results to S3 (no transform) import os, json, time, urllib.parse from urllib.request import Request, urlopen from urllib.error import HTTPError import boto3 # --- Environment --- S3_BUCKET = os.environ["S3_BUCKET"].strip() S3_PREFIX = os.environ.get("S3_PREFIX", "domaintools/iris/").strip() STATE_KEY = os.environ.get("STATE_KEY", "domaintools/iris/state.json").strip() DT_API_KEY = os.environ["DT_API_KEY"].strip() DT_API_SECRET= os.environ.get("DT_API_SECRET", "").strip() # optional if your account uses key-only auth USE_MODE = os.environ.get("USE_MODE", "HASH").strip().upper() # HASH | DOMAINS | QUERY SEARCH_HASHES= [h.strip() for h in os.environ.get("SEARCH_HASHES", "").split(";") if h.strip()] DOMAINS = [d.strip() for d in os.environ.get("DOMAINS", "").split(";") if d.strip()] QUERY_LIST = [q.strip() for q in os.environ.get("QUERY_LIST", "").split(";") if q.strip()] PAGE_SIZE = int(os.environ.get("PAGE_SIZE", "500")) MAX_PAGES = int(os.environ.get("MAX_PAGES", "20")) USE_NEXT = os.environ.get("USE_NEXT", "true").lower() == "true" HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60")) RETRIES = int(os.environ.get("HTTP_RETRIES", "2")) BASE_URL = "https://api.domaintools.com/v1/iris-investigate/" HDRS = { "X-Api-Key": DT_API_KEY, "Accept": "application/json", } if DT_API_SECRET: HDRS["X-Api-Secret"] = DT_API_SECRET s3 = boto3.client("s3") # --- HTTP helpers --- def _http_get(url: str) -> dict: req = Request(url, method="GET") for k, v in HDRS.items(): req.add_header(k, v) 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: if e.code in (429, 500, 502, 503, 504) and attempt < RETRIES: delay = int(e.headers.get("Retry-After", "2")) time.sleep(max(1, delay)) attempt += 1 continue raise def _build_url(params: dict) -> str: return BASE_URL + ("?" + urllib.parse.urlencode(params, doseq=True) if params else "") # --- S3 helpers --- def _write_page(obj: dict, label: str, page: int) -> str: ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime()) key = f"{S3_PREFIX.rstrip('/')}/{ts}-{label}-p{page:05d}.json" s3.put_object( Bucket=S3_BUCKET, Key=key, Body=json.dumps(obj, separators=(",", ":")).encode("utf-8"), ContentType="application/json", ) return key # --- Iris paging --- def _first_page_params() -> dict: params: dict[str, object] = {"page_size": str(PAGE_SIZE)} if USE_NEXT: params["next"] = "true" return params def _paginate(label: str, params: dict) -> tuple[int, int]: pages = 0 total = 0 url = _build_url(params) while pages < MAX_PAGES: data = _http_get(url) _write_page(data, label, pages) resp = data.get("response") or {} results = resp.get("results") or [] total += len(results) pages += 1 # Prefer `next` absolute URL if present next_url = resp.get("next") if isinstance(resp, dict) else None if next_url: url = next_url continue # Fallback: position pager when `next=true` not used/supported if resp.get("has_more_results") and resp.get("position"): base = _first_page_params() base.pop("next", None) base["position"] = resp["position"] url = _build_url(base) continue break return pages, total # --- Mode runners --- def run_hashes(hashes: list[str]) -> dict: agg_pages = agg_results = 0 for h in hashes: params = _first_page_params() params["search_hash"] = h p, r = _paginate(f"hash-{h}", params) agg_pages += p agg_results += r return {"pages": agg_pages, "results": agg_results} def run_domains(domains: list[str]) -> dict: agg_pages = agg_results = 0 for d in domains: params = _first_page_params() # DomainTools accepts `domain` as a filter in Investigate search params["domain"] = d p, r = _paginate(f"domain-{d}", params) agg_pages += p agg_results += r return {"pages": agg_pages, "results": agg_results} def run_queries(queries: list[str]) -> dict: agg_pages = agg_results = 0 for q in queries: # Merge arbitrary k=v pairs from the query string base = _first_page_params() for k, v in urllib.parse.parse_qsl(q, keep_blank_values=True): base.setdefault(k, v) p, r = _paginate(f"query-{q.replace('=','-')}", base) agg_pages += p agg_results += r return {"pages": agg_pages, "results": agg_results} # --- Entry point --- def lambda_handler(event=None, context=None): if USE_MODE == "HASH" and SEARCH_HASHES: res = run_hashes(SEARCH_HASHES) elif USE_MODE == "DOMAINS" and DOMAINS: res = run_domains(DOMAINS) elif USE_MODE == "QUERY" and QUERY_LIST: res = run_queries(QUERY_LIST) else: raise ValueError("Invalid USE_MODE or missing parameters. Set USE_MODE to HASH | DOMAINS | QUERY and provide SEARCH_HASHES | DOMAINS | QUERY_LIST accordingly.") return {"ok": True, "mode": USE_MODE, **res} if __name__ == "__main__": print(json.dumps(lambda_handler(), indent=2))
- [構成> 環境変数 > 編集 > 新しい環境変数を追加] に移動します。 
- 次の環境変数を入力し、実際の値に置き換えます。 - キー - 値の例 - 説明 - S3_BUCKET- domaintools-iris- データが保存される S3 バケットの名前。 - S3_PREFIX- domaintools/iris/- オブジェクトの省略可能な S3 接頭辞(サブフォルダ)。 - STATE_KEY- domaintools/iris/state.json- 状態/チェックポイント ファイルのキー(省略可)。 - DT_API_KEY- DT-XXXXXXXXXXXXXXXXXXXX- DomainTools API キー。 - DT_API_SECRET- YYYYYYYYYYYYYYYYYYYYYYYY- DomainTools API シークレット(該当する場合)。 - USE_MODE- HASH|- DOMAINS|- QUERY- 使用するモードを選択します(一度に有効にできるモードは 1 つのみです)。 - SEARCH_HASHES- hash1;hash2;hash3- USE_MODE=HASHの場合は必須。Iris UI からの保存済み検索ハッシュのセミコロン区切りリスト。- DOMAINS- example.com;domaintools.com- USE_MODE=DOMAINSの場合は必須。セミコロンで区切られたドメインのリスト。- QUERY_LIST- ip=1.1.1.1;ip=8.8.8.8;domain=example.org- USE_MODE=QUERYの場合は必須。セミコロンで区切られたクエリ文字列のリスト(- k=v&k2=v2)。- PAGE_SIZE- 500- 1 ページあたりの行数(デフォルトは 500)。 - MAX_PAGES- 20- リクエストあたりの最大ページ数 
- 関数が作成されたら、そのページにとどまるか、[Lambda] > [関数] > [your-function] を開きます。 
- [CONFIGURATION] タブを選択します。 
- [全般的な構成] パネルで、[編集] をクリックします。 
- [Timeout] を [15 minutes (900 seconds)] に変更し、[Save] をクリックします。 
EventBridge スケジュールを作成する
- Amazon EventBridge > Scheduler > スケジュールの作成に移動します。
- 次の構成の詳細を入力します。
- 定期的なスケジュール: レート(1 hour)。
- ターゲット: Lambda 関数。
- 名前: domaintools-iris-1h
 
- 定期的なスケジュール: レート(
- [スケジュールを作成] をクリックします。
省略可: Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する
- AWS コンソールで、[IAM] > [Users] に移動し、[Add users] をクリックします。
- 次の構成の詳細を入力します。
- ユーザー: 一意の名前を入力します(例: secops-reader)。
- アクセスタイプ: [Access key - Programmatic access] を選択します。
- [ユーザーを作成] をクリックします。
 
- ユーザー: 一意の名前を入力します(例: 
- 最小限の読み取りポリシー(カスタム)を適用する: [ユーザー] > secops-readerを選択 > [権限] > [権限を追加] > [ポリシーを直接適用] > [ポリシーを作成]
- JSON エディタで次のポリシーを入力します。 - { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::<your-bucket>/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::<your-bucket>" } ] }
- 名前を - secops-reader-policyに設定します。
- [ポリシーの作成> 検索/選択> 次へ> 権限を追加] に移動します。 
- [セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。 
- CSV をダウンロードします(これらの値はフィードに入力されます)。 
DomainTools Iris Investigate の結果を取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: DomainTools Iris Investigate)。
- [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [DomainTools Threat Intelligence] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- S3 URI: s3://domaintools-iris/domaintools/iris/
- Source deletion options: 必要に応じて削除オプションを選択します。
- 最大ファイル経過時間: デフォルトは 180 日です。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
- シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
- アセットの Namespace: domaintools.threat_intel
- Ingestion labels: このフィードのイベントに適用されるラベル。
 
- S3 URI: 
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック | 
|---|---|---|
| 有効 | principal.domain.status | 未加工ログの activeフィールドから直接マッピングされます。 | 
| additional_whois_email.[].value | about.labels.additional_whois_email | additional_whois_email配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| adsense.value | about.labels.adsense | adsense.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| admin_contact.city.value | principal.domain.admin.office_address.city | 未加工ログの admin_contact.city.valueフィールドから直接マッピングされます。 | 
| admin_contact.country.value | principal.domain.admin.office_address.country_or_region | 未加工ログの admin_contact.country.valueフィールドから直接マッピングされます。 | 
| admin_contact.email.[].value | principal.domain.admin.email_addresses | admin_contact.email配列から抽出され、email_addressesフィールドに追加されます。 | 
| admin_contact.fax.value | principal.domain.admin.attribute.labels.fax | admin_contact.fax.valueから抽出され、admin属性のキー「fax」のラベルとして追加されます。 | 
| admin_contact.name.value | principal.domain.admin.user_display_name | 未加工ログの admin_contact.name.valueフィールドから直接マッピングされます。 | 
| admin_contact.org.value | principal.domain.admin.company_name | 未加工ログの admin_contact.org.valueフィールドから直接マッピングされます。 | 
| admin_contact.phone.value | principal.domain.admin.phone_numbers | 未加工ログの admin_contact.phone.valueフィールドから直接マッピングされます。 | 
| admin_contact.postal.value | principal.domain.admin.attribute.labels.postal | admin_contact.postal.valueから抽出され、admin属性のキー「postal」のラベルとして追加されます。 | 
| admin_contact.state.value | principal.domain.admin.office_address.state | 未加工ログの admin_contact.state.valueフィールドから直接マッピングされます。 | 
| admin_contact.street.value | principal.domain.admin.office_address.name | 未加工ログの admin_contact.street.valueフィールドから直接マッピングされます。 | 
| alexa | about.labels.alexa | 未加工ログの alexaフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| baidu_codes.[].value | about.labels.baidu_codes | baidu_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| billing_contact.city.value | principal.domain.billing.office_address.city | 未加工ログの billing_contact.city.valueフィールドから直接マッピングされます。 | 
| billing_contact.country.value | principal.domain.billing.office_address.country_or_region | 未加工ログの billing_contact.country.valueフィールドから直接マッピングされます。 | 
| billing_contact.email.[].value | principal.domain.billing.email_addresses | billing_contact.email配列から抽出され、email_addressesフィールドに追加されます。 | 
| billing_contact.fax.value | principal.domain.billing.attribute.labels.fax | billing_contact.fax.valueから抽出され、billing属性のキー「fax」のラベルとして追加されます。 | 
| billing_contact.name.value | principal.domain.billing.user_display_name | 未加工ログの billing_contact.name.valueフィールドから直接マッピングされます。 | 
| billing_contact.org.value | principal.domain.billing.company_name | 未加工ログの billing_contact.org.valueフィールドから直接マッピングされます。 | 
| billing_contact.phone.value | principal.domain.billing.phone_numbers | 未加工ログの billing_contact.phone.valueフィールドから直接マッピングされます。 | 
| billing_contact.postal.value | principal.domain.billing.attribute.labels.postal | billing_contact.postal.valueから抽出され、billing属性のキー「postal」のラベルとして追加されます。 | 
| billing_contact.state.value | principal.domain.billing.office_address.state | 未加工ログの billing_contact.state.valueフィールドから直接マッピングされます。 | 
| billing_contact.street.value | principal.domain.billing.office_address.name | 未加工ログの billing_contact.street.valueフィールドから直接マッピングされます。 | 
| create_date.value | principal.domain.creation_time | 未加工ログの create_date.valueフィールドからタイムスタンプ形式に変換されます。 | 
| data_updated_timestamp | principal.domain.audit_update_time | 未加工ログの data_updated_timestampフィールドからタイムスタンプ形式に変換されます。 | 
| ドメイン | principal.hostname | 未加工ログの domainフィールドから直接マッピングされます。 | 
| domain_risk.components.[].evidence | security_result.detection_fields.evidence | domain_risk.components.[].evidence配列から抽出され、security_resultオブジェクトのキー「evidence」を持つ検出フィールドとして追加されます。 | 
| domain_risk.components.[].name | security_result.category_details | 未加工ログの domain_risk.components.[].nameフィールドから直接マッピングされます。 | 
| domain_risk.components.[].risk_score | security_result.risk_score | 未加工ログの domain_risk.components.[].risk_scoreフィールドから直接マッピングされます。 | 
| domain_risk.components.[].threats | security_result.threat_name | domain_risk.components.[].threats配列の最初の要素はsecurity_result.threat_nameにマッピングされます。 | 
| domain_risk.components.[].threats | security_result.detection_fields.threats | domain_risk.components.[].threats配列の残りの要素は、security_resultオブジェクトのキー「threats」を持つ検出フィールドとして追加されます。 | 
| domain_risk.risk_score | security_result.risk_score | 未加工ログの domain_risk.risk_scoreフィールドから直接マッピングされます。 | 
| email_domain.[].value | about.labels.email_domain | email_domain配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| expiration_date.value | principal.domain.expiration_time | 未加工ログの expiration_date.valueフィールドからタイムスタンプ形式に変換されます。 | 
| fb_codes.[].value | about.labels.fb_codes | fb_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| first_seen.value | principal.domain.first_seen_time | 未加工ログの first_seen.valueフィールドからタイムスタンプ形式に変換されます。 | 
| ga4.[].value | about.labels.ga4 | ga4配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| google_analytics.value | about.labels.google_analytics | google_analytics.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| gtm_codes.[].value | about.labels.gtm_codes | gtm_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| hotjar_codes.[].value | about.labels.hotjar_codes | hotjar_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| ip.[].address.value | principal.ip | ip配列の最初の要素はprincipal.ipにマッピングされます。 | 
| ip.[].address.value | about.labels.ip_address | ip配列の残りの要素は、aboutオブジェクトのキー「ip_address」を持つラベルとして追加されます。 | 
| ip.[].asn.[].value | network.asn | 最初の ip.asn配列の最初の要素はnetwork.asnにマッピングされます。 | 
| ip.[].asn.[].value | about.labels.asn | ip.asn配列の残りの要素は、aboutオブジェクトのキー「asn」のラベルとして追加されます。 | 
| ip.[].country_code.value | principal.location.country_or_region | ip配列の最初の要素のcountry_code.valueがprincipal.location.country_or_regionにマッピングされます。 | 
| ip.[].country_code.value | about.location.country_or_region | ip配列内の残りの要素のcountry_code.valueはabout.location.country_or_regionにマッピングされます。 | 
| ip.[].isp.value | principal.labels.isp | ip配列の最初の要素のisp.valueがprincipal.labels.ispにマッピングされます。 | 
| ip.[].isp.value | about.labels.isp | ip配列内の残りの要素のisp.valueはabout.labels.ispにマッピングされます。 | 
| matomo_codes.[].value | about.labels.matomo_codes | matomo_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| monitor_domain | about.labels.monitor_domain | 未加工ログの monitor_domainフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| monitoring_domain_list_name | about.labels.monitoring_domain_list_name | 未加工ログの monitoring_domain_list_nameフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| mx.[].domain.value | about.domain.name | 未加工ログの mx.[].domain.valueフィールドから直接マッピングされます。 | 
| mx.[].host.value | about.hostname | 未加工ログの mx.[].host.valueフィールドから直接マッピングされます。 | 
| mx.[].ip.[].value | about.ip | mx.[].ip配列から抽出され、ipフィールドに追加されます。 | 
| mx.[].priority | about.security_result.priority_details | 未加工ログの mx.[].priorityフィールドから直接マッピングされます。 | 
| name_server.[].domain.value | about.labels.name_server_domain | name_server.[].domain.valueから抽出され、aboutオブジェクトのキー「name_server_domain」のラベルとして追加されます。 | 
| name_server.[].host.value | principal.domain.name_server | name_server.[].host.valueから抽出され、name_serverフィールドに追加されます。 | 
| name_server.[].host.value | about.domain.name_server | name_server.[].host.valueから抽出され、name_serverフィールドに追加されます。 | 
| name_server.[].ip.[].value | about.labels.ip | name_server.[].ip配列から抽出され、aboutオブジェクトのキー「ip」のラベルとして追加されます。 | 
| popularity_rank | about.labels.popularity_rank | 未加工ログの popularity_rankフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| redirect.value | about.labels.redirect | redirect.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| redirect_domain.value | about.labels.redirect_domain | redirect_domain.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| registrant_contact.city.value | principal.domain.registrant.office_address.city | 未加工ログの registrant_contact.city.valueフィールドから直接マッピングされます。 | 
| registrant_contact.country.value | principal.domain.registrant.office_address.country_or_region | 未加工ログの registrant_contact.country.valueフィールドから直接マッピングされます。 | 
| registrant_contact.email.[].value | principal.domain.registrant.email_addresses | registrant_contact.email配列から抽出され、email_addressesフィールドに追加されます。 | 
| registrant_contact.fax.value | principal.domain.registrant.attribute.labels.fax | registrant_contact.fax.valueから抽出され、registrant属性のキー「fax」のラベルとして追加されます。 | 
| registrant_contact.name.value | principal.domain.registrant.user_display_name | 未加工ログの registrant_contact.name.valueフィールドから直接マッピングされます。 | 
| registrant_contact.org.value | principal.domain.registrant.company_name | 未加工ログの registrant_contact.org.valueフィールドから直接マッピングされます。 | 
| registrant_contact.phone.value | principal.domain.registrant.phone_numbers | 未加工ログの registrant_contact.phone.valueフィールドから直接マッピングされます。 | 
| registrant_contact.postal.value | principal.domain.registrant.attribute.labels.postal | registrant_contact.postal.valueから抽出され、registrant属性のキー「postal」のラベルとして追加されます。 | 
| registrant_contact.state.value | principal.domain.registrant.office_address.state | 未加工ログの registrant_contact.state.valueフィールドから直接マッピングされます。 | 
| registrant_contact.street.value | principal.domain.registrant.office_address.name | 未加工ログの registrant_contact.street.valueフィールドから直接マッピングされます。 | 
| registrant_name.value | about.labels.registrant_name | registrant_name.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| registrant_org.value | about.labels.registrant_org | registrant_org.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| registrar.value | principal.domain.registrar | 未加工ログの registrar.valueフィールドから直接マッピングされます。 | 
| registrar_status | about.labels.registrar_status | registrar_status配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| server_type | network.tls.client.server_name | 未加工ログの server_typeフィールドから直接マッピングされます。 | 
| soa_email.[].value | principal.user.email_addresses | soa_email配列から抽出され、email_addressesフィールドに追加されます。 | 
| spf_info | about.labels.spf_info | 未加工ログの spf_infoフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| ssl_email.[].value | about.labels.ssl_email | ssl_email配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| ssl_info.[].alt_names.[].value | about.labels.alt_names | ssl_info.[].alt_names配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| ssl_info.[].common_name.value | about.labels.common_name | ssl_info.[].common_name.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| ssl_info.[].duration.value | about.labels.duration | ssl_info.[].duration.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| ssl_info.[].email.[].value | about.labels.ssl_info_email | ssl_info.[].email配列から抽出され、aboutオブジェクトのキー「ssl_info_email」のラベルとして追加されます。 | 
| ssl_info.[].hash.value | network.tls.server.certificate.sha1 | ssl_info配列の最初の要素のhash.valueがnetwork.tls.server.certificate.sha1にマッピングされます。 | 
| ssl_info.[].hash.value | about.labels.hash | ssl_info配列内の残りの要素のhash.valueはabout.labels.hashにマッピングされます。 | 
| ssl_info.[].issuer_common_name.value | network.tls.server.certificate.issuer | ssl_info配列の最初の要素のissuer_common_name.valueがnetwork.tls.server.certificate.issuerにマッピングされます。 | 
| ssl_info.[].issuer_common_name.value | about.labels.issuer_common_name | ssl_info配列内の残りの要素のissuer_common_name.valueはabout.labels.issuer_common_nameにマッピングされます。 | 
| ssl_info.[].not_after.value | network.tls.server.certificate.not_after | ssl_info配列の最初の要素のnot_after.valueはタイムスタンプ形式に変換され、network.tls.server.certificate.not_afterにマッピングされます。 | 
| ssl_info.[].not_after.value | about.labels.not_after | ssl_info配列内の残りの要素のnot_after.valueはabout.labels.not_afterにマッピングされます。 | 
| ssl_info.[].not_before.value | network.tls.server.certificate.not_before | ssl_info配列の最初の要素のnot_before.valueはタイムスタンプ形式に変換され、network.tls.server.certificate.not_beforeにマッピングされます。 | 
| ssl_info.[].not_before.value | about.labels.not_before | ssl_info配列内の残りの要素のnot_before.valueはabout.labels.not_beforeにマッピングされます。 | 
| ssl_info.[].organization.value | network.organization_name | ssl_info配列の最初の要素のorganization.valueがnetwork.organization_nameにマッピングされます。 | 
| ssl_info.[].organization.value | about.labels.organization | ssl_info配列内の残りの要素のorganization.valueはabout.labels.organizationにマッピングされます。 | 
| ssl_info.[].subject.value | about.labels.subject | ssl_info.[].subject.valueから抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| statcounter_project_codes.[].value | about.labels.statcounter_project_codes | statcounter_project_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| statcounter_security_codes.[].value | about.labels.statcounter_security_codes | statcounter_security_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| tags.[].label | about.file.tags | tags.[].labelから抽出され、tagsフィールドに追加されます。 | 
| tags.[].scope | security_result.detection_fields.scope | tags.[].scopeから抽出され、security_resultオブジェクトのキー「scope」を持つ検出フィールドとして追加されます。 | 
| tags.[].tagged_at | security_result.detection_fields.tagged_at | tags.[].tagged_atから抽出され、security_resultオブジェクトのキー「tagged_at」を持つ検出フィールドとして追加されます。 | 
| technical_contact.city.value | principal.domain.tech.office_address.city | 未加工ログの technical_contact.city.valueフィールドから直接マッピングされます。 | 
| technical_contact.country.value | principal.domain.tech.office_address.country_or_region | 未加工ログの technical_contact.country.valueフィールドから直接マッピングされます。 | 
| technical_contact.email.[].value | principal.domain.tech.email_addresses | technical_contact.email配列から抽出され、email_addressesフィールドに追加されます。 | 
| technical_contact.fax.value | principal.domain.tech.attribute.labels.fax | technical_contact.fax.valueから抽出され、tech属性のキー「fax」のラベルとして追加されます。 | 
| technical_contact.name.value | principal.domain.tech.user_display_name | 未加工ログの technical_contact.name.valueフィールドから直接マッピングされます。 | 
| technical_contact.org.value | principal.domain.tech.company_name | 未加工ログの technical_contact.org.valueフィールドから直接マッピングされます。 | 
| technical_contact.phone.value | principal.domain.tech.phone_numbers | 未加工ログの technical_contact.phone.valueフィールドから直接マッピングされます。 | 
| technical_contact.postal.value | principal.domain.tech.attribute.labels.postal | technical_contact.postal.valueから抽出され、tech属性のキー「postal」のラベルとして追加されます。 | 
| technical_contact.state.value | principal.domain.tech.office_address.state | 未加工ログの technical_contact.state.valueフィールドから直接マッピングされます。 | 
| technical_contact.street.value | principal.domain.tech.office_address.name | 未加工ログの technical_contact.street.valueフィールドから直接マッピングされます。 | 
| tld | about.labels.tld | 未加工ログの tldフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| timestamp | about.labels.timestamp | 未加工ログの timestampフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| website_response | principal.network.http.response_code | 未加工ログの website_responseフィールドから直接マッピングされます。 | 
| website_title | about.labels.website_title | 未加工ログの website_titleフィールドから直接マッピングされ、aboutオブジェクトのラベルとして追加されます。 | 
| whois_url | principal.domain.whois_server | 未加工ログの whois_urlフィールドから直接マッピングされます。 | 
| yandex_codes.[].value | about.labels.yandex_codes | yandex_codes配列から抽出され、aboutオブジェクトのラベルとして追加されます。 | 
| edr.client.hostname | domainフィールドの値に設定します。 | |
| edr.client.ip_addresses | ip配列の最初の要素の値(具体的にはip.[0].address.value)に設定します。 | |
| edr.raw_event_name | principal.hostnameが存在する場合は「STATUS_UPDATE」に設定し、それ以外の場合は「GENERIC_EVENT」に設定します。 | |
| metadata.event_timestamp | 未加工ログの最上位の create_timeフィールドからコピーされます。 | |
| metadata.event_type | principal.hostnameが存在する場合は「STATUS_UPDATE」に設定し、それ以外の場合は「GENERIC_EVENT」に設定します。 | |
| metadata.log_type | 「DOMAINTOOLS_THREATINTEL」に設定します。 | |
| metadata.product_name | 「DOMAINTOOLS」に設定します。 | |
| metadata.vendor_name | 「DOMAINTOOLS」に設定します。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。