Amazon Relational Database Service
ユーザーガイド

SQL Server Audit

Amazon RDS では、組み込みの SQL Server 監査メカニズムを使用して、Microsoft SQL Server データベースを監査することができます。監査と監査の仕様は、オンプレミスのデータベースサーバー用にそれらを作成するのと同じ方法で作成することができます。

RDS は、完了した監査ログを S3 バケットにアップロードします。この際、作成されたロールを IAM 使用します。保存を有効にしている場合、RDS は設定された期間、監査ログを DB インスタンスに保存します。

詳細については、Microsoft SQL Server ドキュメントの「SQL Server Audit (データベースエンジン)」を参照してください。

SQL Server Audit のサポート

Amazon RDS では、SQL Server 2012 以降、SQL Server のすべてのエディションでサーバーレベルの監査がサポートされており、Enterprise エディションでもデータベースレベルの監査がサポートされています。SQL Server SQL Server 2016 (13.x) SP1 以降では、すべてのエディションでサーバーレベルとデータベースレベルの両方の監査がサポートされています。詳細については、Microsoft SQL Server ドキュメントの「SQL Server Audit (データベースエンジン)」を参照してください。

RDS では、SQL Server Audit に関する次のオプション設定の構成をサポートしています。

オプション設定 有効な値 説明
IAM_ROLE_ARN 形式 arn:aws:iam::account-id:role/role-name の有効な Amazon リソースネーム (ARN)。 監査ログを保存する S3 バケットへのアクセスを許可する IAM ロールの ARN。詳細については、「AWS Identity and Access Management (IAM)」を参照してください。
S3_BUCKET_ARN arn:aws:s3:::bucket-name 形式または arn:aws:s3:::bucket-name/key-prefix 形式の有効な ARN。 監査ログを保存する S3 バケットの ARN。
ENABLE_COMPRESSION true または false 監査ログの圧縮を行います。デフォルトでは、圧縮は有効です (true に設定されている)。
RETENTION_TIME 0840 SQL Server 監査レコードが RDS インスタンスに保持される保持期間 (時間単位)。保持設定は、デフォルトでは無効になります。

SQL Server Audit を DB インスタンスオプションに追加する

SQL Server 監査を有効にするには、DB インスタンスでオプションを有効にすることと、SQL Server 内の機能を有効にすることの 2 つのステップを行う必要があります。SQL Server Audit オプションを DB インスタンスに追加するプロセスは次のとおりです。

  1. 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。

  2. すべての必須オプションを追加して構成します。

  3. オプショングループを DB インスタンスに関連付けます。

SQL Server Audit オプションを追加後、DB インスタンスを再起動する必要はありません。オプショングループがアクティブになった時点で、監査を作成して監査ログを S3 バケットに保存できるようになります。

DB インスタンスのオプショングループに SQL Server Audit を追加して設定するには

  1. 次のいずれかを選択します。

    • 既存のオプショングループを使用します。

    • カスタムの DB オプショングループを作成し、そのオプショングループを使用します。詳細については、「オプショングループを作成する」を参照してください。

  2. オプショングループに [SQLSERVER_AUDIT] オプションを追加し、オプションを設定します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。

    • 必要なポリシーがアタッチされた IAM ロールがある場合は、IAM ロールで、そのロールを選択することができます。新しい IAM ロールを作成するには、[新しいロールの作成] を選択します。必要なポリシーの詳細については、SQL Server Audit の IAM ロールを手動で作成する を参照してください。

    • 使用する S3 バケットがすでにある場合は、[Select S3 destination] で選択します。S3 バケットを作成するには、[新しい S3 バケットの作成] を選択します。

    • [Enable Compression (圧縮の有効化)] で、このオプションはチェックをオンにしたままにし、監査ファイルを圧縮します。デフォルトでは、圧縮は有効になっています。圧縮を無効にするには、[Enable Compression (圧縮の有効化)] をオフにします。

    • DB インスタンスの監査レコードを維持するには、[Audit log retention (監査ログの保持)] オプションをオンにします。保持期間 (時間) を指定します。最大保持期間は 35 日間です。

  3. 新規または既存の DB インスタンスに、DB オプショングループを適用します。次のいずれかを選択します。

    • 新しい DB インスタンスを作成する場合は、インスタンスを起動するときにオプショングループを適用します。

    • 既存の DB インスタンスで、インスタンスを変更し、新しいオプショングループをアタッチして、オプショングループを適用します。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

SQL Server Audit オプションを変更する

SQL Server Audit オプションを有効にしたら、設定を変更できます。オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。

DB インスタンスオプションから SQL Server Audit を削除する

SQL Server Audit 機能をオフにするには、監査を無効にし、オプションを削除します。

監査を削除するには

  1. SQL Server 内の監査設定をすべて無効にします。監査が実行されている場所を確認するには、SQL Server セキュリティカタログビューをクエリします。詳細については、Microsoft SQL Server のドキュメントの「セキュリティカタログビュー」を参照してください。

  2. DB インスタンスから SQL Server Audit オプションを削除します。次のいずれかを選択します。

    • DB インスタンスで使用しているオプショングループから SQL Server Audit オプションを削除します。この変更は同じオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「オプショングループからオプションを削除する」を参照してください。

    • DB インスタンスを変更し、オプショングループを選択します (SQL Server Audit オプションはオフ)。この変更は、変更した DB インスタンスにのみ影響します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

  3. DB インスタンスから SQL Server Audit オプションを削除後、インスタンスを再起動する必要はありません。S3 バケットから不要な監査ファイルを削除します。

SQL Server Audit を使用する

サーバー監査、サーバー監査の仕様、およびデータベース監査の仕様は、オンプレミスデータベースサーバーの場合と同じ方法で制御することができます。

監査の作成

サーバーの監査は、オンプレミスデータベースサーバーで作成した方法と同じ方法で作成することができます。サーバー監査の作成方法については、Microsoft SQL Server ドキュメントの「CREATE SERVER AUDIT」を参照してください。

エラーを回避するには、次の制限に準拠します。

  • インスタンスごとにサポートされるサーバー監査の最大数 50 を超えない。

  • データをバイナリファイルに書き込むように SQL Server に指示する。

  • サーバーの監査名のプリフィックスとして RDS_ を使用しない。

  • FILEPATH で、D:\rdsdbdata\SQLAudit を指定する。

  • MAXSIZE で、2 MB~50 MB の間のサイズを指定する。

  • MAX_ROLLOVER_FILES または MAX_FILES を設定しない。

  • 監査レコードの書き込みに失敗した場合に DB インスタンスをシャットダウンするように SQL Server を構成しない。

監査仕様の作成

サーバー監査仕様とデータベース監査仕様は、オンプレミスデータベースサーバーで作成するのと同じ方法で作成します。監査仕様の作成方法については、Microsoft SQL Server のドキュメントの「CREATE SERVER AUDIT SPECIFICATION」および「CREATE DATABASE AUDIT SPECIFICATION」を参照してください。

エラーを回避するために、データベース監査仕様またはサーバー監査仕様の名前のプリフィックスとして RDS_ を使用しないでください。

監査ログの表示

監査ログは D:\rdsdbdata\SQLAudit に格納されます。

ファイルがサイズ制限に達している場合に SQL Server が監査ログファイルへの書き込みを完了すると、Amazon RDS はファイルを S3 バケットにアップロードします。保持設定が有効になっている場合、Amazon RDS は、このファイルを保持フォルダ (D:\rdsdbdata\SQLAudit\transmitted) に移動します。

保持設定については、SQL Server Audit を DB インスタンスオプションに追加する を参照してください。

監査ログファイルがアップロードされるまで、監査レコードは DB インスタンスに維持されます。監査レコードを表示するには、次のコマンドを実行します。

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

同じコマンドを使用して、保持フォルダの監査レコードを表示するには、フィルタを D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit に変更します。

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

マルチ AZ インスタンスで SQL Server Audit を使用する

マルチ AZ インスタンスで、監査ログファイルを Amazon S3 に送信するためのプロセスは、単一 AZ インスタンスのプロセスと似ています。ただし、重要な相違点がいくつかあります。

  • データベース監査仕様オブジェクトはすべてのノードにレプリケートされます。

  • サーバー監査およびサーバー監査仕様は、セカンダリノードにはレプリケートされません。その代わりに、手動で作成または変更する必要があります。

サーバー監査またはサーバー監査仕様を両方のノードからキャプチャするには

  1. サーバー監査またはサーバー監査仕様をプライマリノードに作成します。

  2. セカンダリノードにフェールオーバーし、セカンダリノードに同じ名前と GUID を持つサーバー監査仕様またはサーバー監査仕様を作成します。GUID を指定するには、AUDIT_GUID パラメータを使用します。

S3 バケットを設定する

監査ログファイルは、DB インスタンスから S3 バケットに自動的にアップロードされます。監査ファイルのターゲットとして使用する S3 バケットには、以下の制限が適用されます。

  • DB インスタンスと同じ AWS リージョンにある必要があります。

  • 公開することは禁止されています。

  • バケット所有者は IAM ロール所有者でもある必要があります。

データを格納するために使用されるターゲットキーは、次の命名スキーマに従います: bucket-name/key-prefix/instance-name/audit-name/node_file-name.ext

注記

バケット名とキープレフィックス値の両方を S3_BUCKET_ARN オプションで設定します。

このスキーマは、以下の要素で構成されています。

  • bucket-name – S3 バケットの名前。

  • key-prefix – 監査ログに使用するカスタムキープレフィックス。

  • instance-name – Amazon RDS インスタンスの名前。

  • audit-name – 監査の名前。

  • node – 監査ログのソースであるノードの識別子 (node1 または node2)。シングル AZ インスタンスには 1 つのノード、マルチ AZ インスタンスには 2 つのレプリケーションノードがあります。プライマリノードとセカンダリノードのロールは時間とともに変化するため、これらはプライマリノードとセカンダリノードではありません。その代わりに、ノード識別子はシンプルなラベルです。

    • node1 – 最初のレプリケーションノード (シングル AZ には 1 つのノードのみがあります)。

    • node2 – 2 番目のレプリケーションノード (マルチ AZ には 2 つのノードがあります)。

  • file-name – ターゲットファイルの名前。ファイル名は SQL Server からそのまま取得されます。

  • ext – ファイルの拡張子 (zip または sqlaudit)。

    • zip – 圧縮が有効になっているかどうか (デフォルト)。

    • sqlaudit – 圧縮が無効になっているかどうか。

SQL Server Audit の IAM ロールを手動で作成する

通常、新しいオプションを作成すると、AWS マネジメントコンソール は IAM ロールと IAM 信頼ポリシーを作成します。ただし、SQL Server Audits で使用する新しい IAM ロールを手動で作成して、必要に応じてその他の要件に合わせてカスタマイズできます。そのためには、Amazon RDS サービスで Amazon S3 バケットを使用できるように、IAM ロールを作成して、アクセス許可を委任します。この IAM ロールを作成したら、信頼ポリシーとアクセス許可ポリシーをアタッチします。信頼ポリシーを使用することで、Amazon RDS はこのロールを引き受けることができます。アクセス許可ポリシーでは、このロールが実行できるアクションを定義します。詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS サービスにアクセス権限を委任するロールの作成」を参照してください。

必要な信頼ポリシーとアクセス許可ポリシーは、このセクションの例を使用して作成できます。

以下の例は、SQL Server Audit の信頼ポリシーを示しています。このポリシーでは、サービスプリンシパル rds.amazonaws.com を使用して、RDS で S3 バケットに書き込めるようにします。サービスプリンシパルは、サービスにアクセス許可を付与するために使用される識別子です。このように、いつでも rds.amazonaws.com にアクセス許可を付与できます。これにより、RDS はお客様に代わってアクションを実行できるようになります。サービスプリンシパルの詳細については、「AWS JSON ポリシーの要素: プリンシパル」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

SQL Server Audit のアクセス許可ポリシーの次の例では、Amazon S3 バケットの Amazon リソースネーム (ARN) を指定します。ARN を使用して、アクセス許可を付与する特定のアカウント、ユーザー、またはロールを識別します。ARN の使用の詳細については、「Amazon リソースネーム (ARN)」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }