AWS S3 サーバー アクセスログを収集する
このドキュメントでは、Google Security Operations フィードを設定して AWS S3 サーバー アクセスログを収集する方法について説明します。パーサーは grok パターンを使用してフィールドを抽出し、JSON 入力を処理して、抽出されたフィールドを UDM にマッピングします。特定のフィールドの有無と値に基づいてデータ変換、型変換、条件ロジックを実行し、UDM を正確に表現します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- AWS への特権アクセス
AWS S3 サーバー アクセス ロギングを構成する方法
Google SecOps は、Amazon SQS を介した Amazon S3 を使用したログ収集をサポートしています。
- AWS Management コンソールにログインします。
- Amazon S3 コンソールにアクセスします。
- Amazon S3 > バケットに移動します。
- 既存のバケットを選択するか、新しいバケットを作成します。
- [プロパティ] をクリックします。
- [サーバー アクセス ロギング] セクションで、[編集] をクリックします。
- [有効にする] を選択します。
- [ターゲット バケット] フィールドに、ログレコード オブジェクトの送信先となる新しいバケットの名前を入力するか、既存のバケットをターゲットとして選択します。
- [変更を保存] をクリックします。
- S3 バケットの SQS キューを作成するには、S3 ストレージで Amazon SQS インスタンスを構成します。詳細については、通知用のバケットを構成する(SNS トピックまたは SQS キュー)をご覧ください。
サービスとリージョンに基づいて、次の AWS ドキュメントを参照して接続のエンドポイントを特定します。
- ロギングソースの詳細については、AWS Identity and Access Management エンドポイントとクォータをご覧ください。
- S3 ロギング ソースの詳細については、Amazon Simple Storage Service エンドポイントとクォータをご覧ください。
- SQS ロギング ソースの詳細については、Amazon Simple Queue Service エンドポイントとクォータをご覧ください。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
このプロダクト ファミリー内で異なるログタイプに対して複数のフィードを構成するには、プロダクトごとにフィードを構成するをご覧ください。
1 つのフィードを設定する手順は次のとおりです。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一フィードを設定] をクリックします。
- [ソースタイプ] リストで、[Amazon S3] または [Amazon SQS] を選択します。
- [ログタイプ] リストで、[AWS S3 サーバー アクセス] を選択します。
- [次へ] をクリックします。
- Google SecOps は、アクセスキー ID とシークレット メソッドを使用したログ収集をサポートしています。アクセスキー ID とシークレットを作成するには、AWS でツールの認証を構成するをご覧ください。
- 作成した AWS S3 サーバー アクセス構成に基づいて、入力パラメータの値を指定します。
- Amazon S3 を使用する場合は、次のフィールドに値を指定します。
- リージョン
- S3 URI
- URI は
- ソース削除オプション
- アクセスキー ID
- シークレット アクセスキー
- Amazon SQS を使用している場合は、次のフィールドに値を指定します。
- リージョン
- キュー名
- 口座番号
- Queue access key ID
- Queue secret access key
- ソース削除オプション
- Amazon S3 を使用する場合は、次のフィールドに値を指定します。
- [次へ] をクリックしてから、[送信] をクリックします。
コンテンツ ハブからフィードを設定する
Google SecOps で取り込みフィードを構成するには、Amazon SQS(推奨)または Amazon S3 を使用します。
次のフィールドに値を指定します。
- リージョン: S3 バケットまたは SQS キューがホストされているリージョン。
- キュー名: ログデータの読み取り元となる SQS キューの名前。
- アカウント番号: SQS キューを所有するアカウント番号。
- Queue Access Key ID: 20 文字のアカウント アクセスキー ID。例:
AKIAOSFOODNN7EXAMPLE
- Queue Secret Access Key: 40 文字のシークレット アクセスキー。例:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
- ソース削除オプション: データの転送後にファイルとディレクトリを削除するオプション。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- Asset Namespace: フィードに関連付けられた名前空間。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
aclRequired |
target.resource.attribute.labels.key : "aclRequired"target.resource.attribute.labels.value : aclRequired の値 |
未加工ログのフィールド aclRequired から直接マッピングされます。 |
authenticationtype |
extensions.auth.auth_details |
未加工ログのフィールド authenticationtype から直接マッピングされます。 |
bucket |
target.resource.name |
未加工ログのフィールド bucket から直接マッピングされます。 |
bucket |
target.resource.resource_type : 「STORAGE_BUCKET」 |
パーサーは、bucket フィールドが存在する場合、resource_type を「STORAGE_BUCKET」に設定します。 |
bucketowner |
target.resource.product_object_id |
未加工ログのフィールド bucketowner から直接マッピングされます。 |
bytes_sent |
network.sent_bytes |
未加工ログの bytes_sent フィールドから直接マッピングされます。このとき、符号なし整数に変換され、「-」が「0」に置き換えられます。 |
ciphersuite |
network.application_protocol : "HTTPS" |
パーサーは、ciphersuite フィールドが存在する場合、application_protocol を「HTTPS」に設定します。 |
ciphersuite |
network.tls.cipher |
未加工ログのフィールド ciphersuite から直接マッピングされます。 |
errorcode |
security_result.action_details |
未加工ログのフィールド errorcode から直接マッピングされます。 |
errorcode |
security_result.action : "BLOCK" |
errorcode フィールドに「AccessDenied」が含まれている場合(大文字と小文字を区別しない)、パーサーは action を「BLOCK」に設定します。 |
hostheader |
target.hostname |
未加工のログフィールド hostheader から抽出されます。ポート番号が削除される可能性があります。 |
hostheader |
target.port |
ポート番号が存在する場合は、未加工のログフィールド hostheader から抽出されます。 |
hostid |
target.resource.attribute.labels.key : 「S3 Extended Request ID」target.resource.attribute.labels.value : hostid の値 |
未加工ログのフィールド hostid から直接マッピングされます。 |
http_capture |
network.http.method |
HTTP メソッドは http_capture フィールドから抽出されます。 |
http_capture |
network.http.version |
HTTP バージョンは http_capture フィールドから抽出されます。 |
http_capture |
target.url |
ターゲット URL は、hostheader と http_request_uri (http_capture から抽出)を使用して構築され、ciphersuite の有無に基づいて「http://」または「https://」の接頭辞が付加されます。 |
httpstatus |
network.http.response_code |
未加工ログの httpstatus フィールドから直接マッピングされ、整数に変換されます。 |
object_version_id |
target.resource.product_object_id |
未加工ログのフィールド object_version_id から直接マッピングされます。 |
objectsize |
target.file.size |
未加工ログの objectsize フィールドから直接マッピングされます。このとき、符号なし整数に変換され、「-」が「0」に置き換えられます。 |
operation |
metadata.product_event_type |
未加工ログのフィールド operation から直接マッピングされます。 |
referrer |
network.http.referral_url |
引用符を削除した後、未加工ログの referrer フィールドから直接マッピングされます。 |
remoteip |
metadata.event_type : 「USER_RESOURCE_ACCESS」 |
remoteip フィールドが空の場合、パーサーは event_type を「USER_RESOURCE_ACCESS」に設定します。 |
remoteip |
principal.ip |
未加工ログのフィールド remoteip から直接マッピングされます。 |
requester |
target.resource.attribute.labels.key : 「アクセス ポイント ARN」target.resource.attribute.labels.value : requester の値 |
未加工ログのフィールド requester から直接マッピングされます。 |
requester_user |
principal.user.userid |
未加工ログのフィールド requester_user から直接マッピングされます。 |
requestid |
network.session_id |
未加工ログのフィールド requestid から直接マッピングされます。 |
request_time_ms |
network.session_duration.nanos |
未加工ログのフィールド request_time_ms から直接マッピングされ、整数に変換された後、「-」が「0」に置き換えられ、ナノ秒を表すためにゼロでパディングされます。 |
signatureversion |
target.resource.attribute.labels.key :「Signature Version」target.resource.attribute.labels.value : signatureversion の値 |
未加工ログのフィールド signatureversion から直接マッピングされます。 |
time |
metadata.event_timestamp |
未加工ログのフィールド time から解析され、タイムスタンプに変換されます。 |
tlsVersion |
network.tls.version |
未加工ログのフィールド tlsVersion から直接マッピングされます。 |
useragent |
network.http.user_agent |
引用符を削除した後、未加工ログの useragent フィールドから直接マッピングされます。 |
(パーサー ロジック) | metadata.event_type : 「NETWORK_HTTP」 |
パーサーはデフォルトの event_type を「NETWORK_HTTP」に設定します。 |
(パーサー ロジック) | metadata.log_type : 「AWS_S3_SERVER_ACCESS」 |
パーサーは log_type を「AWS_S3_SERVER_ACCESS」に設定します。 |
(パーサー ロジック) | metadata.product_name : 「AWS S3 サーバー アクセス」 |
パーサーは product_name を「AWS S3 Server Access」に設定します。 |
(パーサー ロジック) | metadata.product_version : "HTTP/http_version " |
パーサーは、抽出された http_version を使用して product_version を設定します。 |
(パーサー ロジック) | metadata.vendor_name : "AMAZON" |
パーサーは vendor_name を「AMAZON」に設定します。 |
(パーサー ロジック) | network.application_protocol : "HTTP" |
ciphersuite フィールドが存在しない場合、パーサーは application_protocol を「HTTP」に設定します。 |
(パーサー ロジック) | timestamp |
パーサーは、イベントが処理されるときにイベント timestamp を現在時刻に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。