データベースアクティビティストリームを使用した Amazon RDS のモニタリング
データベースアクティビティストリームを使用すると、データベースアクティビティのストリームをほぼリアルタイムでモニタリングできます。
トピック
データベースアクティビティストリーミングの概要
Amazon RDS データベース管理者として、データベースを保護し、コンプライアンスおよび規制要件を満たす必要があります。1 つの戦略は、データベースアクティビティストリーミングをモニタリングツールに統合することです。このようにして、データベースでモニタリングを行い、監査アクティビティのアラームを設定します。
セキュリティの脅威は、外部と内部の両方です。内部の脅威から保護するために、データベースアクティビティストリーミング機能を設定して、データストリームへの管理者アクセスを制御できます。Amazon RDS DBA には、ストリームの収集、送信、保存、および処理に対するアクセス権限がありません。
目次
データベースアクティビティストリーミングの機能
Amazon RDS は、アクティビティをほぼリアルタイムで Amazon Kinesis データストリームにプッシュします。Kinesis ストリーミングが自動的に作成されます。Kinesis から、Amazon Data Firehose や AWS Lambda などの AWS サービスを設定して、ストリーミングを消費し、データを保存できます。
重要
Amazon RDS のデータベースアクティビティストリーム機能は無料でご利用いただけますが、Amazon Kinesis のデータストリームに対しては課金されます。詳細については、「Amazon Kinesis Data Streams の料金表
コンプライアンス管理のためのアプリケーションを設定して、データベースアクティビティストリーミングを使用できます。このようなアプリケーションでストリームを使用して、データベースについてのアラートと監査アクティビティを生成できます。
Amazon RDS は、マルチ AZ 配置でのデータベースアクティビティストリームをサポートしています。この場合、データベースアクティビティストリーミングはプライマリインスタンスとスタンバイインスタンスの両方を監査します。
Oracle データベースおよび Microsoft SQL Server データベースでの監査
監査とは、設定されたデータベースアクションをモニタリングし記録することです。Amazon RDS は、デフォルトではデータベースアクティビティをキャプチャしません。データベースで監査ポリシーを自分で作成し、管理します。
トピック
Oracle Database での統合監査
Oracle データベースでは、統合監査ポリシーとは、ユーザーの動作のある面を監査するために使用できる監査設定の名前付きグループです。単一のユーザーのアクティビティを監査するといったシンプルなポリシーもあり得ます。条件を使用する複雑な監査ポリシーも作成できます。
Oracle データベースは、SYS
監査レコードを含む監査レコードを統合監査証跡に書き込みます。例えば、INSERT
ステートメントでエラーが発生した場合、標準監査では、エラー番号と実行された SQL が示されます。監査証跡は、AUDSYS
スキーマの読み取り専用テーブルに格納されます。これらのレコードにアクセスするには、UNIFIED_AUDIT_TRAIL
データディクショナリビューにクエリを実行します。
通常、データベースアクティビティストリーミングは次のように設定します。
-
CREATE AUDIT POLICY
コマンドを使用して、Oracle Database の監査ポリシーを作成します。Oracle Database は、監査レコードを生成します。
-
AUDIT POLICY
コマンドを使用して、監査ポリシーを有効にします。 -
データベースアクティビティストリーミングを設定します。
Oracle Database の監査ポリシーに適合するアクティビティのみがキャプチャされ、Amazon Kinesis データストリーミングに送信されます。データベースアクティビティストリーミングが有効な場合、Oracle データベース管理者は監査ポリシーを変更したり、監査ログを削除したりできません。
統合監査ポリシーの詳細については、Oracle Database セキュリティガイドの「統合監査ポリシーおよび AUDIT を使用した監査アクティビティについて
Microsoft SQL Server での監査
データベースアクティビティストリームは、SQLAudit 機能を使用して SQL Server データベースを監査します。
RDS for SQL Server インスタンスには、以下が含まれます。
サーバー監査 — SQL サーバー監査では、サーバーレベルまたはデータベースレベルのアクションの単一のインスタンスと、監視するアクションのグループを収集します。サーバーレベルの監査
RDS_DAS_AUDIT
とRDS_DAS_AUDIT_CHANGES
は、RDS によって管理されます。サーバー監査仕様 — サーバー監査仕様は、サーバーレベルのイベントを記録します。
RDS_DAS_SERVER_AUDIT_SPEC
仕様は変更できます。この仕様はサーバー監査RDS_DAS_AUDIT
にリンクされています。RDS_DAS_CHANGES_AUDIT_SPEC
仕様は RDS によって管理されます。データベース監査仕様 — データベース監査仕様は、データベースレベルのイベントを記録します。データベース監査仕様
RDS_DAS_DB_<name>
を作成し、それをRDS_DAS_AUDIT
サーバー監査にリンクできます。
データベースアクティビティストリームは、コンソールまたは CLI を使用して設定できます。通常、データベースアクティビティストリーミングは次のように設定します。
-
(オプション)
CREATE DATABASE AUDIT SPECIFICATION
コマンドを使用してデータベース監査仕様を作成し、それをRDS_DAS_AUDIT
サーバー監査にリンクします。 -
(オプション)
ALTER SERVER AUDIT SPECIFICATION
コマンドを使用してサーバー監査仕様を変更し、ポリシーを定義します。 -
データベースおよびサーバー監査ポリシーを有効にします。以下に例を示します。
ALTER DATABASE AUDIT SPECIFICATION [<Your database specification>] WITH (STATE=ON)
ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC] WITH (STATE=ON)
-
データベースアクティビティストリーミングを設定します。
サーバーおよびデータベース監査ポリシーに一致するアクティビティのみがキャプチャされ、Amazon Kinesis データストリームに送信されます。データベースアクティビティストリームが有効であり、ポリシーがロックされているときには、データベース管理者は監査ポリシーを変更したり、監査ログを削除したりできません。
重要
特定のデータベースのデータベース監査仕様が有効であり、ポリシーがロック状態の場合、データベースを削除することはできません。
詳細については、Microsoft SQL Server ドキュメントの「SQL Server 監査コンポーネント
Oracle Database および SQL Server の非ネイティブ監査フィールド
データベースアクティビティストリーミングをスタートすると、すべてのデータベースイベントが対応するアクティビティストリーミングイベントを生成します。例えば、データベースユーザーが SELECT
ステートメントと INSERT
ステートメントを実行したとします。データベースは、これらのイベントを監査し、Amazon Kinesis データストリーミングに送信します。
イベントは、ストリーミングの中で、JSON オブジェクトとして表されます。JSON オブジェクトには、DatabaseActivityMonitoringRecord
が含まれ、これには databaseActivityEventList
アレイが含まれています。アレイ内の定義済みフィールドには、class
、clientApplication
、command
などがあります。
デフォルトでは、アクティビティストリーミングにはエンジンネイティブの監査フィールドは含まれません。Amazon RDS for Oracle と SQL Server を設定して、これらの追加フィールドを engineNativeAuditFields
JSON オブジェクトに含めることができます。
Oracle Database では、統合監査証跡のほとんどのイベントは、RDS データアクティビティストリームのフィールドにマップされます。例えば、統合監査の UNIFIED_AUDIT_TRAIL.SQL_TEXT
フィールドは、データベースアクティビティストリーミング内の commandText
フィールドにマッピングされます。ただし、OS_USERNAME
などの Oracle Database 監査フィールドは、データベースアクティビティストリーミングの定義済みフィールドにマッピングされません。
SQL Server では、SQLAudit によって記録されるイベントのフィールドのほとんどが RDS データベースアクティビティストリームのフィールドにマップされます。例えば、監査の sys.fn_get_audit_file
のcode
フィールドは、データベースアクティビティストリームの commandText
フィールドにマップされます。ただし、permission_bitmask
などの SQL Server データベース監査フィールドは、データベースアクティビティストリームの定義済みフィールドにマップされません。
databaseActivityEventList の詳細については、「データベースアクティビティストリームの databaseActivityEventList JSON 配列」を参照してください。
DB パラメータグループオーバーライド
通常、RDS for Oracle で統一監査を有効にするには、パラメータグループをアタッチします。ただし、データベースアクティビティストリームには、追加の設定が必要です。カスタマーエクスペリエンスを向上させるため、Amazon RDS では以下を実行しています。
-
アクティビティストリームを有効にすると、RDS for Oracle はパラメータグループの監査パラメータを無視します。
-
アクティビティストリームを無効にすると、RDS for Oracle は監査パラメータの無視を停止します。
SQL Server のデータベースアクティビティストリームは、SQL Audit オプションで設定したパラメータとは無関係です。
データベースアクティビティストリーミングの非同期モード
Amazon RDS のアクティビティストリームは、常に非同期です。データベースセッションでアクティビティストリーミングイベントが生成されると、セッションは直ちに通常のアクティビティに戻ります。バックグラウンドでは、Amazon RDS によりアクティビティストリームイベントが永続的なレコードになります。
バックグラウンドタスクでエラーが発生した場合は、Amazon RDS はイベントを生成します。このイベントは、アクティビティストリーミングのイベントレコードが失われた可能性がある時間枠のスタートと終了を示します。非同期モードでは、アクティビティストリーミングの精度よりもデータベースのパフォーマンスが優先されます。
データベースアクティビティストリームの要件と制限
RDS では、データベースアクティビティストリームに、次の要件と制限があります。
-
データベースアクティビティストリーミングには、Amazon Kinesis が必要です。
-
常に暗号化されているため、アクティビティストリーミングには AWS Key Management Service (AWS KMS) が必要です。
-
Amazon Kinesis データストリームに追加の暗号化を適用することは、AWS KMS キーで暗号化済みのデータベースアクティビティストリーミングと互換性がありません。
-
監査ポリシーは自分で作成して、管理します。Amazon Aurora とは異なり、RDS for Oracle はデフォルトでデータベースアクティビティをキャプチャしません。
-
監査ポリシーまたは仕様は自分で作成して、管理します。Amazon Aurora とは異なり、Amazon RDS はデフォルトではデータベースアクティビティをキャプチャしません。
-
マルチ AZ 配置では、プライマリ DB インスタンスのみでデータベースアクティビティストリームを開始してください。アクティビティストリーミングは、プライマリインスタンスとスタンバイ DB インスタンスの両方を自動的に監査します。フェイルオーバー中に追加のステップは必要ありません。
-
DB インスタンスの名前を変更しても、新しい Kinesis ストリームは作成されません。
-
CDB は、RDS for Oracle ではサポートされません。
-
リードレプリカはサポートされていません。
利用可能なリージョンとバージョン
機能の可用性とサポートは、各データベースエンジンの特定のバージョン、および AWS リージョン によって異なります。データベースアクティビティストリーミングでのバージョンとリージョンの可用性の詳細については、「Amazon RDS のデータベースアクティビティストリームでサポートされているリージョンと DB エンジン」を参照してください。
データベースアクティビティストリーミングでサポートされる DB インスタンスクラス
RDS for Oracle では、次の DB インスタンスクラスでデータベースアクティビティストリームを使用できます。
-
db.m4.*large
-
db.m5.*large
-
db.m5d.*large
-
db.m6i.*large
-
db.r4.*large
-
db.r5.*large
-
db.r5.*large.tpc*.mem*x
-
db.r5b.*large
-
db.r5b.*large.tpc*.mem*x
-
db.r5d.*large
-
db.r6i.*large
-
db.x2idn.*large
-
db.x2iedn.*large
-
db.x2iezn.*large
-
db.z1d.*large
RDS for Oracle では、次の DB インスタンスクラスでデータベースアクティビティストリームを使用できます。
-
db.m4.*large
-
db.m5.*large
-
db.m5d.*large
-
db.m6i.*large
-
db.r4.*large
-
db.r5.*large
-
db.r5b.*large
-
db.r5d.*large
-
db.r6i.*large
-
db.x1e.*large
-
db.z1d.*large
インスタンスクラスのタイプの詳細については、「 DB インスタンスクラス」を参照してください。