サーバー レベルのロール

適用対象: SQL Server (サポートされているすべてのバージョン) Azure SQL Managed Instance Analytics Platform System (PDW)

SQL Server は、サーバー上の権限を管理するためのサーバー レベルのロールを提供します。 これらのロールは、他のプリンシパルをグループ化するセキュリティ プリンシパルです。 サーバー レベルのロールは、その権限のスコープがサーバー全体に及びます (ロール は、Windows オペレーティング システムの グループ に似ています)。

SQL Server 2019 以前のバージョンでは、9 つの固定サーバー ロールが提供されていました。 固定サーバー ロール ( パブリックを除く) に付与されるアクセス許可は変更できません。 SQL Server 2012 (11.x)以降では、ユーザー定義のサーバー ロールを作成し、そのユーザー定義のサーバー ロールにサーバー レベルの権限を追加できます。 SQL Server 2022 (16.x) プレビューには、最小限の特権の原則を念頭に置いて特別に設計された 10 個の追加サーバー ロールが付属しています。このロールには、他の通常のユーザー作成プリンシパルやカスタム サーバー ロールと区別するためのプレフィックス##MS_とサフィックス##があります。 これらの新しいロールには、サーバー スコープに適用される特権が含まれていますが、個々のデータベースに継承することもできます ( ##MS_LoginManager## サーバー ロールを除きます)。

オンプレミスの SQL Server と同様に、サーバーのアクセス許可は階層的に編成されています。 これらのサーバーレベルのロールによって保持されるアクセス許可は、データベースのアクセス許可に反映されることがあります。 アクセス許可をデータベース レベルで効果的に役立てるには、ログインがサーバー レベルのロール ##MS_DatabaseConnector## (SQL Server 2022 (16.x) プレビュー以降) のメンバーであるか、すべてのデータベースに CONNECT アクセス許可を付与するか、個々のデータベースにユーザー アカウントを持っている必要があります。 これは、データベースにも適用されます master 。 次の例を考えてみます。サーバー レベルのロール ##MS_ServerStateReader## はアクセス許可 VIEW SERVER STATE を保持します。 このロールのメンバーであるログインには、データベースにユーザー アカウントがありWideWorldImportersmaster. その後、このユーザーには、継承によるこれら 2 つの データベースの VIEW DATABASE STATE 権限も付与されます。

サーバー レベルのロールには、サーバー レベルのプリンシパル (SQL Server ログイン、Windows アカウント、および Windows グループ) を追加できます。 固定サーバー ロールの各メンバーは、そのロールに他のログインを追加することができます。 ユーザー定義サーバー ロールのメンバーは、他のサーバー プリンシパルをロールに追加できません。

固定サーバー レベルのロール

注意

SQL Server 2022 (16.x) プレビューより前に導入されたこれらのサーバー レベルのロールは、Azure SQL Database または Azure Synapse Analytics では使用できません。 SQL Server 2022 (16.x) プレビューで導入されたサーバー レベルのロールと同等の権限管理用の特別なAzure SQLデータベース サーバー ロールがあります。 SQL Databaseの詳細については、「データベース アクセスの制御と付与」を参照してください。

次の表に、固定サーバー レベル ロールとその機能を示します。

固定サーバー レベル ロール 説明
sysadmin sysadmin 固定サーバー ロールのメンバーは、サーバーに対するすべての操作を実行できます。
serveradmin serveradmin 固定サーバー ロールのメンバーは、サーバー全体の構成オプションを変更したり、サーバーをシャットダウンしたりできます。
securityadmin securityadmin 固定サーバー ロールのメンバーは、ログインとログインのプロパティを管理します。 サーバー レベルのアクセス許可を GRANTDENYREVOKE することができます。 また、データベースにアクセスできる場合は、データベース レベルのアクセス許可も GRANTDENYREVOKE できます。 また、 SQL Server ログインのパスワードをリセットできます。

重要: セキュリティ管理者は、データベース エンジンへのアクセスを許可する権限およびユーザー権限を構成する権限を使用して、ほとんどのサーバー権限を割り当てることができます。 securityadmin ロールは、 sysadmin ロールと同等のものとして扱う必要があります。 別の方法として、SQL Server 2022 (16.x) プレビュー以降では、新しい固定サーバー ロール ##MS_LoginManager## の使用を検討してください。
processadmin processadmin 固定サーバー ロールのメンバーは、SQL Server のインスタンス内で実行中のプロセスを終了できます。
setupadmin setupadmin 固定サーバー ロールのメンバーは、Transact-SQL ステートメントを使用してリンク サーバーを追加および削除できます。 (Management Studio を使用するときは sysadmin メンバーシップが必要になります)。
bulkadmin bulkadmin 固定サーバー ロールのメンバーは、BULK INSERT ステートメントを実行できます。

bulkadmin ロールまたは MANAGED BULK OPERATIONS のアクセス許可は、SQL Server on Linuxではサポートされていません。 SQL Server on Linux に対して一括挿入を実行できるのは、sysadmin だけです。
diskadmin diskadmin 固定サーバー ロールは、ディスク ファイルを管理するために使用します。
dbcreator dbcreator 固定サーバー ロールのメンバーは、任意のデータベースを作成、変更、削除、および復元できます。
public すべての SQL Server ログインは、public サーバー ロールに属しています。 セキュリティ保護可能なオブジェクトに対する特定のアクセス許可がサーバー プリンシパルに付与または拒否されていない場合、ユーザーはそのオブジェクトで パブリック に付与されたアクセス許可を継承します。 すべてのユーザーがオブジェクトを使用できるようにする場合は、対象のオブジェクトに public 権限のみを割り当てます。 パブリックのメンバーシップを変更することはできません。

注:public は他のロールと実装方法が異なり、public 固定サーバー ロールからはアクセス許可を付与、拒否、または取り消すことができます。

重要

次のサーバー ロールによって提供されるアクセス許可のほとんどは、Azure Synapse Analytics ( processadmin、serveradminsetupadmindiskadmin) には適用されません。

SQL Server 2022 で導入された固定サーバー レベルのロール

次の表は、SQL Server 2022 (16.x) プレビューで導入された追加の固定サーバー レベルのロールとその機能を示しています。

注意

これらのサーバー レベルのアクセス許可は、Azure SQL Managed Instanceまたは Azure Synapse Analytics では使用できません。 ##MS_PerformanceDefinitionReader###MS_ServerPerformanceStateReader##、および ##MS_ServerSecurityStateReader## は、SQL Server 2022 (16.x) Preview CTP 2.1 で導入され、Azure SQL データベースでは使用できません。

固定サーバー レベル ロール 説明
##MS_DatabaseConnector## ##MS_DatabaseConnector## 固定サーバー ロールのメンバーは、データベース内のユーザーアカウントの接続先を必要とせずに、任意のデータベースに接続できます。

特定のデータベースに対する CONNECT アクセス許可を拒否するには、ユーザーはこのログインに対応するユーザー アカウントをデータベースに作成し、このデータベースユーザーに対する CONNECT アクセス許可を拒否 (DENY) します。 この DENY アクセス許可によって、このロールからの GRANT CONNECT アクセス許可が無効になります。
##MS_LoginManager## ##MS_LoginManager## 固定サーバー ロールのメンバーは、ログインを作成、削除、および変更できます。 古い固定サーバー ロール securityadmin とは対照的に、このロールではメンバーに特権を GRANT 許可しません。 これは、 最小限の特権の原則に準拠するのに役立つ、より限定的な役割です。
##MS_DatabaseManager## ##MS_DatabaseManager## 固定サーバー ロールのメンバーは、データベースを作成および削除できます。 データベースを作成する ##MS_DatabaseManager## ロールのメンバーは、そのデータベースの所有者になります。これにより、ユーザーは dbo ユーザーとしてそのデータベースに接続できるようになります。 dbo ユーザーには、データベースでのすべてのデータベース権限があります。 ##MS_DatabaseManager## ロールのメンバーには、所有していないデータベースへのアクセス権が必ずしもあるとは限りません。
##MS_ServerStateManager## 固定サーバー ロール ##MS_ServerStateManager## のメンバーは、 ##MS_ServerStateReader## ロールと同じアクセス許可を持っています。 また、ALTER SERVER STATE 権限を保持します。これにより、次DBCC FREEPROCCACHEDBCC FREESYSTEMCACHE ('ALL')のようないくつかの管理操作にアクセスできます。DBCC SQLPERF()
##MS_ServerStateReader## ##MS_ServerStateReader## 固定サーバー ロールのメンバーは、VIEW SERVER STATE でカバーされるすべての動的管理ビュー (DMV) と関数を読み取ることができ、このロールのメンバーがユーザー アカウントを持つデータベースに対する VIEW DATABASE STATE 権限を持ちます。
##MS_ServerPerformanceStateReader## ##MS_ServerPerformanceStateReader## 固定サーバー ロールのメンバーは、VIEW SERVER PERFORMANCE STATE でカバーされるすべての動的管理ビュー (DMV) と関数を読み取ることができ、それぞれ、このロールのメンバーがユーザー アカウントを持つデータベースに対する VIEW DATABASE PERFORMANCE STATE 権限を持ちます。 これは、# #MS_ServerStateReader## サーバー ロールがアクセスできる権限のサブセットであり、 最小限の特権の原則に準拠するのに役立ちます。
##MS_ServerSecurityStateReader## ##MS_ServerSecurityStateReader## 固定サーバー ロールのメンバーは、VIEW SERVER SECURITY STATE の対象となるすべての動的管理ビュー (DMV) と関数を読み取ることができ、それぞれ、このロールのメンバーがユーザー アカウントを持つデータベースに対する VIEW DATABASE SECURITY STATE 権限を持ちます。 これは、 ##MS_ServerStateReader## サーバー ロールがアクセスできる小さなサブセットであり、 最小限の特権の原則に準拠するのに役立ちます。
##MS_DefinitionReader## ##MS_DefinitionReader## 固定サーバー ロールのメンバーは、VIEW ANY DEFINITION でカバーされるすべてのカタログ ビューを読み取ることができ、このロールのメンバーがユーザー アカウントを持つデータベースに対する VIEW DEFINITION 権限を持ちます。
##MS_PerformanceDefinitionReader## ##MS_PerformanceDefinitionReader## 固定サーバー ロールのメンバーは、VIEW ANY PERFORMANCE DEFINITION の対象となるすべてのカタログ ビューを読み取ることができ、このロールのメンバーがユーザー アカウントを持つデータベースに対する VIEW PERFORMANCE DEFINITION 権限を持ちます。 これは、 ##MS_DefinitionReader## サーバー ロールがアクセスできる内容のサブセットです。
##MS_SecurityDefinitionReader## 固定サーバー ロール ##MS_SecurityDefinitionReader## のメンバーは、このロールのメンバーがユーザー アカウントを持っているすべてのデータベース上の VIEW ANY SECURITY DEFINITION、およびそれぞれの VIEW SECURITY DEFINITION アクセス許可でカバーされているすべてのカタログ ビューを読み取ることができます。 これは、最小限の特権の原則に準拠するのに役立つ ##MS_DefinitionReader## サーバー ロールがアクセスできる小さなサブセットです。

固定サーバー ロールのアクセス許可

各固定サーバー ロールには、特定の権限が割り当てられます。

SQL Server 2022 の新しい固定サーバー ロールのアクセス許可

固定サーバー レベルの各ロールには、特定のアクセス許可が割り当てられます。 次の表は、サーバーレベルのロールに割り当てられているアクセス許可を示しています。 また、ユーザーが個々のデータベースに接続できる限り、継承されたデータベースレベルのアクセス許可も表示されます。

固定サーバー レベル ロール サーバーレベルのアクセス許可 データベース レベルのアクセス許可
##MS_DatabaseConnector## CONNECT ANY DATABASE CONNECT
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
該当なし
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
サーバーのパフォーマンス状態の表示
サーバーのセキュリティ状態の表示
VIEW DATABASE STATE
データベースのパフォーマンス状態の表示
データベースのセキュリティ状態を表示する
##MS_ServerStateReader## VIEW SERVER STATE
サーバーのパフォーマンス状態の表示
サーバーのセキュリティ状態の表示
VIEW DATABASE STATE
データベースのパフォーマンス状態の表示
データベースのセキュリティ状態を表示する
##MS_ServerPerformanceStateReader## サーバーのパフォーマンス状態の表示 データベースのパフォーマンス状態の表示
##MS_ServerSecurityStateReader## サーバーのセキュリティ状態の表示 データベースのセキュリティ状態を表示する
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
パフォーマンス定義を表示する
VIEW ANY SECURITY DEFINITION
VIEW DEFINITION
パフォーマンス定義の表示
VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## パフォーマンス定義を表示する パフォーマンス定義の表示
##MS_SecurityDefinitionReader## VIEW ANY SECURITY DEFINITION VIEW SECURITY DEFINITION

SQL Server 2019 以前のサーバー ロールのアクセス許可

次の図は、従来のサーバー ロール (SQL Server 2019 以前のバージョン) に割り当てられたアクセス許可を示しています。
fixed_server_role_permissions

重要

CONTROL SERVER 権限は sysadmin 固定サーバー ロールと似ていますが、同じではありません。 権限があることはロールのメンバーシップを意味せず、ロールのメンバーシップによって権限は付与されません。 (たとえば、 CONTROL SERVERsysadmin 固定サーバー ロールのメンバーシップを意味しません)。ただし、ロールと同等のアクセス許可の間で偽装できる場合があります。 ほとんどの 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 行のデータを返します。
CREATE SERVER ROLE (Transact-SQL) コマンド ユーザー定義サーバー ロールを作成します。
ALTER SERVER ROLE (Transact-SQL) コマンド サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。
DROP SERVER ROLE (Transact-SQL) コマンド ユーザー定義サーバー ロールを削除します。
sp_addsrvrolemember (Transact-SQL) コマンド ログインをサーバー レベルのロールのメンバーとして追加します。 非推奨になりました。 代わりに ALTER SERVER ROLE を使用してください。
sp_dropsrvrolemember (Transact-SQL) コマンド サーバー レベルのロールから、 SQL Server ログインや、Windows ユーザーまたはグループを削除します。 非推奨になりました。 代わりに ALTER SERVER ROLE を使用してください。

関連項目

データベース レベルのロール
セキュリティ カタログ ビュー (Transact-SQL)
セキュリティ関数 (Transact-SQL)
SQL Server の保護
GRANT (サーバー プリンシパルの権限の許可) (Transact-SQL)
REVOKE (サーバー プリンシパルの権限の取り消し) (Transact-SQL)
DENY (サーバー プリンシパルの権限の拒否) (Transact-SQL)
サーバー ロールの作成
アクセス許可の管理のための Azure SQL Database サーバー ロール