メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

データベース監査ログ作成

概要

Amazon Redshift は、データベースの接続とユーザーアクティビティに関する情報を記録します。これらのログは、セキュリティとトラブルシューティングの目的でデータベースを監視するのに役立ちます。このプロセスは、多くの場合データベース監査と呼ばれます。ログは、データベースのモニタリングアクティビティを担当するユーザーがデータセキュリティ機能を使用してアクセスしやすいように、Amazon Simple Storage Service (Amazon S3) バケットに格納されます。

Amazon Redshift ログ

Amazon Redshift は、次のログファイルに情報を記録します。

  • 接続ログ — 認証の試みと、接続および切断を記録します。

  • ユーザーログ — データベースのユーザー定義への変更に関する情報を記録します。

  • ユーザーアクティビティログ — データベースで実行される前に各クエリを記録します。

接続ログとユーザーログは、主にセキュリティに役立ちます。接続ログを使用して、データベースに接続するユーザーに関する情報と、IP アドレスやリクエストした日時、使用した認証の種類など、関連する接続情報を監視できます。ユーザーログを使用して、データベースユーザーの定義への変更を監視できます。

ユーザーアクティビティログは、主にトラブルシューティングに役立ちます。ユーザーおよびシステムによってデータベースで実行されるクエリの種類についての情報を追跡します。

接続ログとユーザーログは、データベースのシステムテーブルに保存されている情報と一致します。システムテーブルを使用して同じ情報を取得できますが、ログファイルのほうがより簡単な方法で検索および参照できます。ログファイルは、テーブルに対してクエリを実行するのに、データベースのアクセス許可ではなく Amazon S3 のアクセス許可に依存しています。また、システムテーブルに対してクエリを実行するのではなくログファイルの情報を参照するので、データベースとのやりとりによる影響が軽減されます。

接続ログ

認証の試みと、接続および切断を記録します。次の表に、接続ログの情報を示します。

列名 説明
event 接続または認証イベント。
recordtime イベントが発生した時刻。
remotehost リモートホストの名前または IP アドレス。
remoteport リモートホストのポート番号。
pid ステートメントに関連付けられるプロセス ID。
dbname データベース名。
username ユーザー名。
authmethod 認証方法。
duration 接続時間 (マイクロ秒)。
sslversion Secure Sockets Layer (SSL) バージョン。
sslcipher SSL 暗号。
mtu 最大送信単位 (MTU)。
sslcompression SSL 圧縮タイプ。
sslexpansion SSL 拡張タイプ。

ユーザーログ

データベースユーザーに対する次の変更の詳細を記録します。

  • ユーザーの作成

  • ユーザーの削除

  • ユーザーの変更 (名前の変更)

  • ユーザーの変更 (プロパティの変更)

列名 説明
userid 変更の影響を受けるユーザーの ID。
ユーザー名 変更の影響を受けるユーザーのユーザー名。
oldusername 名前の変更アクションの場合、以前のユーザー名。その他のアクションの場合、このフィールドは空です。
action 実行されたアクション。有効な値:
  • Alter

  • 作成

  • Drop

  • Rename

usecreatedb true (1) の場合、ユーザーに create database 権限があることを示します。
usesuper true (1) の場合、ユーザーがスーパーユーザーであることを示します。
usecatupd true (1) の場合、ユーザーはシステムカタログを更新できることを示します。
valuntil パスワードが失効する日付。
pid プロセス ID。
xid トランザクション ID。
recordtime UTC で表されたクエリの開始時間。

ユーザーアクティビティログ

データベースで実行される前に各クエリを記録します。

列名 説明
recordtime イベントが発生した時刻。
db データベース名。
ユーザー ユーザー名。
pid ステートメントに関連付けられるプロセス ID。
userid ユーザー ID
xid トランザクション ID。
query プレフィックス LOG の後に、改行を含むクエリのテキストが続きます。

ログ作成の有効化

Amazon Redshift の監査ログ作成はデフォルトで有効ではありません。クラスターでログ作成を有効にすると、Amazon Redshift はログを作成して Amazon S3 にアップロードし、クラスターの作成時から現在までのデータをキャプチャします。ログ作成の更新は、すでに記録された情報の続きになります。

注記

Amazon S3 への監査ログ作成は、任意で、手動のプロセスです。クラスターでログ作成を有効にすると、Amazon S3 へのログ作成のみ有効になります。システムテーブルへのログ作成は任意ではなく、クラスターに対して自動的に作成されます。システムテーブルへのログ作成に関する詳細については、Amazon Redshift Database Developer Guide の「システムテーブルのリファレンス」を参照してください。

接続ログ、ユーザーログ、およびユーザーアクティビティログは、AWS マネジメントコンソール、Amazon Redshift API リファレンス、または AWS Command Line Interface (AWS CLI) を使用すると同時に有効になります。ユーザーアクティビティログについては、enable_user_activity_logging データベースパラメーターも有効にする必要があります。監査ログ作成機能のみを有効にし、関連するパラメーターを有効にしない場合、データベース監査ログは接続ログとユーザーログの情報のみ記録し、ユーザーアクティビティログの情報は記録しません。 デフォルトでは enable_user_activity_logging パラメーターは無効 (false) ですが、true に設定するとユーザーアクティビティログを有効にすることができます。 詳細については、「Amazon Redshift パラメーターグループ」を参照してください。

ログファイルの管理

Amazon S3 の Amazon Redshift のログファイルの数とサイズは、クラスターのアクティビティによって大きく異なります。大量のログを生成しているアクティブなクラスターがある場合、Amazon Redshift はより頻繁にログファイルを生成することがあります。同じ時間に複数の接続ログがあるなど、同じタイプのアクティビティに対して一連のログファイルが存在する場合があります。

Amazon Redshift は、Amazon S3 を使用してログを格納するため、Amazon S3 で使用するストレージの料金が発生します。ログ作成を設定する前に、ログファイルを保管する期間を計画し、監査の必要に応じていつ削除またはアーカイブするかを決定します。作成する予定は、コンプライアンス要件または規制要件に従ったデータなど、保管するデータの種類によって大きく異なります。Amazon S3 の料金の詳細については、Amazon Simple Storage Service (S3) 料金表をご覧ください。

Amazon Redshift 監査ログ作成のためのバケットのアクセス許可

ログ作成を有効にすると、Amazon Redshift はログ作成情報を収集し、Amazon S3 に格納されたログファイルにアップロードします。既存のバケットか、新しいバケットを使用できます。Amazon Redshift では、バケットに対して以下の IAM アクセス許可が必要です。

  • s3:GetBucketAcl サービスは、Amazon S3 バケットに対して読み取りのアクセス許可が必要です。これにより、バケット所有者を識別できます。

  • s3:PutObject サービスは、ログをアップロードするため、put object のアクセス許可が必要です。ログがアップロードされるたびに、サービスは現在のバケット所有者がログ作成に有効になったときのバケット所有者と一致するかどうかを判定します。所有者が一致しない場合、ログ作成は有効なままですが、別のバケットが選択されるまでログファイルがアップロードされません。

新しいバケットを使用する必要があり、設定プロセスの一部として Amazon Redshift でバケットを作成する場合は、バケットに正しいアクセス許可が適用されます。ただし、Amazon S3 で独自のバケットを作成する場合、または既存のバケットを使用する場合、バケット名および次の表のリージョンに対応する Amazon Redshift のアカウント ID を含むバケットポリシーを追加する必要があります。

リージョン名 リージョン アカウント ID
米国東部 (バージニア北部) リージョン us-east-1 193672423079
米国東部(オハイオ)リージョン us-east-2 391106570357
米国西部 (北カリフォルニア) リージョン us-west-1 262260360010
米国西部 (オレゴン) リージョン us-west-2 902366379725
アジアパシフィック (ムンバイ) リージョン ap-south-1 865932855811
アジアパシフィック (ソウル) リージョン ap-northeast-2 760740231472
アジアパシフィック (シンガポール) リージョン ap-southeast-1 361669875840
アジアパシフィック (シドニー) リージョン ap-southeast-2 762762565011
アジアパシフィック (東京) リージョン ap-northeast-1 404641285394
カナダ (中部) リージョン ca-central-1 907379612154
欧州 (フランクフルト) リージョン eu-central-1 053454850223
欧州 (アイルランド) リージョン eu-west-1 210876761215
欧州 (ロンドン) リージョン eu-west-2 307160386991
南米 (サンパウロ) リージョン sa-east-1 075028567923

バケットポリシーは次の形式を使用します。ここで、BucketNameAccountId は、個人の値のプレースホルダです。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BucketName/*" }, { "Sid": "Get bucket policy needed for audit logging ", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountID:user/logs" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::BucketName" } ] }

次の例は、米国東部 (バージニア北部) リージョン および AuditLogs という名前のバケットのバケットポリシーです。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::193672423079:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::AuditLogs/*" }, { "Sid": "Get bucket policy needed for audit logging ", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::193672423079:user/logs" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::AuditLogs" } ] }

Amazon S3 バケットの作成およびバケットポリシーの追加に関する詳細については、Amazon Simple Storage Service コンソールユーザーガイド の「バケットの作成」および「バケットのアクセス許可の編集」を参照してください。

Amazon Redshift 監査ログ作成のバケットの構造

デフォルトでは、Amazon Redshift は次のバケットとオブジェクト構造を使用して Amazon S3 バケットのログファイルを整理します: AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz

例: AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

Amazon S3 のキープレフィックスを指定すると、キーの冒頭にプレフィックスが挿入されます。

たとえば、myprefix というプレフィックスを指定すると、次のようになります: myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

Amazon S3 のキープレフィックスは 512 文字を超えることはできません。スペース ( )、二重引用符 (“)、一重引用符 (‘)、バックスラッシュ (\) を含めることはできません。また、許可されない特殊文字、および制御文字もいくつかあります。これらの文字の 16 進コードは次のとおりです。

  • x00 から x20

  • x 22

  • x 27

  • x5c

  • x7f 以上

Amazon Redshift 監査ログ作成のトラブルシューティング

Amazon Redshift 監査ログ作成は、以下の理由で中断されることがあります。

  • Amazon S3 バケットにログをアップロードするアクセス許可が Amazon Redshift にありません。バケットに正しい IAM ポリシーが設定されていることを確認します。詳細については、「Amazon Redshift 監査ログ作成のためのバケットのアクセス許可」を参照してください。

  • バケット所有者が変更されました。Amazon Redshift がログをアップロードするとき、バケット所有者がログが有効になった時と同じであることを確認します。バケット所有者を変更した場合、Amazon Redshift は、監査ログ作成に使用する別のバケットを設定するまでログをアップロードできません。詳細については、「監査ログ作成のバケットを変更する」を参照してください。

  • バケットが見つかりません。バケットが Amazon S3 で削除された場合、Amazon Redshift はログをアップロードできません。バケットを再作成するか、別のバケットにログをアップロードするように Amazon Redshift を設定する必要があります。詳細については、「監査ログ作成のバケットを変更する」を参照してください。

Amazon Redshift 用の AWS CloudTrail の使用

このサービスは AWS CloudTrail をサポートします。これは、AWS アカウントの AWS 呼び出しを記録し、ログファイルを Amazon S3 バケットに配信するサービスです。CloudTrail が収集した情報を使用して、成功した AWS サービスリクエスト、そのリクエストの送信者、そのリクエストの送信時間などを確認できます。CloudTrail の詳細(有効にする方法、ログファイルを検索する方法を含む)については、AWS CloudTrail User Guide を参照してください。

CloudTrail は、Amazon Redshift データベース監査ログ作成から独立して、または加えて使用できます。

AWS CloudTrail ログでの Amazon Redshift アカウント ID

Amazon Redshift がユーザーに代わって AWS サービスを呼び出す場合、呼び出しは、自分のアカウント ID ではなく Amazon Redshift サービスに属するアカウント ID で記録されます。たとえば、Amazon Redshift が CreateGrant、Decrypt、Encrypt、RetireGrant などの AWS Key Management Service (AWS KMS) アクションを呼び出してクラスターの暗号化を管理する場合、呼び出しは Amazon Redshift アカウント ID を使用して AWS CloudTrail によって記録されます。

Amazon Redshift は他の AWS サービスを呼び出すときに、以下の表のアカウント ID を使用します。

リージョン リージョン アカウント ID
米国東部 (バージニア北部) リージョン us-east-1 368064434614
米国東部(オハイオ)リージョン us-east-2 790247189693
米国西部 (北カリフォルニア) リージョン us-west-1 703715109447
米国西部 (オレゴン) リージョン us-west-2 473191095985
アジアパシフィック (ムンバイ) リージョン ap-south-1 408097707231
アジアパシフィック (ソウル) リージョン ap-northeast-2 713597048934
アジアパシフィック (シンガポール) リージョン ap-southeast-1 960118270566
アジアパシフィック (シドニー) リージョン ap-southeast-2 485979073181
アジアパシフィック (東京) リージョン ap-northeast-1 615915377779
カナダ (中部) リージョン ca-central-1 764870610256
欧州 (フランクフルト) リージョン eu-central-1 434091160558
欧州 (アイルランド) リージョン eu-west-1 246478207311
欧州 (ロンドン) リージョン eu-west-2 885798887673
南米 (サンパウロ) リージョン sa-east-1 392442076723