ログを使用して、Amazon Redshift データベースクラスターのアクティビティを追跡するにはどうすればよいですか?

所要時間2分
0

Amazon Redshift クラスター上のデータベースを監査したいと考えています。

簡単な説明

Amazon Redshift には次の 3 つのログ記録オプションがあります。

監査ログと STL/SYS テーブルには、ログインしたユーザーやログインしたタイミングなど、データベースレベルのアクティビティが記録されます。STL/SYS テーブルには、ユーザーが実行した SQL アクティビティとそれらがいつ実行されたのかも記録されます。CloudTrail では、サービスレベルでユーザーアクティビティを追跡できます。

**注:**外部テーブルを使ってログを表示する場合は、Amazon Redshift Spectrum を使用します。詳細については、「Analyze database audit logs for security and compliance using Amazon Redshift Spectrum」を参照してください。

解決策

監査ログ記録と STL/SYS テーブル

次の表は、監査ログ記録と STL/SYS テーブルを比較したものです。ユースケースに適したオプションを選択してください。

監査ログ記録STL/SYS テーブル
Amazon Redshift コンソールを使用して監査ログ記録を有効にするか、 AWS コマンドラインインターフェイス (AWS CLI) と Amazon Redshift API を使用 します。データウェアハウスクラスターのすべてのノードで自動的に使用可能になっています。
監査ログファイルは、ファイルを自動的にアーカイブまたは削除するように Amazon S3 ライフサイクルルールを定義しない限り、無期限に保存されます。詳細については、「ストレージのライフサイクルの管理」を参照してください。ログ履歴は、ログの使用状況と使用可能なディスク容量に応じて 2~5 日間保存されます。保持期間を延長するには、GitHub ウェブサイトの「Amazon Redshift System Object Persistence Utility 」を使用してください。
監査ログファイルにアクセスするのに Amazon Redshift データベースにアクセスする必要はありません。STL/SYS テーブルにアクセスするには、Amazon Redshift データベースへのアクセスが必要です。
Amazon S3 に保存されているログを確認するのに、データベースコンピューティングリソースは必要ありません。他のクエリを実行する場合と同様に、STL/SYS テーブルに対してクエリを実行するにはデータベースコンピューティングリソースが必要です。
タイムスタンプを使用して、プロセス ID をデータベースアクティビティに関連付けることができます。クラスターを再起動しても、Amazon S3 の監査ログ記録には影響しません。プロセス ID はクラスターの再起動時にリサイクルされる可能性があるため、データベースアクティビティと常に関連付けられるとは限りません。
この記録では、 接続ログユーザーログおよびユーザーアクティビティログのファイルに情報が保存されます。**注:**ユーザーアクティビティログの enable_user_activity_logging データベースパラメータを有効にする必要があります。詳細については、「ログ作成の有効化」を参照してください。SVL_STATEMENTTEXTSTL_CONNECTION_LOG、および SYS_CONNECTION_LOG を使用して詳細情報を表示できます。
すべての SQL ステートメントをユーザーアクティビティログに記録します。実行したクエリは STL_QUERY に記録されます。DDL ステートメントは STL\ _DDLTEXT に記録されます。SELECT 以外の SQL コマンドのテキストは STL_UTILITYTEXT に記録されます。Amazon Redshift Serverless では、SYS_QUERY_HISTORYSYS_QUERY_DETAIL を使用してすべての SQL コマンドをチェックできます。
ステートメントは Amazon Redshift が受信するとすぐに記録されます。Amazon S3 のファイルはバッチで更新されるため、表示されるまでに数時間かかることがあります。ログは、各 SQL ステートメントを実行した後に生成されます。
誰がいつどのようなアクションを実行したかが記録されますが、アクションの実行にかかった時間は記録されません。STARTTIME 列と ENDTIME 列を使用して、アクティビティの完了までにかかった時間を確認できます。また、プロビジョニングされたクラスターで SVL_STATEMENTTEXT (userid) と PG_USER (usesysid) を組み合わせると、どのユーザーがアクションを実行したかを判断できます。さらに、SYS_QUERY_HISTORY と SYS_QUERY_DETAIL を使用すると、Amazon Redshift Serverless でアクティビティが完了するまでにかかった時間を判断できます。
Amazon S3 でログが使用するストレージに対して課金されます。ストレージに追加料金はかかりません。
リーダーノードだけで実行したクエリが記録されます。リーダーノードだけで実行したクエリは記録されません。

CloudTrail

CloudTrail が収集した情報を使用して、AWS サービスに対してどのリクエストが正常に行われたか、誰がいつリクエストを行ったかを判断できます。詳細については、「AWS CloudTrailを使用した Amazon Redshift API コールのログ作成」を参照してください。

CloudTrail ログファイルは、ファイルを自動的にアーカイブまたは削除するようにライフサイクルルールを定義しない限り、Amazon S3 で無期限に保存されます。詳細については、「ストレージのライフサイクルの管理」を参照してください。

関連情報

クエリパフォーマンスのチューニング

AWS公式
AWS公式更新しました 1年前
コメントはありません