Amazon Redshift クラスターでデータベース監査を実行する方法を教えてください。
簡単な説明
Amazon Redshift は 3 つのログ記録モードを提供します。
監査ログと 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 に無期限に保存されます。詳細については、オブジェクトのライフサイクル管理をご参照ください。
関連情報
クエリパフォーマンスのチューニング
ユーザーアクティビティログリリースノート