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

データベースのアクセス許可を簡単に管理するために、SQL Serverには、他のプリンシパルをグループ化するセキュリティ プリンシパルである複数のロールが用意されています。 これらは、Microsoft Windows オペレーティング システムの グループ のようなものです。 データベース レベルのロールは、その権限のスコープがデータベース全体に及びます。

SQL Serverには、データベース に定義済みの固定データベース ロールと、作成できるフレキシブル データベース ロールの 2 種類のデータベース レベル ロールがあります。

固定データベース ロールはデータベース レベルで定義されており、各データベースに存在します。 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 Service)」を参照してください。
dc_admin

dc_operator

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

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

重要

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

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

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

機能 Type 説明
sp_helpdbfixedrole (Transact-SQL) Metadata 固定データベース ロールの一覧を返します。
sp_dbfixedrolepermission (Transact-SQL) Metadata 固定データベース ロールの権限を表示します。
sp_helprole (Transact-SQL) Metadata 現在のデータベース内のロールに関する情報を返します。
sp_helprolemember (Transact-SQL) Metadata 現在のデータベースに含まれるロールのメンバーに関する情報を返します。
sys.database_role_members (Transact-SQL) Metadata データベース ロールのメンバーごとに 1 行のデータを返します。
IS_MEMBER (Transact-SQL) Metadata 現在のユーザーが、指定された 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)