サーバー レベルのロール

適用対象:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

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

SQL Server 2019 以前のバージョンでは、9 つの固定サーバー ロールが提供されていました。 固定サーバー ロール (public を除く) に付与されるアクセス許可は変更できません。 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 権限を保持しています。 このロールのメンバーであるログインには、データベース master および WideWorldImporters にユーザー アカウントがあります。 このユーザーには、継承によってこれら 2 つのデータベースの VIEW DATABASE STATE というアクセス許可も付与されます。

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

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

Note

SQL Server 2022 (16.x) より前に導入されたこれらのサーバー レベルのロールは、Azure SQL Database または Azure Synapse Analytics では使用できません。 アクセス許可管理には、SQL Server 2022 (16.x) で導入されたサーバー レベルのロールと同等の特別な Azure SQL Database サーバー ロールがあります。 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 ステートメントを実行できます。

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

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

重要

processadminserveradminsetupadmindiskadmin のサーバー ロールで得られるアクセス許可の大部分は、Azure Synapse Analytics には該当しません。

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

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

Note

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

固定サーバー レベル ロール 説明
##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## ロールのメンバーには、所有していないデータベースへのアクセス権が必ずしもあるとは限りません。 このサーバー ロールには SQL Server の dbcreator ロールと同じ権限がありますが、このロールは Azure SQL データベース にも存在し、異なる環境で同じスクリプトを使用できるため、以前のロールよりもこの新しいロールを使用することをお勧めします。
##MS_ServerStateManager## 固定サーバー ロール ##MS_ServerStateManager## のメンバーは、 ##MS_ServerStateReader## ロールと同じアクセス許可を持っています。 また、DBCC FREEPROCCACHEDBCC FREESYSTEMCACHE ('ALL')DBCC SQLPERF() などの複数の管理操作へのアクセス許可を付与する ALTER SERVER STATE も保持します。
##MS_ServerStateReader## 固定サーバー ロール ##MS_ServerStateReader## のメンバーは、このロールのメンバーがユーザー アカウントを持っているすべてのデータベース上の VIEW SERVER STATE、およびそれぞれの VIEW DATABASE STATE アクセス許可でカバーされているすべての動的管理ビュー (DMV) および機能を読み取ることができます。
##MS_ServerPerformanceStateReader## 固定サーバー ロール ##MS_ServerPerformanceStateReader## のメンバーは、このロールのメンバーがユーザー アカウントを持っているすべてのデータベース上の VIEW SERVER PERFORMANCE STATE、およびそれぞれの VIEW DATABASE PERFORMANCE STATE アクセス許可でカバーされているすべての動的管理ビュー (DMV) および機能を読み取ることができます。 これは、##MS_ServerStateReader## サーバー ロールがアクセスできる権限のサブセットであり、最小特権の原則に準拠するのに役立ちます。
##MS_ServerSecurityStateReader## 固定サーバー ロール ##MS_ServerSecurityStateReader## のメンバーは、このロールのメンバーがユーザー アカウントを持っているすべてのデータベース上の VIEW SERVER SECURITY STATE、およびそれぞれの VIEW DATABASE SECURITY STATE アクセス許可でカバーされているすべての動的管理ビュー (DMV) および機能を読み取ることができます。 これは、##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 以前のバージョン) に割り当てられたアクセス許可を示しています。
Diagram showing fixed server role permissions.

重要

CONTROL SERVER 権限は sysadmin 固定サーバー ロールと似ていますが、同じではありません。 権限があることはロールのメンバーシップを意味せず、ロールのメンバーシップによって権限は付与されません。 (たとえば、CONTROL SERVERsysadmin 固定サーバー ロールのメンバーシップを意味しません)。ただし、ロールと同等の権限の間で借用が可能な場合があります。 ほとんどの DBCC コマンドと多くのシステム プロシージャには、sysadmin 固定サーバー ロールのメンバーシップが必要です。

サーバーレベルのアクセス許可

ユーザー定義のサーバー ロールに追加できるのは、サーバー レベルの権限のみです。 サーバー レベルの権限の一覧を表示するには、次のステートメントを実行します。 サーバー レベルの権限は、次のとおりです。

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 を使用してください。

Azure Arc で有効になっている SQL Server に固有のロール

SQL Server 用 Azure 拡張機能をインストールすると、インストールは次のようになります。

  1. サーバー レベルのロールを作成します: SQLArcExtensionServerRole
  2. データベース レベルのロールを作成します: SQLArcExtensionUserRole
  3. 各ロールに NT AUTHORITY\SYSTEM アカウントを追加する
  4. 各データベースのデータベース レベルで NT AUTHORITY\SYSTEM をマップする
  5. 有効な機能に最小アクセス許可を付与する

さらに、SQL Server 用 Azure 拡張機能は、特定の機能でこれらのロールが不要になった場合、これらのロールの権限を取り消します。

SQL Server 用 Azure 拡張機能をアンインストールすると、サーバーとデータベース レベルのロールが削除されます。

アクセス許可については、[アクセス許可] を確認します。