適用対象:SQL Server
Azure SQL Managed Instance
Analytics Platform System (PDW)
SQL Server は、サーバー上の権限を管理するためのサーバー レベルのロールを提供します。 これらの役割は、他のプリンシパルをグループ化するセキュリティプリンシパルです。 サーバー レベルのロールは、その権限のスコープがサーバー全体に及びます (ロール は、Windows オペレーティング システムの グループ に似ています)。
SQL Server 2019 (15.x) 以前のバージョンでは、9 つの固定サーバー ロールが提供されました。 固定サーバーの役割( パブリック権限を除く)に付与される権限は変更できません。 SQL Server 2012 (11.x) 以降では、ユーザー定義のサーバー ロールを作成し、そのユーザー定義のサーバー ロールにサーバー レベルの権限を追加できます。
SQL Server 2022(16.x)には、最小権限の原則を念頭に置いて特別に設計された10の追加サーバーロールが付属しています。 これらのロールは接頭辞 ##MS_ と接尾辞 ##を持ち、通常のユーザー作成プリンシパルやカスタムサーバーロールと区別されます。 これらの新しい役割はサーバースコープに適用される権限を持ちますが、個々のデータベースにも継承されることがあります( ##MS_LoginManager## サーバーロールを除く)。
オンプレミスの SQL Server と同様に、サーバーのアクセス許可は階層的に編成されています。 これらのサーバーレベルのロールによって保持されるアクセス許可は、データベースのアクセス許可に反映されることがあります。 アクセス許可がデータベース レベルで効果的に役立つためには、ログインが SQL Server 2022 (16.x) 以降で ##MS_DatabaseConnector## 権限をすべてのデータベースに付与するサーバー レベルのロール CONNECT のメンバーであるか、または個々のデータベースにユーザー アカウントを持っている必要があります。 この要件は master データベースにも当てはまります。
次の例を考えてみましょう。サーバー レベルのロール##MS_ServerStateReader##はアクセス許可VIEW SERVER STATEを保持しています。 このロールのメンバーであるログインには、 master および WideWorldImporters データベースにユーザー アカウントがあります。 このユーザーには、継承によるこれら 2 つのデータベースの VIEW DATABASE STATE 権限もあります。
サーバーレベル プリンシパル (SQL Server ログイン、Windows アカウント、および Windows グループ) をサーバー レベルのロールに追加できます。 固定サーバー ロールの各メンバーは、そのロールに他のログインを追加することができます。 ユーザー定義のサーバー ロールのメンバーは、そのロールに他のサーバー プリンシパルを追加できません。
固定サーバーレベルの役割
注意
これらの役割はSQL Server 2022(16.x)以前に導入されており、Azure SQL DatabaseやAzure Synapse Analyticsでは利用できません。 Azure SQL Databaseには独自のサーバーレベルのロールがあり、これはSQL Server 2022(16.x)で導入されたロールに対応しています。 詳細については、権限管理のための Azure SQL Database のサーバー ロールおよび SQL Database、SQL Managed Instance、Azure Synapse Analytics へのデータベース アクセスを承認するをご覧ください。
次の表に、固定サーバー レベル ロールとその機能を示します。
| 固定サーバーレベルの役割 | 説明 |
|---|---|
| sysadmin | sysadmin 固定サーバー ロールのメンバーは、サーバーに対するすべての操作を実行できます。 重要: このロールのメンバーに対するアクセス許可を拒否することはできません。 |
| serveradmin | serveradmin 固定サーバー ロールのメンバーは、サーバー全体の構成オプションを変更したり、サーバーをシャットダウンしたりできます。 |
| securityadmin |
securityadmin 固定サーバー ロールのメンバーは、ログインとログインのプロパティを管理します。 サーバー レベルの権限を GRANT、DENY、REVOKE することができます。 また、データベースにアクセスできる場合は、データベース レベルのアクセス許可を GRANT、 DENY、および REVOKE することもできます。 また、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 ロールまたは ADMINISTER BULK OPERATIONSのアクセス許可は、SQL Server on Linux ではサポートされていません。一括操作( BULK INSERTステートメント)は、LinuxでもWindowsでもMicrosoft Entra認証に基づくログインにはサポートされていません。 このシナリオでは、 sysadmin ロールのメンバーのみが SQL Server の一括挿入を実行できます。 |
| diskadmin | diskadmin 固定サーバー ロールのメンバーは、ディスク ファイルを管理できます。 |
| dbcreator | dbcreator 固定サーバー ロールのメンバーは、任意のデータベースを作成、変更、削除、および復元できます。 |
| public | すべての SQL Server ログインは、public サーバーの役割に属しています。 セキュリティ保護可能なオブジェクトに対する特定のアクセス許可がサーバー プリンシパルに付与または拒否されていない場合、ユーザーはそのオブジェクトの パブリック に付与されたアクセス許可を継承します。 すべてのユーザーがオブジェクトを使用できるようにする場合にのみ、任意のオブジェクトに パブリック アクセス許可を割り当てます。
パブリックのメンバーシップを変更することはできません。 注:パブリック は他の役割とは異なる仕組みです。 パブリック固定サーバーの役割に対して権限を付与、拒否、または取り消すことができます。 |
重要
以下のサーバーロールが提供するほとんどの権限は、Azure Synapse Analytics(processadmin、serveradmin、setupadmin、diskadmin)には適用されません。
SQL Server 2022 で導入されたサーバー レベルの固定ロール
次の表は、SQL Server 2022 (16.x) で導入された固定サーバー レベルの役割とその機能を示しています。
注意
Azure SQL Database と Azure SQL Managed Instance はこれらの役割をサポートしています。 Azure Synapse Analyticsはそうではありません。
サーバーが持つロールを確認するには、SERVER_ROLE が sys.server_principals である行について type_desc をクエリします。
| 固定サーバーレベルの役割 | 説明 |
|---|---|
##MS_DatabaseConnector## |
##MS_DatabaseConnector##固定サーバー ロールのメンバーは、データベース内のユーザー アカウントの接続先を必要とせずに、任意のデータベースに接続できます。特定のデータベースに対する CONNECTアクセス許可を拒否するために、ユーザーはこのログインに対応するユーザー アカウントをデータベースに作成し、データベース ユーザーにDENYアクセス許可をCONNECTできます。 この DENY アクセス許可は、このロールからの GRANT CONNECT アクセス許可を優先します。 |
##MS_LoginManager## |
##MS_LoginManager##固定サーバー ロールのメンバーは、ログインを作成、削除、および変更できます。 以前の固定サーバー ロール securityadmin とは対照的に、このロールではメンバーに GRANT 特権を許可しません。 これは、最小特権の原則に準拠するのに役立つ、より限定的な役割です。 |
##MS_DatabaseManager## |
##MS_DatabaseManager##固定サーバー ロールのメンバーは、データベースを作成し、所有しているデータベースを削除できます。 データベースを作成する ##MS_DatabaseManager## ロールのメンバーがそのデータベースの所有者になり、そのユーザーは dbo ユーザーとしてそのデータベースに接続できます。
dbo ユーザーには、データベースでのすべてのデータベース権限があります。 このロールのメンバーは、特定の条件下で特権を昇格できる可能性があります。 このロールを割り当てるときに最小特権の原則を適用し、そのメンバーによって実行されたすべてのアクティビティを監視します。 Azure SQL Databaseでは、に存在する master 固定データベース ロールの代わりに、このサーバー ロールを使用します。 |
##MS_ServerStateManager## |
##MS_ServerStateManager##固定サーバー ロールのメンバーには、##MS_ServerStateReader## ロールと同じアクセス許可があります。 また、 ALTER SERVER STATE 権限も持っており、 DBCC FREEPROCCACHE、 DBCC 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 SERVER PERFORMANCE STATE- VIEW SERVER SECURITY STATE |
- VIEW DATABASE STATE- VIEW DATABASE PERFORMANCE STATE- VIEW DATABASE SECURITY STATE |
##MS_ServerStateReader## |
- VIEW SERVER STATE- VIEW SERVER PERFORMANCE STATE- VIEW SERVER SECURITY STATE |
- VIEW DATABASE STATE- VIEW DATABASE PERFORMANCE STATE- VIEW DATABASE SECURITY STATE |
##MS_ServerPerformanceStateReader## |
- VIEW SERVER PERFORMANCE STATE |
- VIEW DATABASE PERFORMANCE STATE |
##MS_ServerSecurityStateReader## |
- VIEW SERVER SECURITY STATE |
- VIEW DATABASE SECURITY STATE |
##MS_DefinitionReader## |
- VIEW ANY DATABASE- VIEW ANY DEFINITION- VIEW ANY PERFORMANCE DEFINITION- VIEW ANY SECURITY DEFINITION |
- VIEW DEFINITION- VIEW PERFORMANCE DEFINITION- VIEW SECURITY DEFINITION |
##MS_PerformanceDefinitionReader## |
- VIEW ANY PERFORMANCE DEFINITION |
- VIEW PERFORMANCE DEFINITION |
##MS_SecurityDefinitionReader## |
- VIEW ANY SECURITY DEFINITION |
- VIEW SECURITY DEFINITION |
SQL Server 2019 およびそれ以前のサーバー ロールの権限
次の図は、レガシ サーバーの役割 (SQL Server 2019 (15.x) 以前のバージョン) に割り当てられたアクセス許可を示しています。
CONTROL SERVER権限は sysadmin 固定サーバー ロールと似ていますが、同じではありません。
CONTROL SERVERアクセス許可を持つプリンシパルは、特定のアクセス許可を拒否できます。 セキュリティの観点からは、アクセス許可を CONTROL SERVER から完全な sysadmin に昇格する方法がいくつか考えられるため、CONTROL SERVERが sysadmin メンバーと同じプリンシパルであると考えてください。 いくつかの DBCC コマンドと多くのシステム プロシージャでは、 sysadmin 固定サーバー ロールのメンバーシップが必要です。
サーバーレベルのアクセス許可
ユーザー定義のサーバー ロールに追加できるのは、サーバー レベルの権限のみです。 サーバー レベルの権限の一覧を表示するには、次のステートメントを実行します。 サーバー レベルの権限は、次のとおりです。
SELECT *
FROM sys.fn_builtin_permissions('SERVER')
ORDER BY permission_name;
権限の詳細については、「 権限 (データベース エンジン) 」および 「sys.fn_builtin_permissions」を参照してください。
サーバーレベルのロールの操作
次の表では、サーバー レベルのロールを操作するためのコマンド、ビュー、および関数について説明します。
| 機能 | タイプ | 説明 |
|---|---|---|
| sp_helpsrvrole | メタデータ | サーバー レベルのロールの一覧を返します。 |
| sp_helpsrvrolemember | メタデータ | サーバー レベルのロールのメンバーに関する情報を返します。 |
| sp_srvrolepermission | メタデータ | サーバー レベルのロールの権限を表示します。 |
| IS_SRVROLEMEMBER | メタデータ | SQL Server ログインが、指定されたサーバーレベル ロールのメンバーであるかどうかを示します。 |
| sys.server_role_members | メタデータ | 各サーバー レベルのロールのメンバーごとに 1 行のデータを返します。 |
| CREATE SERVER ROLE | コマンド | ユーザー定義サーバー ロールを作成します。 |
| ALTER SERVER ROLE | コマンド | サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。 |
| DROP SERVER ROLE | コマンド | ユーザー定義サーバー ロールを削除します。 |
| sp_addsrvrolemember | コマンド | ログイン アカウントをサーバー レベルのロールのメンバーとして追加します。 削除されました。 ALTER SERVER ROLE を代わりに使用します。 |
| sp_dropsrvrolemember | コマンド | サーバー レベルのロールから、SQL Server ログインや、Windows ユーザーまたはグループを削除します。 削除されました。 ALTER SERVER ROLE を代わりに使用します。 |
Azure Arc で有効になっている SQL Server に固有のロール
SQL ServerのAzure拡張機能を非最小特権モードでインストールする場合、インストールは次のようになります。
- サーバー レベルのロールを作成します。
SQLArcExtensionServerRole - データベース レベルのロールを作成します。
SQLArcExtensionUserRole - 各ロールに
NT AUTHORITY\SYSTEMアカウントを追加します - 各データベースのデータベース レベルで
NT AUTHORITY\SYSTEMをマップします - 有効な機能に最小アクセス許可を付与する
または、最小特権モードで実行するようにAzure Arcで有効にするSQL Serverを構成することもできます。 詳細については、「Azure Arcによって最小特権で管理されるSQL Serverの操作」をご覧ください。
さらに、Azure の SQL Server 拡張機能は、特定の機能に不要になった場合、それらのロールのアクセス許可を取り消します。
注意
前述のアクションでは、Deployer が NT AUTHORITY\SYSTEM としてSQL Serverに接続する必要があります。
NT AUTHORITY\SYSTEM ログインが削除、無効化、またはアクセスが拒否されると、デプロイヤーはこれらのアクションを実行できず、SQL ServerのAzureエクステンションはプロビジョニングに失敗します。 このログインを確認して復元する手順については、「 前提条件」 を参照してください。
SqlServerExtensionPermissionProvider は Windows タスクです。 Deployer.exe を実行して、SQL Serverで次の情報が検出されたときに特権を付与または取り消します。
- 新しい SQL Server インスタンスがホストにインストールされる
- SQL Server インスタンスがホストからアンインストールされる
- インスタンス レベルの機能が有効または無効になっているか、設定が更新されます
- 拡張機能サービスが再起動される
- Just-In-Time (JIT) アクセス許可 が有効または無効になっている
注意
2024 年 7 月のリリースより前は、 SqlServerExtensionPermissionProvider は 1 時間ごとに実行されるスケジュールされたタスクでした。
詳細については、Azure 拡張機能の SQL Server 用 Windows サービス アカウントとアクセス許可の構成を確認してください。
SQL Serverの拡張機能Azureアンインストールすると、サーバー レベルとデータベース レベルのロールが削除されます。
アクセス許可については、[アクセス許可] を確認します。