SQL Serverの前提条件

    SQL Serverの前提条件


    記事の要約

    SQL Serverには、以下の前提条件があります。

    ※ID管理が〇になっている項目は、ID管理の機能の制約になります。ログが〇になっている項目は、アクセスログ管理のログ自動収集機能、または、ログ自動収集機能で収集したアクセスログ(ログインログ・ログアウトログ・suログ・ログイン失敗ログ)で出力するレポートの制約になります。

    No

    条件

    対象機能

    ID

    ログ

    1

    SQL Serverの接続はSQL Server認証で接続可能な事。

    -

    2

    iDoperationでは、ログインユーザー、包含ユーザーいずれかの管理を行う事が出来ます。

    〇ログインユーザー
    指定したインスタンスに所属するログインユーザーを管理します。
    ・パスワード変更/アクセス監査
    〇包含ユーザー
    指定した包含データベースに所属する包含ユーザーを管理します。
    ・パスワード変更/アクセス監査

    -

    3

    iDoperation Cloudに対象データベースのサービスポートが開放されリモートからアクセス出来る事。

    -

    4

    ID管理用のアカウントとして、接続可能なsaアカウント、もしくはSQL Server認証で接続出来る以下の権限(*1)を保有しているアカウントを用意する事。
    (*1)以下の権限を持っている事。
    〇ログインユーザー
    ・接続先インスタンスに対してALTER ANY LOGINの権限
    〇包含ユーザー
    ・接続先データベースに対してALTER ANY USERの権限

    -

    5

    SQL Serverが動作しているOSがターゲットとして登録されている事。
    また、そのターゲットでID管理、ログ収集のどちらかを実施している事。
    ※アクセスログの収集は、SQL Serverが動作しているOSに接続して実施します。

    -

    6

    SQL Serverが動作しているOSが、Windowsサーバの前提条件『Windows系ターゲットの前提条件』のログ収集の条件を満たしている事。

    -

    7

    ログ収集対象のログの設定は、以下の監査アクションを設定し、Windowsイベントログ(アプリケーション)に出力されている事。

    〇ログインユーザーを管理する場合の監査アクション
    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    〇包含ユーザーを管理する場合の監査アクション
    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP
    ※上記、監査アクションがWindows イベントログ(セキュリティ)へ出力されている場合は、Windows イベントログ(アプリケーション)へ出力するよう設定を変更する必要があります。
    詳細は『管理対象のログ出力設定』を参照してください。

    -

    8

    Windowsイベントログ(アプリケーション)のローテート設定が下記どちらかの条件を満たしている事。

    • 必要に応じてイベントを上書きする(最も古いイベントから)
    • イベントを上書きしないでログをアーカイブする

    ※Windows Server 2019 / Windows 10で「イベントを上書きしないでログをアーカイブする」の設定をした場合に、イベントログが「最大ログサイズ」になってもアーカイブされず、新たなイベントログが記録されないという事象が確認されています。該当のOSで「イベントを上書きしないでログをアーカイブする」の設定をした場合は、正常にイベントログがアーカイブされる事を確認してください。

    -

    9

    Windowsイベントログ(アプリケーション)のローテート設定が「必要に応じてイベントを上書きする(最も古いイベントから)」になっている場合は、下記の設定になっている事。

    • メンテナンスなどのサーバ停止で、ログの収集が出来ない期間を考慮して、最低2日分のログが上書きされずに蓄積出来る「最大ログサイズ」が設定されている事。

    -

    10

    Windows イベントログ(アプリケーション)のローテート設定が「イベントを上書きしないでログをアーカイブする」になっている場合は、下記の設定になっている事。

    • アーカイブの頻度は2日以上になる「最大ログサイズ」が設定されている事。
    • イベントログのプロパティにある「ログのパス」で指定されているファイルのフォルダが、共有フォルダになっている事。
    • 共有フォルダにSQL Serverが動作しているOSのログ収集用アカウントのアクセス権(読み込み)を設定している事。
    • 冗長構成のSQL Serverの各ノードから、アーカイブされたイベントログを収集する場合は、各ノード間の共有フォルダのログファイルパスがIPアドレス・ホスト名部分を除いて同一になっている事。

    -

    11

    冗長構成されたSQL Serverを管理対象とする場合は下記を満たしている事。

    • ノード間のアカウントの同期は、SQL Server AlwaysOnの機能で行う事。
    • 全ノードで時刻、タイムゾーンが同一である事。
    • SQL Serverの前提条件(本表)が満たされ、全ノードで同一になっている事。

    12

    冗長化されたActive Directory環境にSQL ServerをAlwaysOn環境で構築している場合は、Active Directoryの全ノードにSQL Serverの全ノードが構築されている事。

    -

    管理対象のログ出力設定

    SQL Server監査ログをWindowsイベントログ(アプリケーション)に出力する設定を行います。
    本手順ではMicrosoft SQL Server Management Studioを例に説明します。

    Microsoft SQL Server Management Studio画面説明

    本手順で使用する、Microsoft SQL Server Management Studioのクエリ画面について説明します。

    各操作ボタンを表示するエリアです。

    No

    条件

    1

    メニューやボタンです。

    2

    クエリを入力する画面です。

    3

    クエリの実行結果を表示します。
    列が多い場合、結果が非表示エリアに隠れるため、横スクロールして結果表示を確認してください。

    設定確認方法

    SQL Serverの監査ログ出力設定を確認します。

    1.Microsoft SQL Server Management Studioを起動し、対象のインスタンスに接続します。

    Microsoft SQL Server Management Studioがインスタンスに接続します。

    2.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    3.クエリ画面に、以下のクエリを入力します。

    select * from sys.server_audits;

    4.「実行」をクリックし、クエリを実行します。

    5.結果画面にある「結果」タブを開き、監査設定の有無を確認します。クエリの実行結果から、type_desc列を確認し、「APPLICATION LOG」、「SECURITY LOG」に設定されているものが存在するか確認します。

    監査ログ出力設定がされている場合、「APPLICATION LOG」、「SECURITY LOG」それぞれの<name>、<audit_guid>の値を控えてください。

    メモ欄

    APPLICATION LOGのname

    [            ]

    APPLICATION LOGのaudit_guid

    [            ]

    SECURITY LOGのname

    [            ]

    SECURITY LOGのaudit_guid

    [            ]

    6.手順5で確認した「APPLICATION LOG」、「SECURITY LOG」の有無に応じた、監査ログ設定を行います。

    No

    APPLICATION LOG

    設定の有無

    SECURITY LOG

    設定の有無

    必要となる事前設定

    1

    Windowsイベントログ(アプリケーション)への監査ログ追加
    Windowsイベントログ(セキュリティ)の監査ログ削除

    2

    ×

    Windowsイベントログ(アプリケーション)への監査ログ追加

    3

    ×

    Windowsイベントログ(アプリケーション)への監査ログ出力設定

    Windowsイベントログ(セキュリティ)の監査ログ削除

    4

    ×

    ×

    Windowsイベントログ(アプリケーション)への監査ログ出力設定

    ※APPLICATION LOGの行はWindows イベントログ(アプリケーション)へ監査ログを出力する設定の有無を示します。
    行がない場合には設定を追加し、行がある場合には必要な設定を満たすよう設定確認と変更を行います。

    ※SECURITY LOGの行はWindows イベントログ(セキュリティ)へ監査ログを出力する設定の有無を示します。
    設定がある場合には、iDoperationの監査で利用する情報をWindowsイベントログ(アプリケーション)へ出力するよう、設定変更を行います。

    Windowsイベントログ(アプリケーション)への監査ログ出力設定

    Windowsイベントログ(アプリケーション)へ監査ログを出力する設定を行います。

    Microsoft SQL Server Management Studioで設定を行います。

    1.監査オブジェクトを作成します。「新しいクエリ」をクリックし、クエリ画面を表示させます。

    2.クエリ画面に以下のクエリを入力します。

    <監査名>を任意で指定してください。

    CREATE SERVER AUDIT <監査名>
    TO APPLICATION_LOG
    GO
    ALTER SERVER AUDIT <監査名>
    WITH (STATE = ON);

    クエリ例(「Audit_iDoperation」という監査名で作成する。):

    CREATE SERVER AUDIT Audit_iDoperation
    TO APPLICATION_LOG
    GO
    ALTER SERVER AUDIT Audit_iDoperation
    WITH (STATE = ON);

    3.「実行」をクリックし、クエリを実行します。

    4.「クエリが正常に実行されました」というメッセージが出力される事を確認します。

    5.作成した監査オブジェクトを確認します。「新しいクエリ」をクリックし、クエリ画面を表示させます。

    6.クエリ画面に以下のクエリを入力し、実行します。

    手順2で指定した<監査名>を入力します。

    select * from sys.server_audits where name='<監査名>';

    クエリ例(手順2 で指定した、「Audit_iDoperation」という監査名の確認を行う):

    select * from sys.server_audits where name='Audit_iDoperation';

    7.「実行」をクリックし、クエリを実行します。

    8.監査オブジェクトが作成され、type_desc列が「APPLICATION LOG」になっている事を確認し、「クエリが正常に実行されました」というメッセージが出力される事を確認します。

    9.作成した監査オブジェクトに監査対象とするアクションを設定します。「新しいクエリ」をクリックし、クエリ画面を表示させます。

    10.クエリ画面に以下のクエリを入力します。

    手順2で指定した<監査名>を入力し、<監査仕様名>を任意で指定してください。

    〇ログインユーザーを管理する場合
    CREATE SERVER AUDIT SPECIFICATION <監査仕様名>
    FOR SERVER AUDIT <監査名>
      ADD (SUCCESSFUL_LOGIN_GROUP),
      ADD (LOGOUT_GROUP),
      ADD (FAILED_LOGIN_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <監査仕様名>
    WITH (STATE = ON);

    〇包含ユーザーを管理する場合
    CREATE SERVER AUDIT SPECIFICATION <監査仕様名>
    FOR SERVER AUDIT <監査名>
      ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
      ADD (DATABASE_LOGOUT_GROUP),
      ADD (FAILED_DATABASE_AUTHENTICATION_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <監査仕様名>
    WITH (STATE = ON);

    クエリ例(「Audit_Specification_iDoperation」という監査仕様名で作成する。)

    〇ログインユーザーを管理する場合
    CREATE SERVER AUDIT SPECIFICATION Audit_Specification_iDoperation
    FOR SERVER AUDIT Audit_iDoperation
      ADD (SUCCESSFUL_LOGIN_GROUP),
      ADD (LOGOUT_GROUP),
      ADD (FAILED_LOGIN_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION Audit_Specification_iDoperation
    WITH (STATE = ON);

    〇包含ユーザーを管理する場合
    CREATE SERVER AUDIT SPECIFICATION Audit_Specification_iDoperation
    FOR SERVER AUDIT Audit_iDoperation
      ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
      ADD (DATABASE_LOGOUT_GROUP),
      ADD (FAILED_DATABASE_AUTHENTICATION_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION Audit_Specification_iDoperation
    WITH (STATE = ON);

    11.「実行」をクリックし、クエリを実行します。

    12.「クエリが正常に実行されました」というメッセージが出力される事を確認します。

    13.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    14.クエリ画面に以下のクエリを入力します。

    手順10で指定した<監査仕様名>を入力します。

    select * from sys.server_audit_specifications where name='<監査仕様名>';

    クエリ例(手順10で指定した、Audit_Specification_iDoperation」という監査仕様名の確認を行う):

    select * from sys.server_audit_specifications where name='Audit_Specification_iDoperation';

    15.「実行」をクリックします。

    16.サーバ監査の仕様が作成されている事を確認します。<server_specification_id>の値を控えてください。

    メモ欄

    server_specification_id

    [           ]

    17.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    18.クエリ画面に以下のクエリを入力します。

    <server_specification_id>は手順16で控えた値です。

    select * from sys.server_audit_specification_details where server_specification_id='<server_specification_id>';

    19.「実行」をクリックし、クエリを実行します。

    20.以下の監査のアクションが設定されている事を確認します。

    No

    設定対象

    監査アクション

    1

    ログインユーザー

    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    2

    包含ユーザー

    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    以上で、SQL Serverの監査設定を追加する手順は完了です。

    ※現在の設定ではSQL Serverのすべてのユーザを対象に監査ログが出力されるため、ログが大量に出力されることがあります。
    監査ログを出力するユーザを絞り込む場合には、『SQL Serverの監査ログを特定のユーザのみ出力する』の手順を実施してください。

    Windowsイベントログ(アプリケーション)への監査ログ追加

    Windowsイベントログ(アプリケーション)へ出力する監査設定に、以下の監査アクションを追加します。

    No

    設定対象

    監査アクション

    1

    ログインユーザー

    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    2

    包含ユーザー

    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    Microsoft SQL Server Management Studioにログインしてください。

    1.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    2.クエリ画面に以下のクエリを入力します。

    <audit_guid>は『設定確認方法』の手順5で控えた値(APPLICATION LOGのaudit_guid)です。

    select * from sys.server_audit_specifications where audit_guid='<audit_guid>';

    3.「実行」をクリックし、クエリを実行します。

    4.「クエリが正常に実行されました」というメッセージが出力される事を確認します。
    また、結果画面の<server_specification_id>、<name>の値を控えておいてください。

    メモ欄

    server_specification_id

    [           ]

    name

    [           ]

    5.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    6.クエリ画面に以下のクエリを入力します。

    <server_specification_id>は手順4で控えた値です。

    select * from sys.server_audit_specification_details where server_specification_id='<server_specification_id>';

    7.「実行」をクリックします。

    8.以下の監査アクション<audit_action_name>が定義されている事を確認します。

    No

    設定対象

    監査アクション

    1

    ログインユーザー

    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    2

    包含ユーザー

    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    設定対象の監査アクションが定義されている場合は、監査アクションの追加設定は必要ありません。
    定義されていない場合は、設定が必要です。手順9へ進んでください。

    9.既存の「サーバ監査仕様」設定に監査アクションを追加します。「新しいクエリ」をクリックし、クエリ画面を表示させます。

    10.クエリ画面に以下のクエリを入力し、実行します。

    <name 1>は手順4で控えた値です。
    <name 2>は『設定確認方法』の手順5で控えた値(APPLICATION LOGのname)です。

    〇ログインユーザーを管理する場合
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = OFF);
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    FOR SERVER AUDIT <name 2>
      ADD (SUCCESSFUL_LOGIN_GROUP),
      ADD (LOGOUT_GROUP),
      ADD (FAILED_LOGIN_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = ON);

    〇包含ユーザーを管理する場合
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = OFF);
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    FOR SERVER AUDIT <name 2>
      ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
      ADD (DATABASE_LOGOUT_GROUP),
      ADD (FAILED_DATABASE_AUTHENTICATION_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = ON);

    11.「実行」をクリックします。

    以上で、SQL Serverの監査設定を変更する手順は完了です。

    ※現在の設定ではSQL Serverのすべてのユーザを対象に監査ログが出力されるため、ログが大量に出力されることがあります。
    監査ログを出力するユーザを絞り込む場合には、『SQL Serverの監査ログを特定のユーザのみ出力する』の手順を実施してください。

    Windowsイベントログ(セキュリティ)の監査ログ削除

    Windowsイベントログ(セキュリティ)へ出力する監査設定から、以下の監査アクションを削除します。

    No

    設定対象

    監査アクション

    1

    ログインユーザー

    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    2

    包含ユーザー

    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    Microsoft SQL Server Management Studioにログインしてください。

    1.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    2.クエリ画面に以下のクエリを入力し、実行します。

    <audit_guid>は『設定確認方法』の手順5で控えた値「SECURITY LOGのaudit_guid」です。

    select * from sys.server_audit_specifications where audit_guid='<audit_guid>';

    3.「実行」をクリックし、クエリを実行します。

    4.「クエリが正常に実行されました」というメッセージが出力される事を確認します。
    また、結果画面の<server_specification_id><name>の値を控えておいてください。

    メモ欄

    server_specification_id

    [           ]

    name

    [           ]

    5.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    6.クエリ画面に以下のクエリを入力します。

    <server_specification_id>は手順4で控えた値です。

    select * from sys.server_audit_specification_details where server_specification_id='<server_specification_id>';

    7.「実行」をクリックし、クエリを実行します。

    8.以下の監査アクション<audit_action_name>が定義されていない事を確認します。

    No

    設定対象

    監査アクション

    1

    ログインユーザー

    SUCCESSFUL_LOGIN_GROUP
    LOGOUT_GROUP
    FAILED_LOGIN_GROUP

    2

    包含ユーザー

    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    DATABASE_LOGOUT_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    上記3つの監査アクションが定義されている場合は、該当する監査アクションを削除します。手順9へ進んでください。
    定義されていない場合は、監査アクションの削除は必要ありません。

    9.既存の「サーバ監査仕様」設定から監査アクションを削除します。「新しいクエリ」をクリックし、クエリ画面を表示させます。

    10.クエリ画面から、以下のクエリを入力します。

    <name 1>は手順4で控えた値です。
    <name 2>は『設定確認方法』の手順5で控えた値「SECURITY LOGのname」です。

    〇ログインユーザーを管理する場合
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = OFF);
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    FOR SERVER AUDIT <name 2>
      DROP (SUCCESSFUL_LOGIN_GROUP),
      DROP (LOGOUT_GROUP),
      DROP (FAILED_LOGIN_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = ON);

    〇包含ユーザーを管理する場合
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = OFF);
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    FOR SERVER AUDIT <name 2>
      DROP (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
      DROP (DATABASE_LOGOUT_GROUP),
      DROP (FAILED_DATABASE_AUTHENTICATION_GROUP);
    GO
    ALTER SERVER AUDIT SPECIFICATION <name 1>
    WITH (STATE = ON);

    11.「実行」をクリックします。

    以上で、SQL Serverの監査設定を変更する手順は完了です。

    SQL Serverの監査ログを特定のユーザのみ出力する

    SQL Serverのログイン/ログアウトの監査ログを特定のユーザのみ出力する設定を行います。

    1.特定のユーザを指定するSQL条件式を作成します。
    [server_principal_name]を比較演算子「=」で指定します。

    <出力するユーザ名>を任意で指定してください。

    [server_principal_name]='<出力するユーザ名>'

    ※この条件式で使用できる演算子は、AND、OR、NOT演算子のみです。
    ※複数の条件を組み合わせるときは、AND、OR演算子を使用します。
    ※指定した条件に一致しないレコードを指定したい場合は、NOT演算子で条件を否定します。

    例(「sa」または「admin」ユーザのみを出力する場合):

    [server_principal_name]='sa' OR [server_principal_name]='admin'

    例(「NT AUTHORITY\SYSTEM」と「インスタンス名で指定したSQL Serverインスタンスのサービスアカウント」を出力しない場合):

    NOT([server_principal_name]='NT AUTHORITY\SYSTEM' OR [server_principal_name]='NT SERVICE\MSSQL$インスタンス名')

    2.「新しいクエリ」をクリックし、クエリ画面を表示させます。

    3.クエリ画面に以下のクエリを入力し、実行します。

    <監査名>にはログイン/ログアウトのログを出力の監査設定名を入力してください。<出力するユーザ名>は手順1で作成したSQL条件式です。

    ALTER SERVER AUDIT <監査名> WITH (STATE = OFF)
    GO
    ALTER SERVER AUDIT <監査名>
    WHERE ([server_principal_name]='<出力するユーザ名>');
    GO
    ALTER SERVER AUDIT <監査名> WITH (STATE = ON);
    GO

    クエリ例(「Audit_iDoperation」という監査名で作成する。):

    ALTER SERVER AUDIT Audit_iDoperation WITH (STATE = OFF)
    GO
    ALTER SERVER AUDIT Audit_iDoperation
    WHERE ([server_principal_name]='sa' OR [server_principal_name]='admin');
    GO
    ALTER SERVER AUDIT Audit_iDoperation WITH (STATE = ON);
    GO

    4.設定した条件で監査ログが出力されていることをイベントビューアから確認します。

    以上で、SQL Serverの監査ログを特定のユーザのみ出力する手順は完了です。