Share
Embed
Transcript
19 slides
-
ログの種類(MySQLの場合) MySQLの場合、監査ログを含めて以下の5種類のログがあります。 ログ種別 何が記録されるか 主な用途 監査ログ 誰が何をしたか セキュリティ・監査対応 エラーログ 起動・停止・エラー
障害調査 一般ログ 接続と受け取ったSQL全部 デバッグ iam-db-auth-error ログ IAMデータベース認証の失敗 IAM認証のトラブルシュート スロークエリログ long_query_timeを超えたSQL 性能改善 -
ログの種類(MySQL以外) 各DBエンジンで取得できるログの種類が異なります。 採用エンジンでどのログを取得するべきか、検討する必要があります。 エンジン RDS for MySQL RDS for MariaDB
Aurora MySQL 取得できるログ エラー、スロークエリ、一般(全般) 、監査、IAMデータベース認証エラー、インス タンス、バイナリログ エラー、スロークエリ、一般、監査、IAMデータベース認証エラー、バイナリログ エラー、スロークエリ、一般、監査(Advanced Auditing) 、インスタンス、バイナ リログ RDS for PostgreSQL PostgreSQLログ(pgAuditの出力もここに混ざる) 、アップグレードログ、IAMデー タベース認証エラーログ Aurora PostgreSQL PostgreSQLログ(pgAuditの出力もここ) RDS for Oracle RDS for SQL Server RDS for Db2 アラートログ(テキストとXML) 、監査ファイル、リスナーログ、トレースファイ ル、OEMエージェントログ エラーログ、エージェントログ、トレースファイル、ダンプファイル、監査ログ (SQL Server Audit) 診断ログ、通知ログ、監査ログ(Db2 Audit) -
保持期間 基本的にCloudWatch Logsへのエクスポートを推奨しています。 DB上のログは自動的にローテーションされるためです。 エンジン インスタンス上の保持 RDS for MySQL(監査ログ) SERVER_AUDIT_FILE_ROTATE_SIZE(既定1MB)に達する
とローテーション。SERVER_AUDIT_FILE_ROTATIONS(既 定9)の世代数を超えると古いファイルから削除 RDS for MySQL(エラー・一般・スロークエリ) 1時間ごとにローテーション。2週間より古いログを削除。3種 の合計サイズが割り当てストレージの2%を超えると古いもの から削除 RDS for MariaDB(エラー・一般・スロークエリ) 1時間ごとにローテーション。24時間より古いログを削除。 2%の制限はMySQLと同じ RDS for PostgreSQL rds.log_retention_periodで制御。既定4320分(3日) 、設定 範囲は1440〜10080分 RDS for Oracle 監査ファイルは既定7日 -
有効化前に知っておくべき注意点 ◆ログの量が想像以上に増える 監査ログはSQL1つごとに1行以上を出力します。 全SQLを記録すると、想定以上にコストが発生する可能性があります。 対策 具体策 イベントを絞る ログイン監査だけならCONNECTのみ、更新監査なら QUERY_DML_NO_SELECT(MariaDB) ユーザーを絞る
rdsadminなどヘルスチェック系ユーザーを除外 クエリ長を制限する SERVER_AUDIT_QUERY_LOG_LIMITで上限を設定 ストレージを監視する FreeStorageSpaceにCloudWatchアラームを設定 -
まとめ RDSはデフォルトで監査ログを取らない DB側、パラメータグループ・オプショングループの設定が必要 CloudWatch Logsエクスポートの設定も明示的に有効化 CloudTrailとRDS監査ログは別物。どっちも大事。 インスタンス上のログは数日から2週間程度で自動削除される CloudWatch Logs, S3へエクスポートしよう
全SQL記録すると容量とコストで肥大化する 本番でびっくりしないように、検証環境で試してみよう 何のために監査ログを記録するのか考え、記録が必要なSQLを絞る