AWS Redshift のログを収集する
パーサーのバージョン: 1.0
このドキュメントでは、Amazon S3 を使用して AWS Redshift ログを Google Security Operations に取り込む方法について説明します。
Amazon Redshift は、Amazon Web Services が提供するフルマネージドのペタバイト規模のクラウド データ ウェアハウス サービスです。SQL ベースのツールとビジネス インテリジェンス アプリケーションを使用して、大規模なデータセットに対する高速なクエリと分析を実現します。Amazon Redshift は、認証試行、接続、切断、ユーザー定義の変更、データベースに対して実行されたクエリなど、データベース アクティビティをログに記録します。この統合では、Amazon Redshift のネイティブ監査ロギング機能を使用してログファイルを S3 バケットに配信します。Google SecOps は、Amazon S3 V2 フィードを使用してログファイルを取り込みます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- 次の管理権限を持つ AWS Management Console への特権アクセス権:
- Amazon Redshift(クラスタ、パラメータ グループ)
- Amazon S3(バケット、バケット ポリシー)
- AWS IAM(ユーザー、ポリシー)
Amazon Redshift の監査ロギング用に S3 バケットを構成する
Amazon Redshift は、監査ログファイルを S3 バケットにアップロードします。Amazon Redshift サービスがログファイルを書き込めるように、S3 バケット ポリシーを構成する必要があります。
S3 バケットを作成して構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
バケットの名前とリージョンを後で参照できるように保存します(例:
redshift-audit-logs-to-secops)。https://console.aws.amazon.com/s3 の Amazon S3 コンソールで、作成したバケットを選択します。
[権限] タブを選択します。
[バケット ポリシー] セクションで、[編集] をクリックします。
次のバケット ポリシーを追加します(
redshift-audit-logs-to-secopsはバケット名に置き換えます)。{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }[変更を保存] をクリックします。
ユーザー アクティビティ ログ パラメータを有効にする
監査ロギングが有効になっている場合、接続ログとユーザーログは自動的にキャプチャされます。ユーザー アクティビティ ログ(データベースで実行される前の各クエリを記録する)もキャプチャするには、enable_user_activity_logging データベース パラメータを有効にする必要があります。
- https://console.aws.amazon.com/redshiftv2/ で Amazon Redshift コンソールにログインします。
- ナビゲーション メニューで、[構成] > [ワークロード管理] に移動します。
- クラスタに関連付けられているパラメータ グループを選択します。
- [パラメータ] タブを選択します。
- [パラメータを編集] をクリックします。
- enable_user_activity_logging パラメータの値を true に設定します。
[保存] をクリックします。
Amazon Redshift の監査ログを S3 に有効にする
- https://console.aws.amazon.com/redshiftv2/ で Amazon Redshift コンソールにログインします。
- ナビゲーション メニューで [クラスタ] を選択し、構成するクラスタを選択します。
- [Properties] タブをクリックします。
- [データベース構成] パネルで [編集] をクリックし、[監査ロギングを編集] を選択します。
- [監査ログの編集] ページで、[オンにする] を選択します。
- [ログの宛先] で、[S3 バケット] を選択します。
- [S3 バケット] で、構成したバケット(
redshift-audit-logs-to-secopsなど)を選択します。 - 省略可: S3 キーの接頭辞を入力して、バケット内のログファイルを整理します(例:
audit-logs/)。 - エクスポートするログを選択します。
- 接続ログ - 認証の試行、接続、切断
- ユーザーログ - データベース ユーザー定義の変更
- ユーザー アクティビティ ログ - データベースで実行される前の各クエリ
- [変更を保存] をクリックします。
詳細については、Amazon Redshift 管理ガイドのデータベースの監査ロギングをご覧ください。
Google SecOps 用に IAM ユーザーを構成する
Google SecOps は、エクスポートされた監査ログを取り込むために、S3 バケットに対する読み取りアクセス権を持つ IAM ユーザーを必要とします。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] で [サードパーティ サービス] を選択します。
- [Next] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [.csv ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、今後の参照に備えます。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションの [権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索します。
- ポリシーを選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
AWS Redshift のログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを設定] をクリックします。
- [Feed name] に一意の名前を入力します。
- [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [AWS Redshift] を選択します。
- [次へ] をクリックしてから、[送信] をクリックします。
次のフィールドに値を指定します。
- S3 URI:
s3://redshift-audit-logs-to-secops/audit-logs/ - Source deletion option: 必要に応じて削除オプションを選択します。
- ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます(デフォルトは 180 日)。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー
- シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー
- アセットの名前空間: アセットの名前空間
- Ingestion labels: このフィードのイベントに適用されるラベル
- S3 URI:
[次へ] をクリックしてから、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
func_label |
additional.fields |
統合済み |
lpclagg_label |
additional.fields |
統合済み |
lpcltype_label |
additional.fields |
統合済み |
msg |
metadata.description |
直接マッピングされます。 |
has_principal |
metadata.event_type |
マッピング: true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
マッピング: true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
マッピング: true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
直接マッピングされます。 |
requestID |
metadata.product_log_id |
直接マッピングされます。 |
column20 |
network.application_protocol_version |
直接マッピングされます。 |
column9 |
network.session_duration.seconds |
名前変更済み/マッピング済み |
column21 |
network.session_id |
直接マッピングされます。 |
xid |
network.session_id |
直接マッピングされます。 |
column11 |
network.tls.cipher |
直接マッピングされます。 |
column10 |
network.tls.version |
直接マッピングされます。 |
column16 |
principal.application |
直接マッピングされます。 |
column3 |
principal.asset.ip |
統合済み |
log_event.src_ip |
principal.asset.ip |
統合済み |
column3 |
principal.hostname |
直接マッピングされます。 |
column3 |
principal.ip |
統合済み |
log_event.src_ip |
principal.ip |
統合済み |
region |
principal.location.name |
直接マッピングされます。 |
column17 |
principal.platform_version |
直接マッピングされます。 |
column4 |
principal.port |
直接マッピングされます。 |
column5 |
principal.process.pid |
直接マッピングされます。 |
pid |
principal.process.pid |
直接マッピングされます。 |
accountID |
principal.user.userid |
直接マッピングされます。 |
user_id |
principal.user.userid |
直接マッピングされます。 |
authmethod_label |
security_result.detection_fields |
統合済み |
compression_label |
security_result.detection_fields |
統合済み |
driver_version_label |
security_result.detection_fields |
統合済み |
iamauthguid_label |
security_result.detection_fields |
統合済み |
mtu_label |
security_result.detection_fields |
統合済み |
plugin_name_label |
security_result.detection_fields |
統合済み |
ssl_compression_label |
security_result.detection_fields |
統合済み |
ssl_expansion_label |
security_result.detection_fields |
統合済み |
level |
security_result.severity |
マッピング: (?i)Info → INFORMATIONAL、(?i)Error → ERROR、(?i)Warning → MEDIUM |
file |
target.file.full_path |
直接マッピングされます。 |
expected_bucket_label |
target.resource.attribute.labels |
統合済み |
expected_s3_prefix_label |
target.resource.attribute.labels |
統合済み |
sql_query_label |
target.resource.attribute.labels |
統合済み |
time_zone_label |
target.resource.attribute.labels |
統合済み |
ClusterIdentifier |
target.resource.name |
直接マッピングされます。 |
column6 |
target.resource.name |
直接マッピングされます。 |
db |
target.resource.name |
直接マッピングされます。 |
column7 |
target.user.user_display_name |
直接マッピングされます。 |
user |
target.user.user_display_name |
直接マッピングされます。 |
| 該当なし | metadata.event_type |
定数: USER_RESOURCE_ACCESS |
| 該当なし | security_result.severity |
定数: INFORMATIONAL |
| 該当なし | target.resource.type |
定数: DATABASE |
変更履歴
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。