AWS Redshift のログを収集する
パーサーのバージョン: 1.0
このドキュメントでは、Amazon S3 を使用して AWS Redshift ログを Google Security Operations に取り込む方法について説明します。
Amazon Redshift は、アマゾン ウェブ サービスが提供するフルマネージドでペタバイト規模のクラウド データ ウェアハウス サービスです。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 bucket] で、構成したバケット(例:
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 のプロフェッショナルから回答を得ることができます。