Amazon Redshift データベースクラスターのアクティビティを追跡するログを使用する方法を教えてください。

最終更新日: 2020 年 12 月 23 日

Amazon Redshift クラスターでデータベース監査を実行する方法を教えてください。

簡単な説明

Amazon Redshift は 3 つのログ記録モードを提供します。

  • 監査ログ: Amazon Simple Storage Service (Amazon S3) バケットに保存されます
  • STL テーブル: クラスターに各ノードが保存されます
  • AWS CloudTrail: Amazon S3 バケットに保存されます

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

注: 外部テーブルを使用してログを表示するには、Amazon Redshift Spectrum を使用してください。詳細については、Amazon Redshift Spectrum を使用した、セキュリティとコンプライアンスのためのデータベース監査ログの分析をご参照ください。

解決方法

監査ログと STL テーブル

次の表では、監査ログと STL テーブルを比較しています。ユースケースに適したログ作成オプションを選択します。

監査ログ STL テーブル
有効にする必要があります。監査ログを有効にするには、コンソールを使用して監査を設定するまたは Amazon Redshift CLI および API を使用してログ作成を設定するの手順に従います。 データウェアハウスクラスター内の各ノードで自動的に有効になります。
監査ログファイルは、自動的にファイルをアーカイブまたは削除する Amazon S3 ライフサイクルルールを定義しない限り、無期限に保存されます。詳細については、オブジェクトのライフサイクル管理をご参照ください。 ログ履歴は、ログの使用状況と使用可能なディスク容量に応じて、2~5 日分が保存されます。保存期間を延長するには、GitHub の AWS ラボから Amazon Redshift システムオブジェクト永続性ユーティリティを使用します。
監査ログファイルへのアクセスには、Amazon Redshift データベースにアクセスする必要はありません。 STL テーブルへのアクセスには、Amazon Redshift データベースにアクセスする必要があります。
Amazon S3 に保存されたログの確認には、データベースコンピューティングリソースは必要ありません。 STL テーブルに対してクエリを実行するには、他のクエリを実行するときと同様に、データベースコンピューティングリソースが必要です。
タイムスタンプを使用して、プロセス ID をデータベースアクティビティに関連付けることができます。クラスターの再起動は、Amazon S3 の監査ログに影響しません。 クラスターが再起動したときに、プロセス ID がリサイクルされる可能性があるため、常にプロセス ID をデータベースアクティビティに関連付けることができるとは限りません。
次のログファイルに情報を保存します。 複数のテーブルの情報を保存します。次の表を使用して、S3 監査ログに保存されているものと同様の情報を確認します。
  • SVL_STATEMENTTEXT: システム上で実行された SQL コマンドの完全な記録を提供します。STL_DDLTEXT テーブル、STL_QUERYTEXT テーブル、STL_UTILITYTEXT テーブルのすべての行を結合します。
  • STL_CONNECTION_LOG: 認証試行、接続、切断を記録します。
ユーザーアクティビティログのすべての SQL ステートメントを記録します。 実行されたクエリは、STL_QUERY のログに記録されます。DDL ステートメントは、STL_DDLTEXT のログに記録されます。SELECT 以外の SQL コマンドのテキストは、STL_UTILITYTEXT のログに記録されます。
ステートメントは Amazon Redshift が受信するとすぐにログに記録されます。Amazon S3 のファイルはバッチで更新され、表示されるまでに数時間かかる場合があります。 ログは、各 SQL ステートメントの実行後に生成されます。
誰が何のアクションを実行したか、そのアクションがいつ発生したかを記録しますが、アクションの実行にかかった時間は記録されません。 STARTTIME と ENDTIME 列を使用して、アクティビティが完了するまでの所要時間を判断します。どのユーザーがアクションを実行したかを判断するには、SVL_STATEMENTTEXT (userid) と PG_USER (usesysid) を組み合わせます。
料金が発生するのは、ログが Amazon S3 で実際に使用したストレージの分です。 STL テーブルストレージに追加料金は発生しません。
リーダーノードのみのクエリは、記録されます。 リーダーノードのみのクエリは、記録されません。

CloudTrail

CloudTrail が収集した情報を使用して、成功した AWS のサービスリクエスト、そのリクエストの送信者、そのリクエストの送信時刻を確認できます。詳細については、AWS CloudTrail を使用した Amazon Redshift API 呼び出しのログ記録をご参照ください。

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


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?