第 5 章 SQL Server 2000 セキュリティの管理と監視~ MCDBA をめざそう!! ~

NRI ラーニング ネットワーク株式会社
技術研修部
清藤 めぐみ

2002年1月11日

はじめに

MCP 試験を受験される方はご存知かと思いますが、Microsoft のサイト(https://www.microsoft.com/japan/learning/mcp/exam.aspx?cert=1&id=70-228 Non-MSDN Online link)で試験範囲を確認することができます。一度は目を通しておくことをお勧めします。本連載は、試験トピックスの章立てに併せてポイントを解説していきます。

目次

1. Windows 認証モードと混合モード Windows 認証モードと混合モード
2. データベースユーザの作成と管理 データベースユーザの作成と管理
3. セキュリティロールの作成と管理 セキュリティロールの作成と管理
4. データベースでの権限の設定 データベースでの権限の設定
5. セキュリティ監査の管理 キュリティ監査の管理

SQL Server にアクセスし、データベースを操作するには、ログインアカウント、データベースユーザアカウント、権限などが必要になります。

第 5 章では、これらの設定、管理について確認していきます。

「SQL Server 2000 セキュリティの管理と監視」では次の項目がポイントとなります。

  • Widnows 認証モードと混合モード

  • データベースユーザの作成と管理

  • セキュリティロールの作成と管理

  • データベースでの権限の設定

  • セキュリティ監査の管理

1. Windows 認証モードと混合モード

SQL Server 2000 にアクセスする場合、ユーザはログインアカウントを持つ必要があります。SQL Server のログイン認証メカニズムには、Windows 認証と SQL Server 認証があります。

  • Windows 認証

    Windows のユーザアカウントもしくはグループアカウントによってアクセスが制御される。

    Windows のユーザアカウントもしくはグループアカウントをSQL Serverログインアカウントとして定義する

  • SQL Server 認証

    SQL Server 独自のログインアカウントおよびパスワードを定義する

    SQL Server にアクセスするときに、ログインアカウントとパスワードの入力が必要

SQL Server が Windows 上で実行されている場合は、認証モードを選ぶことができます。

  • Windows 認証モード

    Windows 認証のみ使用可能

  • 混合モード

    Windows 認証、または SQL Server 認証の両方を使用可能

Windows 以外のクライアントがいる場合は、SQL Server 認証を使用するので混合モードに設定します。

ログインアカウントの管理を行うには、Enterprise Manager を使用するか、システムストアドプロシージャを使用します(表1-1)。

 

Windows 認証 SQL Server 認証

作成

sp_grantlogin

sp_addlogin

削除

sp_revokelogin

sp_droplogin

接続拒否

sp_denylogin

 

1-1 ログインアカウントの管理

SQL Server 認証の場合は接続拒否の設定はできません。

参照:     MSUテキスト「SQL Server 2000 システム管理 (P.43、P.169~171)」

Books Online(認証モード)

2. データベースユーザの作成と管理

ログインアカウントを追加しただけでは、データベースにアクセスできません。ユーザがアクセスするデータベースで、データベースユーザアカウントを作成する必要があります。データベースユーザアカウントを作成する場合、対応するログインアカウントを指定します。

データベースユーザを作成するには、SQL Server Enterprise Manager を使用するか、sp_grantdbaccess ストアドプロシージャを使用します。例えば、Sales1 というログインアカウントを持つユーザのデータベースユーザを作成するには、

sp_grantdbaccess 'Sales1'

を実行します。この場合、データベースユーザ名は、ログインアカウントと同じ Sales1 になります。また、ログインアカウント名とデータベースユーザ名を異なる名前で登録する場合は、

sp_grantdbaccess 'Sales1','S1'

を実行します。この場合、データベースユーザ名は S1 となります。

データベースユーザを削除するには、Enterprise Manager を使用するか、sp_revokedbaccess ストアドプロシージャを使用します。

参照:     MSUテキスト「SQL Server 2000 システム管理 (P.180~182)」

Books Online(sp_grantdbaccess、sp_revokedbaccess)

3. セキュリティロールの作成と管理

ロールとは、権限を適用するためにユーザをグループにまとめたものです。ロールには、サーバロールとデータベースロール、アプリケーションロールがあります。

3.1 サーバロール

サーバロールには、あらかじめ権限が定義されている固定サーバロールがあります(表 3-1)。

ロール

権限

sysadmin

SQL Server のすべての権限を持つ

serveradmin

サーバ構成の設定
サーバのシャットダウン

setupadmin

リンクサーバと起動プロシージャの管理

securityadmin

ログイン、CREATE DATABASE 権限の管理
エラーログの読み取り
パスワードの変更

processadmin

SQL Server で実行されるプロセスの管理

dbcreator

データベースの作成、変更、削除

diskadmin

ディスクファイルの管理

bulkadmin

BULK INSERT ステートメントの実行

3-1 固定サーバロール

固定サーバロールは、サーバ全体で使用できるロールです。

固定サーバロールにログインアカウントを割り当てるには、SQL Server Enterprise Manager または、sp_addsrvrolemember ストアドプロシージャを使用します。また、ログインアカウントを削除するには、sp_dropsrvrolemember ストアドプロシージャを使用します。

3.2 データベースロール

データベースロールには、固定データベースロールとユーザ定義のデータベースロールがあります。固定データベースロールには、表 3-2 のような種類があります。

ロール

権限

public

データベースのデフォルト権限
データベース内のすべてのユーザが所属する

db_owner

データベースのすべての権限を持つ

db_accessadmin

データベースユーザ、ロールの追加、削除の実行

db_ddladmin

データベースオブジェクトの追加、変更、削除 (DDL (Data Definition Language) ) の実行

db_securityadmin

すべての権限、オブジェクト所有者、ロール、ロールのメンバシップの管理

db_backupoperator

DBCC、CHECKPOINT、BACKUPステートメントの実行

db_datareader

データベース内のユーザテーブルのデータの読み取り

db_datawriter

データベース内のユーザテーブルのデータの追加、変更、削除

db_denydatareader

データベース内のユーザテーブルのデータの読み取り不可

db_denydatawriter

データベース内のユーザテーブルのデータの追加、変更、削除不可

3-2 固定データベースロール

固定データベースロールにデータベースユーザアカウントを割り当てるには、sp_addrolemember ストアドプロシージャを使用します。また、データベースユーザを削除するには、sp_droprolemember ストアドプロシージャを使用します。

ユーザ定義のデータベースロールを作成すると、共通の権限を持つユーザをグループ化することができます。ユーザ定義のデータベースロールを作成するには、sp_addrole ストアドプロシージャを使用します。ユーザ定義のデータベースロールを作成できるのは、db_owner または、db_securityadmin ロールのメンバのみです。

3.3 アプリケーションロール

アプリケーションロールは特定のアプリケーションに対して、セキュリティの実装を行い、間接的にデータへのアクセスを制限します。

アプリケーションロールは、以下の点でサーバロールやデータベースロールと異なります。

  • アプリケーションロールはメンバを持たない

  • アプリケーションロールにはパスワードが必要

  • public ロールに適用されている権限を除き、すべての権限が失われる。

アプリケーションロールを作成するには、sp_addapprole ストアドプロシージャを使用します。アプリケーションロールを作成できるのは、db_owner または、db_securityadmin、sysadmin ロールのメンバのみです。

参照:     MSUテキスト「SQL Server 2000 システム管理 (P.184~188、P.210~214)」

     Books Online (ロール、アプリケーションセキュリティとアプリケーションロール)

4. データベースでの権限の設定

データベースを操作するには、データベースユーザアカウントやデータベースロールにログインアカウントをマッピングしたあと、権限を割り当てる必要があります。

SQL Server の権限は、ステートメント権限、オブジェクト権限、既定の権限の 3 種類があります。

4.1 ステートメント権限

データベースまたは、データベース内のオブジェクトを作成するには、ステートメント権限が必要です。ステートメント権限には、CREATE DATABASE、CREATE TABLE、CREATE VIEW などがあります。CREATE DATABASE などのステートメント権限は、データベース内の特定のオブジェクトに対してではなく、ステートメント自身に適用されます。

ステートメント権限の許可、拒否、取り消しを行うには、以下のコマンドを実行します。

許可    GRANT ステートメント権限 TO データベースユーザ(またはロール)

拒否    DENY ステートメント権限 TO データベースユーザ(またはロール)

取り消し    REVOKE ステートメント権限 FROM データベースユーザ(またはロール)

また、SQL Server Enterprise Manager を使用する場合は、データベースのプロパティの「権限」タブで設定します(図 4-1)。

図

4-1 データベースプロパティでのステートメント権限の設定

4.2 オブジェクト権限

テーブル内のデータを操作したり、プロシージャを実行するには、オブジェクト権限が必要です。SELECT、UPDATE、REFERENCES オブジェクト権限はテーブルやビューに設定でき、また、列単位で適用することもできます。その他、ストアドプロシージャに関するEXECUTE 権限があります。

オブジェクト権限の許可、拒否、取り消しを行うには、以下のコマンドを実行します。

許可    GRANT オブジェクト権限 ON オブジェクト名 TO データベースユーザ(またはロール)

拒否    DENY オブジェクト権限 ON オブジェクト名 TO データベースユーザ(またはロール)

取り消し    REVOKE オブジェクト権限 ON オブジェクト名 FROM データベースユーザ(またはロール)

また、SQL Server Enterprise Manager を使用する場合は、各オブジェクトのプロパティの「権限」タブで設定します(図 4-2)。

図

4-2 テーブルのプロパティでのオブジェクト権限の設定

4.3 既定の権限

固定ロールのメンバまたは、データベースオブジェクトの所有者のみが特定の操作を実行できます。これらの操作を実行するための権限は既定の権限、または暗黙の権限と呼ばれています。

参照    MSUテキスト「SQL Server 2000システム管理(P.191~193)」

     SQL Server 2000リソースキット(P.272~278)

     Books Online(権限の管理)

5. セキュリティ監査の管理

SQL Server 2000 では、ユーザのログインの試行、失敗、接続および切断などのイベントをトレースし、監視していくことができます。監査記録を確認するには、SQL プロファイラを使用します。

また、SQL Server 2000 は、米国政府が定めた評価基準 C2 セキュリティ保証を満たしているので、C2 監査を有効にすることができます。C2 監査を有効にすると、すべてのイベントを追跡し、ログファイルを作成します。C2 監査ログファイルが格納されているドライブの空き領域が不足すると、SQL Server が停止します。SQL Server を再起動するには、ディスク領域を開放する必要があります。

参照    MSUテキスト「SQL Server 2000 システム管理(P.431)」

     SQL Server 2000 リソースキット(P.266)

     Books Online(SQL Server利用状況の監査、C2監査、c2 audit modeオプション)

第 5 章の内容に関しては、トラブルシューティング問題として、出題される傾向があります。C2 監査に関しては、SQL Server 2000 システム管理のテキストには、記載されていませんので、Books Online で確認をしておきましょう!

mcdba.jpg

清藤   めぐみ : 1997 年に Microsoft 認定トレーナ(MCT)の資格を取得し、Windows NT のトレーニングを担当するようになりました。現在は NRI ラーニングネットワークに所属し、Windows 2000 などのトレーニングや、技術書籍の監修を行う毎日で、あっという間に時間が過ぎてしまいます。そんな状態なので、最近はちょっとストレスがたまり気味。ストレス解消のため、ショッピングにはまってしまい、財布の中身が心許ない今日この頃です。 皆さんのご期待にそえるような記事作りをめざしていきます。よろしくお願いします。