適用対象:SQL Server
Azure SQL Managed Instance
Analytics Platform System (PDW)
SQL Server は、サーバー上の権限を管理するためのサーバー レベルのロールを提供します。 これらの役割は、他のプリンシパルをグループ化するセキュリティプリンシパルです。 サーバー レベルのロールは、その権限のスコープがサーバー全体に及びます (ロール は、Windows オペレーティング システムの グループ に似ています)。
SQL Server 2019 (15.x) 以前のバージョンでは、9 つの固定サーバー ロールが提供されました。 固定サーバー ロール (public を除く) に付与されるアクセス許可は変更できません。 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 では使用できません。 アクセス許可管理には、SQL Server 2022 (16.x) で導入されたサーバー レベルのロールと同等の特別な Azure SQL Database サーバー ロールがあります。 SQL Database の詳細については、「データベース アクセスの制御と許可」を参照してください。
次の表に、固定サーバー レベル ロールとその機能を示します。
| 固定サーバーレベルの役割 | 説明 |
|---|---|
| sysadmin | sysadmin 固定サーバー ロールのメンバーは、サーバーに対するすべての操作を実行できます。 重要: このロールのメンバーに対するアクセス許可を拒否することはできません。 |
| serveradmin | serveradmin 固定サーバー ロールのメンバーは、サーバー全体の構成オプションを変更したり、サーバーをシャットダウンしたりできます。 |
| securityadmin |
securityadmin 固定サーバー ロールのメンバーは、ログインとログインのプロパティを管理します。 サーバー レベルの権限を GRANT、DENY、REVOKE することができます。
securityadmin は、データベースにアクセスできる場合、データベースレベルのアクセス許可を GRANT、DENY、REVOKE することもできます。 また、securityadmin は 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 ではサポートされていません。Linux または Windows では、Microsoft Entra 認証に基づくログインでは、一括操作 ( BULK INSERT ステートメント) はサポートされていません。 このシナリオでは、 sysadmin ロールのメンバーのみが SQL Server の一括挿入を実行できます。 |
| diskadmin | diskadmin 固定サーバー ロールは、ディスク ファイルを管理するために使用します。 |
| dbcreator | dbcreator 固定サーバー ロールのメンバーは、任意のデータベースを作成、変更、削除、および復元できます。 |
| public | すべての SQL Server ログインは、public サーバーの役割に属しています。 セキュリティ保護可能なオブジェクトに対する特定のアクセス許可がサーバー プリンシパルに付与または拒否されていない場合、ユーザーはそのオブジェクトの パブリック に付与されたアクセス許可を継承します。 すべてのユーザーがオブジェクトを使用できるようにする場合にのみ、任意のオブジェクトに パブリック アクセス許可を割り当てます。
パブリックのメンバーシップを変更することはできません。 注:public は他のロールとは異なる方法で実装され、 パブリック 固定サーバー ロールからアクセス許可を付与、拒否、または取り消すことができます。 |
重要
次のサーバー ロールによって提供されるアクセス許可のほとんどは、Azure Synapse Analytics (processadmin、serveradmin、setupadmin、diskadmin) には適用されません。
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) で導入されており、Azure SQL Database では使用できません。
| 固定サーバーレベル役割 | 説明 |
|---|---|
##MS_DatabaseConnector## |
##MS_DatabaseConnector##固定サーバー ロールのメンバーは、データベース内のユーザー アカウントの接続先を必要とせずに、任意のデータベースに接続できます。特定のデータベースに対する CONNECTアクセス許可を拒否するために、ユーザーはこのログインに対応するユーザー アカウントをデータベースに作成し、データベース ユーザーにDENYアクセス許可をCONNECTできます。 この DENY アクセス許可は、このロールからの GRANT CONNECT アクセス許可を優先します。 |
##MS_LoginManager## |
##MS_LoginManager##固定サーバー ロールのメンバーは、ログインを作成、削除、および変更できます。 以前の固定サーバー ロール securityadmin とは対照的に、このロールではメンバーに GRANT 特権を許可しません。 これは、最小特権の原則に準拠するのに役立つ、より限定的な役割です。 |
##MS_DatabaseManager## |
##MS_DatabaseManager##固定サーバー ロールのメンバーは、データベースを作成および削除できます。 データベースを作成する ##MS_DatabaseManager## ロールのメンバーがそのデータベースの所有者になり、そのユーザーは dbo ユーザーとしてそのデータベースに接続できます。
dbo ユーザーには、データベースでのすべてのデータベース権限があります。
##MS_DatabaseManager## ロールのメンバーには、所有していないデータベースにアクセスするためのアクセス許可が必ずしも付与されているわけではありません。 このサーバー ロールには SQL Server の dbcreator ロールと同じ権限がありますが、このロールは Azure SQL Database にも存在するため、異なる環境で同じスクリプトを使用できるため、以前のロールよりもこの新しいロールを使用することをお勧めします。 このロールのメンバーは、特定の条件下で特権を昇格できる可能性があります。 このロールを割り当てるときに最小特権の原則を適用し、そのメンバーによって実行されたすべてのアクティビティを監視します。 |
##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 (サーバー ロールを変更する) | コマンド | サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。 |
| サーバーロールの削除 | コマンド | ユーザー定義サーバー ロールを削除します。 |
| 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アンインストールすると、サーバー レベルとデータベース レベルのロールが削除されます。
アクセス許可については、[アクセス許可] を確認します。