データベースのアクセス許可を簡単に管理するために、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_ssisadmindb_ssisoperator db_ssisltduser |
これらのデータベース ロールのメンバーは、SSIS を管理および使用できます。 以前のバージョンからアップグレードされた SQL Server のインスタンスには、SSIS ではなくデータ変換サービス (DTS) を使用して名前が付けられた古いバージョンのロールが含まれている場合があります。 詳細については、「Integration Services のロール (SSIS Service)」を参照してください。 |
dc_admindc_operator dc_proxy |
これらのデータベース ロールのメンバーは、データ コレクターを管理および使用できます。 詳細については、「 データ収集」を参照してください。 |
| PolicyAdministratorRole | db_ 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 メンバーのみを追加するようにします。
Database-Level ロールを扱う
次の表では、データベース レベルのロールを操作するためのコマンド、ビュー、および関数について説明します。
| 特徴 | タイプ | 説明 |
|---|---|---|
| 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 データベース ロールのメンバーであるかどうかを示します。 |
| ロールを作成 (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 ロールからセキュリティ アカウントを削除します。 |
公共データベース役割
すべてのデータベース ユーザーは 、パブリック データベース ロールに属しています。 ユーザーがセキュリティ保護可能なオブジェクトに対する特定のアクセス許可を付与または拒否されていない場合、ユーザーはそのオブジェクトの パブリック に付与されたアクセス許可を継承します。
関連コンテンツ
セキュリティ カタログ ビュー (Transact-SQL)