データベース レベルのロール

SQL Server には、データベースでの権限を簡単に管理できるように、いくつかのロールが用意されています。ロールは、セキュリティ プリンシパルとして他のプリンシパルをグループ化します。 ロールは、Microsoft Windows オペレーティング システムのグループに似ています。 データベース レベルのロールは、その権限のスコープがデータベース全体に及びます。

SQL Server には、データベース レベルのロールが 2 種類あります。1 つはデータベースに事前に定義されている固定データベース ロール、もう 1 つはユーザーが作成できる可変データベース ロールです。

固定データベース ロールはデータベース レベルで定義されており、各データベースに存在します。 データベース ロール db_owner および db_securityadmin のメンバーは、固定データベース ロールのメンバーシップを管理できます。 ただし、固定データベース ロール db_owner にメンバーを追加できるのは db_owner データベース ロールのメンバーだけです。 msdb データベースには、特別な用途の固定データベース ロールもいくつかあります。

データベース レベルのロールには、すべてのデータベース アカウントとその他の SQL Server ロールを追加できます。 固定データベース ロールの各メンバーは、そのロールに他のログインを追加できます。

重要な注意事項重要

可変データベース ロールは、固定ロールのメンバーとして追加しないでください。 これを行うと、特権が意図せず昇格されることがあります。

次の表に、固定データベース レベルのロールとその機能を示します。 これらのロールは、すべてのデータベースに存在します。

データベース レベルのロール名

説明

db_owner

db_owner 固定データベース ロールのメンバーは、データベースでのすべての構成作業とメンテナンス作業を実行でき、データベースを削除することもできます。

db_securityadmin

db_securityadmin 固定データベース ロールのメンバーは、ロールのメンバーシップを変更し、権限を管理できます。 このロールにプリンシパルを追加すると、特権が意図せず昇格されることがあります。

db_accessadmin

db_accessadmin 固定データベース ロールのメンバーは、Windows ログイン、Windows グループ、および SQL Server ログインのデータベースに対するアクセスを追加または削除できます。

db_backupoperator

db_backupoperator 固定データベース ロールのメンバーは、データベースをバックアップできます。

db_ddladmin

db_ddladmin 固定データベース ロールのメンバーは、すべての DDL (データ定義言語) コマンドをデータベースで実行できます。

db_datawriter

db_datawriter 固定データベース ロールのメンバーは、すべてのユーザー テーブルのデータを追加、削除、または変更できます。

db_datareader

db_datareader 固定データベース ロールのメンバーは、すべてのユーザー テーブルからすべてのデータを読み取ることができます。

db_denydatawriter

db_denydatawriter 固定データベース ロールのメンバーは、データベース内のユーザー テーブルのデータを追加、変更、または削除することはできません。

db_denydatareader

db_denydatareader 固定データベース ロールのメンバーは、データベース内のユーザー テーブルのデータを読み取ることはできません。

msdb ロール

msdb データベースには、次の表に示す特別な用途のロールが含まれています。

msdb ロール名

説明

db_ssisadmin

db_ssisoperator

db_ssisltduser

これらのデータベース ロールのメンバーは、SSIS を管理および使用できます。 以前のバージョンからアップグレードされた SQL Server のインスタンスには、SSIS ではなくデータ変換サービス (DTS) を使用して名前が付けられた古いバージョンのロールが含まれている場合があります。 詳細については、「Integration Services のロール (SSIS サービス)」を参照してください。

dc_admin

dc_operator

dc_proxy

これらのデータベース ロールのメンバーは、データ コレクターを管理および使用できます。 詳細については、「データ コレクション」を参照してください。

PolicyAdministratorRole

PolicyAdministratorRole データベース ロールのメンバーは、ポリシー ベースの管理のポリシーと条件で、すべての構成作業とメンテナンス作業を実行できます。 詳細については、「ポリシー ベースの管理を使用したサーバーの管理」を参照してください。

ServerGroupAdministratorRole

ServerGroupReaderRole

これらのデータベース ロールのメンバーは、登録済みサーバーのグループを管理および使用できます。

dbm_monitor

データベース ミラーリング モニターに最初のデータベースが登録されたときに、msdb データベースに作成されます。 dbm_monitor ロールには、メンバーは割り当てられていません。システム管理者がそのロールにユーザーを割り当てる必要があります。

重要な注意事項重要

db_ssisadmin ロールおよび dc_admin ロールのメンバーは、特権を sysadmin に昇格できる可能性があります。 このような特権の昇格が発生するのは、それらのロールが Integration Services パッケージを変更でき、SQL Server エージェントの sysadmin セキュリティ コンテキストを使用して SQL Server で Integration Services パッケージを実行できるためです。 メンテナンス プラン、データ コレクション セット、およびその他の Integration Services パッケージの実行時にこの特権の昇格を防ぐには、特権が制限されたプロキシ アカウントを使用するようにパッケージを実行する SQL Server エージェント ジョブを構成するか、db_ssisadmin ロールおよび dc_admin ロールには sysadmin メンバーのみを追加するようにします。

データベース レベルのロールの操作

次の表では、データベース レベルのロールを操作するためのコマンド、ビュー、および関数について説明します。

機能

説明

sp_helpdbfixedrole (Transact-SQL)

メタデータ

固定データベース ロールの一覧を返します。

sp_dbfixedrolepermission (Transact-SQL)

メタデータ

固定データベース ロールの権限を表示します。

sp_helprole (Transact-SQL)

メタデータ

現在のデータベース内のロールに関する情報を返します。

sp_helprolemember (Transact-SQL)

メタデータ

現在のデータベースに含まれるロールのメンバーに関する情報を返します。

sys.database_role_members (Transact-SQL)

メタデータ

各データベース ロールのメンバーごとに 1 行のデータを返します。

IS_MEMBER (Transact-SQL)

メタデータ

現在のユーザーが、指定された Microsoft Windows グループまたは Microsoft SQL Server データベース ロールのメンバーであるかどうかを示します。

CREATE ROLE (Transact-SQL)

コマンド

現在のデータベースに新しいデータベース ロールを作成します。

ALTER ROLE (Transact-SQL)

コマンド

データベース ロールの名前を変更します。

DROP ROLE (Transact-SQL)

コマンド

データベースからロールを削除します。

sp_addrole (Transact-SQL)

コマンド

現在のデータベースに新しいデータベース ロールを作成します。

sp_droprole (Transact-SQL)

コマンド

現在のデータベースからデータベース ロールを削除します。

sp_addrolemember (Transact-SQL)

コマンド

データベース ユーザー、データベース ロール、Windows ログイン、または Windows グループを、現在のデータベースのデータベース ロールに追加します。

sp_droprolemember (Transact-SQL)

コマンド

現在のデータベースの SQL Server ロールからセキュリティ アカウントを削除します。

public データベース ロール

データベース ユーザーはすべて、public データベース ロールに属しています。 セキュリティ保護可能なオブジェクトに対する特定の権限が与えられていないか権限が拒否されているユーザーは、そのオブジェクトに対して public に付与されている権限を継承します。

関連コンテンツ

セキュリティ カタログ ビュー (Transact-SQL)

セキュリティ ストアド プロシージャ (Transact-SQL)

セキュリティ関数 (Transact-SQL)

SQL Server の保護

sp_helprotect (Transact-SQL)