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_STATEMENTTEXT、STL_CONNECTION_LOG、および SYS_CONNECTION_LOG を使用して詳細情報を表示できます。 |
すべての SQL ステートメントをユーザーアクティビティログに記録します。 | 実行したクエリは STL_QUERY に記録されます。DDL ステートメントは STL\ _DDLTEXT に記録されます。SELECT 以外の SQL コマンドのテキストは STL_UTILITYTEXT に記録されます。Amazon Redshift Serverless では、SYS_QUERY_HISTORY と SYS_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 で無期限に保存されます。詳細については、「ストレージのライフサイクルの管理」を参照してください。
関連情報
クエリパフォーマンスのチューニング