SQL Server は、サーバー上の権限を管理するためのサーバー レベルのロールを提供します。 これらの役割は、他のプリンシパルをグループ化するセキュリティプリンシパルです。 サーバーレベルのロールは、サーバー全体にわたる権限スコープを持っています。 (役割 は、Windows オペレーティング システムの グループ のようなものです)。
固定サーバー ロールは、利便性と下位互換性のために提供されます。 可能な限り、より具体的なアクセス許可を割り当てます。
SQL Serverでは、9 つの固定サーバー ロールが提供されます。 固定サーバー ロールに付与されるアクセス許可は変更できません。 SQL Server 2012 以降では、ユーザー定義サーバー ロールを作成し、ユーザー定義サーバー ロールにサーバー レベルのアクセス許可を追加できます。
サーバーレベル プリンシパル (SQL Server ログイン、Windows アカウント、および Windows グループ) をサーバー レベルのロールに追加できます。 固定サーバー ロールの各メンバーは、そのロールに他のログインを追加することができます。 ユーザー定義サーバー ロールのメンバーは、他のサーバー プリンシパルをロールに追加できません。
固定 Server-Level ロール
次の表に、固定サーバー レベル ロールとその機能を示します。
| 固定サーバーレベルの役割 | Description |
|---|---|
| システム管理者 | sysadmin 固定サーバー ロールのメンバーは、サーバーで任意のアクティビティを実行できます。 |
| サーバー管理者 | serveradmin 固定サーバー ロールのメンバーは、サーバー全体の構成オプションを変更し、サーバーをシャットダウンできます。 |
| securityadmin | securityadmin 固定サーバー ロールのメンバーは、ログインとそのプロパティを管理します。 サーバー レベルの権限を GRANT、DENY、REVOKE することができます。 また、データベースにアクセスできる場合は、データベース レベルのアクセス許可を GRANT、 DENY、および REVOKE することもできます。 また、SQL Server ログインのパスワードをリセットできます。 ** セキュリティに関する注意 **データベース エンジンへのアクセスを許可し、ユーザーのアクセス許可を構成する機能により、セキュリティ管理者はほとんどのサーバーアクセス許可を割り当てることができます。 securityadmin ロールは、sysadmin ロールと同等として扱う必要があります。 |
| processadmin | processadmin 固定サーバー ロールのメンバーは、SQL Serverのインスタンスで実行されているプロセスを終了できます。 |
| setupadmin (セットアップアドミン) | setupadmin 固定サーバー ロールのメンバーは、Transact-SQL ステートメントを使用して、リンク サーバーを追加および削除できます。 (Management Studio を使用する場合は sysadmin メンバーシップが必要です)。 |
| bulkadmin | bulkadmin 固定サーバー ロールのメンバーは、 BULK INSERT ステートメントを実行できます。 |
| diskadmin | diskadmin 固定サーバー ロールは、ディスク ファイルの管理に使用されます。 |
| Dbcreator | dbcreator 固定サーバー ロールのメンバーは、任意のデータベースを作成、変更、削除、および復元できます。 |
| 公開 | すべての SQL Server ログインは、パブリック サーバーロールに属します。 サーバー プリンシパルがセキュリティ保護可能なオブジェクトに対する特定のアクセス許可を付与または拒否されていない場合、ユーザーはそのオブジェクトのパブリックに付与されたアクセス許可を継承します。 すべてのユーザーがオブジェクトを使用できるようにする場合にのみ、任意のオブジェクトにパブリック アクセス許可を割り当てます。 パブリックのメンバーシップを変更することはできません。 注: パブリックは、他のロールとは異なる方法で実装されます。 ただし、アクセス許可を付与、拒否、またはパブリックから取り消すことができます。 |
固定サーバー ロールのアクセス許可
各固定サーバー ロールには、特定の権限が割り当てられます。 サーバー ロールに割り当てられているアクセス許可のグラフについては、「データベース エンジン固定サーバー ロールと固定データベース ロール」を参照してください。
Important
CONTROL SERVERのアクセス許可は、sysadmin固定サーバー ロールと似ていますが、同じではありません。 アクセス許可はロール メンバーシップを意味せず、ロール メンバーシップはアクセス許可を付与しません。 (たとえば、 CONTROL SERVER は、 sysadmin 固定サーバー ロールのメンバーシップを意味しません)。ただし、ロールと同等のアクセス許可の間で偽装できる場合があります。 ほとんどの DBCC コマンドと多くのシステム プロシージャでは、 sysadmin 固定サーバー ロールのメンバーシップが必要です。
sysadminメンバーシップを必要とする 171 個のシステム ストアド プロシージャの一覧については、Andreas Wolter CONTROL SERVER と sysadmin/sa のブログ投稿を参照してください。アクセス許可、システム プロシージャ、DBCC、スキーマの自動作成と特権エスカレーション - 注意事項。
Server-Level アクセス許可
ユーザー定義のサーバー ロールに追加できるのは、サーバー レベルの権限のみです。 サーバー レベルの権限の一覧を表示するには、次のステートメントを実行します。 サーバー レベルの権限は、次のとおりです。
SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;
アクセス許可の詳細については、「アクセス許可 (データベース エンジン)」および「sys.fn_builtin_permissions (Transact-SQL)」を参照してください。
Server-Level ロールの操作
次の表では、サーバー レベルのロールを操作するためのコマンド、ビュー、および関数について説明します。
| 特徴 | タイプ | Description |
|---|---|---|
| sp_helpsrvrole(Transact-SQL) | Metadata | サーバー レベルのロールの一覧を返します。 |
| sp_helpsrvrolemember(Transact-SQL) | Metadata | サーバー レベルのロールのメンバーに関する情報を返します。 |
| sp_srvrolepermission(Transact-SQL) | Metadata | サーバー レベルのロールの権限を表示します。 |
| IS_SRVROLEMEMBER(Transact-SQL) | Metadata | SQL Server ログインが、指定されたサーバーレベル ロールのメンバーであるかどうかを示します。 |
| sys.server_role_members(Transact-SQL) | Metadata | 各サーバー レベルのロールのメンバーごとに 1 行のデータを返します。 |
| sp_addsrvrolemember(Transact-SQL) | 命令 | ログイン アカウントをサーバー レベルのロールのメンバーとして追加します。 Deprecated. ALTER SERVER ROLE を代わりに使用します。 |
| sp_dropsrvrolemember(Transact-SQL) | 命令 | サーバー レベルのロールから、SQL Server ログインや、Windows ユーザーまたはグループを削除します。 Deprecated. ALTER SERVER ROLE を代わりに使用します。 |
| CREATE SERVER ROLE (Transact-SQL) | 命令 | ユーザー定義サーバー ロールを作成します。 |
| ALTER SERVER ROLE (Transact-SQL) | 命令 | サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。 |
| DROP SERVER ROLE (Transact-SQL) | 命令 | ユーザー定義サーバー ロールを削除します。 |
| IS_SRVROLEMEMBER(Transact-SQL) | 機能 | サーバー ロールのメンバーシップを決定します。 |
こちらもご覧ください
データベース レベルのロール
セキュリティ カタログ ビュー (Transact-SQL)
セキュリティ関数 (Transact-SQL)
SQL Server の保護
GRANT サーバー プリンシパルのアクセス許可 (Transact-SQL)
REVOKE サーバー プリンシパルのアクセス許可 (Transact-SQL)
DENY サーバー プリンシパルのアクセス許可 (Transact-SQL)
サーバー ロールの作成