サーバー レベルのロール
SQL Server は、サーバー上の権限を管理するためのサーバー レベルのロールを提供します。 これらのロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 サーバー レベルのロールは、その権限のスコープがサーバー全体に及びます (ロール は、Windows オペレーティング システムの グループ に似ています)。
固定サーバー ロールは、旧バージョンとの互換性を維持するために便宜的に提供されています。 可能な限り、より詳細な権限を割り当ててください。
SQL Server は、9 つの固定サーバー ロールを提供します。 固定サーバー ロールに許可される権限は変更できません。 SQL Server 2012 以降では、ユーザー定義サーバー ロールを作成し、ユーザー定義サーバー ロールにサーバー レベルのアクセス許可を追加できます。
サーバー レベルのロールには、サーバー レベルのプリンシパル (SQL Server ログイン、Windows アカウント、および Windows グループ) を追加できます。 固定サーバー ロールの各メンバーは、そのロールに他のログインを追加することができます。 ユーザー定義のサーバー ロールのメンバーは、そのロールに他のサーバー プリンシパルを追加できません。
固定サーバー レベル ロール
次の表に、固定サーバー レベル ロールとその機能を示します。
固定サーバー レベル ロール | 説明 |
---|---|
[sysadmin] | sysadmin 固定サーバー ロールのメンバーは、サーバーに対するすべての操作を実行できます。 |
serveradmin | serveradmin 固定サーバー ロールのメンバーは、サーバー全体の構成オプションを変更したり、サーバーをシャットダウンしたりできます。 |
securityadmin | securityadmin 固定サーバー ロールのメンバーは、ログインとログインのプロパティを管理します。 このメンバーは、サーバー レベルの権限を許可、拒否、および禁止できます。 また、データベースにアクセスできる場合は、データベース レベルの権限も許可、拒否、および禁止できます。 また、 SQL Server ログインのパスワードをリセットできます。 ** セキュリティ に関する注意 ** データベース エンジンへのアクセス権を付与し、ユーザーのアクセス許可を構成する機能により、セキュリティ管理者はほとんどのサーバーアクセス許可を割り当てることができます。 ロールは securityadmin 、ロールと同等 sysadmin として扱う必要があります。 |
processadmin | processadmin 固定サーバー ロールのメンバーは、SQL Server のインスタンス内で実行中のプロセスを終了できます。 |
setupadmin | setupadmin 固定サーバー ロールのメンバーは、Transact-SQL ステートメントを使用してリンク サーバーを追加および削除できます。 (Management Studio を使用するときは sysadmin メンバーシップが必要になります)。 |
bulkadmin | bulkadmin 固定サーバー ロールのメンバーは、BULK INSERT ステートメントを実行できます。 |
diskadmin | diskadmin 固定サーバー ロールは、ディスク ファイルを管理するために使用します。 |
dbcreator | dbcreator 固定サーバー ロールのメンバーは、任意のデータベースを作成、変更、削除、および復元できます。 |
public | すべての SQL Server ログインは、PUBLIC サーバー ロールに属しています。 サーバー プリンシパルにセキュリティ保護可能なオブジェクトに対する特定の権限が与えられていないか権限が拒否されている場合、そのユーザーは、そのオブジェクトに対して public に付与されている権限を継承します。 すべてのユーザーがオブジェクトを使用できるようにする場合は、対象のオブジェクトに public 権限のみを割り当てます。 public のメンバーシップを変更することはできません。 注: public は、他のロールとは実装方法が異なります。 しかし、public から権限の許可、拒否、および取り消しを行うことができます。 |
固定サーバー ロールの権限
各固定サーバー ロールには、特定の権限が割り当てられます。 サーバー ロールに割り当てられる権限のチャートについては、「 データベース エンジンの固定サーバー ロールおよび固定データベース ロール」を参照してください。
重要
CONTROL SERVER
権限は sysadmin
固定サーバー ロールと似ていますが、同じではありません。 権限があることはロールのメンバーシップを意味せず、ロールのメンバーシップによって権限は付与されません。 (たとえば、固定サーバー ロールのメンバーシップをsysadmin
意味するものではありません)。 CONTROL SERVER
ただし、ロールと同等のアクセス許可の間で偽装できる場合があります。 ほとんどの DBCC
コマンドと多くのシステム プロシージャには、sysadmin
固定サーバー ロールのメンバーシップが必要です。 メンバーシップを必要とする sysadmin
171 個のシステム ストアド プロシージャの一覧については、Andreas Wolter CONTROL SERVER と sysadmin/sa のブログ投稿を参照してください。アクセス許可、システム プロシージャ、DBCC、スキーマの自動作成と特権エスカレーション - 注意事項。
サーバーレベルの権限
ユーザー定義のサーバー ロールに追加できるのは、サーバー レベルの権限のみです。 サーバー レベルの権限の一覧を表示するには、次のステートメントを実行します。 サーバー レベルの権限は、次のとおりです。
SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;
アクセス許可の詳細については、「 権限 (データベース エンジン)」 および「 sys.fn_builtin_permissions (Transact-SQL)」を参照してください。
サーバー レベルのロールの操作
次の表では、サーバー レベルのロールを操作するためのコマンド、ビュー、および関数について説明します。
特徴量 | Type | 説明 |
---|---|---|
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) | コマンド | ログインをサーバー レベルのロールのメンバーとして追加します。 非推奨になりました。 代わりに ALTER SERVER ROLE を使用してください。 |
sp_dropsrvrolemember (Transact-SQL) | コマンド | サーバー レベルのロールから、 SQL Server ログインや、Windows ユーザーまたはグループを削除します。 非推奨になりました。 代わりに 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)
サーバー ロールの作成