対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric の Warehouse
Microsoft Fabric の SQL Database
SQL Server のすべてのセキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 Database Engine のアクセス許可は、ログインおよびサーバー ロールに割り当てられたサーバー レベル、およびデータベース ユーザーおよびデータベース ロールに割り当てられたデータベース レベルで管理されます。 Azure SQL Database のモデルは、データベース レベルのアクセス許可に関しては同じしくみを採用していますが、サーバー レベルのアクセス許可は使用できません。 この記事は、アクセス許可の一覧を示します。 アクセス許可の一般的な実装については、「 データベース エンジンのアクセス許可の概要」を参照してください。
SQL Server 2022 (16.x) におけるアクセス許可の総数は 292 件です。 Azure SQL Database でも 292 件のアクセス許可が公開されています。 ほとんどのアクセス許可はすべてのプラットフォームに適用されますが、一部は適用されません。 たとえば、多くのサーバー レベルのアクセス許可は Azure SQL Database では付与できず、一部のアクセス許可は Azure SQL Database でのみ機能します。 新しいアクセス許可は、新しいリリースに伴って段階的に追加されています。 SQL Server 2019 (15.x) では 248 件、SQL Server 2017 (14.x) では 238 件のアクセス許可が公開されていました。 SQL Server 2016 (13.x) では 230 件のアクセス許可が公開されていました。 SQL Server 2014 (12.x) では 219 件のアクセス許可が公開されていました。 SQL Server 2012 (11.x) では 214 件のアクセス許可が公開されていました。 SQL Server 2008 R2 (10.50.x) では 195 件のアクセス許可が公開されていました。 sys.fn_builtin_permissions 記事では、最近のバージョンでどのアクセス許可が新しいかが明確に記載されています。
Microsoft Fabric の SQL Database では、データベース レベルのユーザーとロールのみがサポートされています。 サーバー レベルのログイン、ロール、 sa
アカウントは使用できません。 Microsoft Fabric の SQL Database では、データベース ユーザーに対する認証方法として Microsoft Entra ID のみがサポートされています。 詳細については、Microsoft Fabric の SQL Database における認可に関する記事を参照してください。
必要なアクセス許可を把握したら、GRANT、REVOKE、DENY ステートメントを使用して、ログインまたはサーバー ロールにサーバー レベルのアクセス許可を、ユーザーまたはデータベース ロールにデータベース レベルのアクセス許可を適用できます。 例えば次が挙げられます。
GRANT SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
REVOKE SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
アクセス許可システムの計画に関するヒントについては、「 データベース エンジンのアクセス許可の概要」を参照してください。
アクセス許可の名前付け規則
ここでは、アクセス許可に名前を付ける際に従う一般的な規則について説明します。
コントロール
権限を与えられたユーザーに所有権のような権限を与えます。 アクセス許可を与えられたユーザーは、事実上、セキュリティ保護可能なリソースに対する定義済みのすべてのアクセス許可を持っています。 CONTROL を付与されたプリンシパルは、セキュリティ保護可能なリソースに対するアクセス許可も付与できます。 SQL Server セキュリティ モデルは階層構造であるため、特定のスコープの CONTROL には、そのスコープ下のセキュリティ保護可能なすべてのリソースに対する CONTROL が暗黙的に含まれます。 たとえば、データベースに対する CONTROL は、データベースに対するすべてのアクセス許可、データベース内のすべてのアセンブリに対するすべてのアクセス許可、データベース内のすべてのスキーマに対するすべてのアクセス許可、およびデータベース内のすべてのスキーマに含まれているオブジェクトに対するすべてのアクセス許可を意味します。
ALTER
セキュリティ保護可能な特定のリソースのプロパティを変更できるようにします。ただし、所有権は変更できません。 スコープに対して付与された場合、ALTER では、そのスコープに含まれているセキュリティ保護可能なすべてのリソースの変更、作成、または削除も行えるようになります。 たとえば、スキーマに対する ALTER アクセス許可には、スキーマのオブジェクトを作成、変更、および削除するアクセス許可が含まれています。
ALTER ANY <Server Securable>。ここで、Server Securable には、任意のセキュリティ保護可能なサーバーを指定できます。
Server Securableの個々のインスタンスを作成、変更、削除できるようにします。 たとえば、ALTER ANY LOGIN では、インスタンス内の任意のログインを作成、変更、または削除できます。
ALTER ANY <Database Securable>。ここで、Database Securable には、データベース レベルの任意のセキュリティ保護可能なリソースを指定できます。
Database Securableの個々のインスタンスを CREATE、ALTER、DROP できるようにします。 たとえば、ALTER ANY SCHEMA では、データベース内の任意のスキーマを作成、変更、または削除できます。
責任を引き受ける
このアクセス許可が付与されたユーザーは、その対象のセキュリティ保護可能なリソースの所有権を取得できるようになります。
IMPERSONATE <ログイン>
権限を与えられたユーザーが、Login の権限を借用できるようにします。
IMPERSONATE <User>
権限を与えられたユーザーが、User の権限を借用できるようにします。
CREATE <Server Securable>
権限を与えられたユーザーが Server Securableを作成できるようにします。
CREATE <Database Securable>
権限を与えられたユーザーが Database Securableを作成できるようにします。
CREATE <Schema-contained Securable>
スキーマに含まれているセキュリティ保護可能なリソースを作成できるようにします。 ただし、特定のスキーマ内でセキュリティ保護可能なリソースを作成するには、そのスキーマに対する ALTER アクセス許可が必要です。
VIEW DEFINITION
権限を与えられたユーザーがメタデータにアクセスできるようにします。
参考文献
テーブルを参照する FOREIGN KEY 制約を作成するには、そのテーブルに対する REFERENCES アクセス許可が必要です。
オブジェクトを参照する
WITH SCHEMABINDING
句を含む関数またはビューを作成するには、そのオブジェクトに対する REFERENCES アクセス許可が必要です。
SQL Server アクセス許可の一覧表
次の図は、アクセス許可とそれらの関連性を示します。 一部の高いレベルの許可 ( CONTROL SERVER
など) は複数回列挙されています。 この記事のポスターは、読み取るには小さすぎます。 Database Engine のアクセス許可ポスターは PDF 形式のフルサイズ版としてダウンロードできます。
特定のセキュリティ保護可能なリソースに適用できるアクセス許可
次の表に、主なアクセス許可のクラスおよび各アクセス許可を適用できるセキュリティ保護可能なリソースの種類を示します。
アクセス許可 | 適用対象 |
---|---|
ALTER | オブジェクトのすべてのクラス (TYPE を除く)。 |
コントロール | オブジェクトのすべてのクラス: AGGREGATE、 APPLICATION ROLE、 ASSEMBLY、 ASYMMETRIC KEY、 AVAILABILITY GROUP、 CERTIFICATE、 CONTRACT、 CREDENTIALS、 DATABASE、 DATABASE SCOPED CREDENTIAL、 DEFAULT、 ENDPOINT、 FULLTEXT CATALOG、 FULLTEXT STOPLIST、 FUNCTION、 LOGIN、 MESSAGE TYPE、 PROCEDURE、 QUEUE、 REMOTE SERVICE BINDING、 ROLE、 ROUTE、 RULE、 SCHEMA、 SEARCH PROPERTY LIST、 SERVER、 SERVER ROLE、 SERVICE、 SYMMETRIC KEY、 SYNONYM、 TABLE、 TYPE、 USER, VIEW、および XML スキーマ コレクション |
削除 | オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION、SERVER、および TYPE を除く)。 |
実行せよ | CLR 型、外部スクリプト、ストアド プロシージャ (Transact-SQL および CLR)、スカラー関数および集約関数 (Transact-SQL および CLR)、シノニム |
IMPERSONATE | ログインとユーザー |
INSERT | シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。 |
RECEIVE | Service Broker キュー |
参考文献 | AGGREGATE、 ASSEMBLY、 ASYMMETRIC KEY、 CERTIFICATE、 CONTRACT、 CREDENTIAL (SQL Server 2022 (16.x) 以降に適用)、 DATABASE、 DATABASE SCOPED CREDENTIAL、 FULLTEXT CATALOG、 FULLTEXT STOPLIST、 FUNCTION、 MESSAGE TYPE、 PROCEDURE、 QUEUE、 RULE、 SCHEMA、 SEARCH PROPERTY LIST、 SEQUENCE OBJECT、 SYMMETRIC KEY、 TABLE、 TYPE、 VIEW、および XML スキーマ コレクション |
SELECT | シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。 |
責任を引き受ける | オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION、LOGIN、SERVER、および USER を除く)。 |
更新 | シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。 |
変更の追跡を表示する | スキーマとテーブル |
VIEW DEFINITION | オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION および SERVER を除く)。 |
注意事項
セットアップ時にシステム オブジェクトに付与された既定のアクセス許可は、発生する可能性のある脅威に対して慎重に評価されているため、SQL Server のインストールの際、セキュリティ強化の一部として変更する必要はありません。 システム オブジェクトのアクセス許可の変更はどのようなものであっても、SQL Server の機能を制限または中断する可能性があり、SQL Server のインストール環境がサポート対象外の状態になる場合があります。
SQL Server アクセス許可
次の表に、SQL Server のすべてのアクセス許可の一覧を示します。 Azure SQL Database のアクセス許可は、サポートされている基本のセキュリティ保護可能なリソースに対してのみ有効です。 Azure SQL Database ではサーバー レベルのアクセス許可は付与できませんが、代わりにデータベース レベルのアクセス許可が使用できる場合があります。
セキュリティ保護可能な基本リソース | セキュリティ保護可能な基本リソースに対する粒度の細かいアクセス許可 | アクセス許可の種類のコード | 基本リソースを含んでいる別のセキュリティ保護可能なリソース | セキュリティ保護可能なコンテナーに対するアクセス許可 (基本リソースに対する粒度の細かいアクセス許可を暗示) |
---|---|---|---|---|
APPLICATION ROLE | ALTER | AL | DATABASE | 任意のアプリケーション ロールを変更する |
APPLICATION ROLE | コントロール | CL | DATABASE | コントロール |
APPLICATION ROLE | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
ASSEMBLY | ALTER | AL | DATABASE | 任意のアセンブリを変更 |
ASSEMBLY | コントロール | CL | DATABASE | コントロール |
ASSEMBLY | 参考文献 | RF | DATABASE | 参考文献 |
ASSEMBLY | 責任を引き受ける | TO | DATABASE | コントロール |
ASSEMBLY | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
非対称キー | ALTER | AL | DATABASE | 非対称キーを変更する |
非対称キー | コントロール | CL | DATABASE | コントロール |
非対称キー | 参考文献 | RF | DATABASE | 参考文献 |
非対称キー | 責任を引き受ける | TO | DATABASE | コントロール |
非対称キー | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
可用性グループ (Availability Group) | ALTER | AL | SERVER | すべての可用性グループを変更 |
可用性グループ (Availability Group) | コントロール | CL | SERVER | 制御サーバー |
可用性グループ (Availability Group) | 責任を引き受ける | TO | SERVER | 制御サーバー |
可用性グループ (Availability Group) | VIEW DEFINITION | VW | SERVER | 任意の定義を表示 |
CERTIFICATE | ALTER | AL | DATABASE | 任意の証明書を変更する |
CERTIFICATE | コントロール | CL | DATABASE | コントロール |
CERTIFICATE | 参考文献 | RF | DATABASE | 参考文献 |
CERTIFICATE | 責任を引き受ける | TO | DATABASE | コントロール |
CERTIFICATE | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
CONTRACT | ALTER | AL | DATABASE | 任意の契約を変更する |
CONTRACT | コントロール | CL | DATABASE | コントロール |
CONTRACT | 参考文献 | RF | DATABASE | 参考文献 |
CONTRACT | 責任を引き受ける | TO | DATABASE | コントロール |
CONTRACT | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
CREDENTIAL | コントロール | CL | SERVER | 制御サーバー |
CREDENTIAL | 参考文献 | RF | SERVER | 任意の資格情報を変更する |
DATABASE | データベースの一括処理の管理 | DABO | SERVER | 制御サーバー |
DATABASE | ALTER | AL | SERVER | 任意のデータベースを変更する |
DATABASE | 任意のアプリケーション ロールを変更する | ALAR | SERVER | 制御サーバー |
DATABASE | 任意のアセンブリを変更 | ALAS | SERVER | 制御サーバー |
DATABASE | 非対称キーを変更する | アラク | SERVER | 制御サーバー |
DATABASE | 任意の証明書を変更する | ALCF | SERVER | 制御サーバー |
DATABASE | 任意の列暗号化キーを変更する | ALCK SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 任意のカラムマスターキーを変更する | ALCM SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 任意の契約を変更する | ALSC | SERVER | 制御サーバー |
DATABASE | 任意のデータベース監査の変更 | アルダ | SERVER | ALTER ANY SERVER AUDIT |
DATABASE | ALTER ANY DATABASE DDL TRIGGER | ALTG | SERVER | 制御サーバー |
DATABASE | 任意のデータベースイベント通知を変更する | ALED | SERVER | 任意のイベント通知を変更する |
DATABASE | ALTER ANY DATABASE EVENT SESSION | AADS | SERVER | 任意のイベントセッションを変更する |
DATABASE | 任意のデータベース イベント セッションをALTERし、イベントを追加する | LDAE | SERVER | ALTER ANY EVENT SESSION ADD EVENT |
DATABASE | ALTER ANY DATABASE EVENT SESSION ADD TARGET | LDAT | SERVER | ALTER ANY EVENT SESSION ADD TARGET |
DATABASE | あらゆるデータベースのイベントセッションを無効にする | DDES | SERVER | ALTER ANY EVENT SESSION DISABLE |
DATABASE | 任意のデータベースイベントセッションを変更してイベントを削除する | LDDE | SERVER | ALTER ANY EVENT SESSION DROP EVENT |
DATABASE | すべてのデータベースイベントセッションのターゲット削除を変更 | LDDT | SERVER | 任意のイベントセッションを変更してターゲットをドロップする |
DATABASE | ALTER ANY DATABASE EVENT SESSION ENABLE(任意のデータベースイベントセッションを有効化する) | EDES | SERVER | ALTER ANY EVENT SESSION ENABLE (すべてのイベント セッションを有効化) |
DATABASE | 任意のデータベースイベントセッションオプションを変更 | LDSO | SERVER | 任意のイベントセッションオプションを変更する |
DATABASE | いずれのデータベース スコープ設定も変更する | ALDC SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 任意のデータスペースを変更する | ALDS | SERVER | 制御サーバー |
DATABASE | すべての外部データ ソースを変更します。 | AEDS | SERVER | 制御サーバー |
DATABASE | 任意の外部のファイル形式を変更します。 | AEFF | SERVER | 制御サーバー |
DATABASE | ALTER ANY EXTERNAL JOB(任意の外部ジョブを変更) | AESJ | SERVER | 制御サーバー |
DATABASE | 任意の外部言語を変更する | ALLA | SERVER | 制御サーバー |
DATABASE | 任意の外部ライブラリを変更する | ALEL | SERVER | 制御サーバー |
DATABASE | 任意の外部ストリームを変更する | AEST | SERVER | 制御サーバー |
DATABASE | 任意のフルテキストカタログを変更 | ALFT | SERVER | 制御サーバー |
DATABASE | 任意のマスクを変更します。 | AAMK SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 任意のメッセージ型を変更する | ALMT | SERVER | 制御サーバー |
DATABASE | 任意のリモートサービスバインディングを変更する | ALSB | SERVER | 制御サーバー |
DATABASE | あらゆるロールを変更する | ALRL | SERVER | 制御サーバー |
DATABASE | 任意のルートを変更 | ALRT | SERVER | 制御サーバー |
DATABASE | 任意のスキーマを変更する | ALSM | SERVER | 制御サーバー |
DATABASE | すべてのセキュリティ ポリシーを変更します。 | ALSP SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | あらゆる感度分類を変更する | AASC SQL Server (SQL Server 2019 (15.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 任意のサービスを変更する | ALSV | SERVER | 制御サーバー |
DATABASE | ALTER ANY SYMMETRIC KEY | ALSK | SERVER | 制御サーバー |
DATABASE | 任意のユーザーを変更する | ALUS | SERVER | 制御サーバー |
DATABASE | ALTER LEDGER | ALR | SERVER | コントロール |
DATABASE | ALTER LEDGER の構成 | ALC | SERVER | 制御サーバー |
DATABASE | AUTHENTICATE | AUTH | SERVER | サーバーの認証 |
DATABASE | データベースをバックアップ | BADB | SERVER | 制御サーバー |
DATABASE | バックアップ ログ | BALO | SERVER | 制御サーバー |
DATABASE | CHECKPOINT | CP | SERVER | 制御サーバー |
DATABASE | CONNECT | 一酸化炭素 | SERVER | 制御サーバー |
DATABASE | CONNECT REPLICATION | CORP | SERVER | 制御サーバー |
DATABASE | コントロール | CL | SERVER | 制御サーバー |
DATABASE | CREATE AGGREGATE | CRAG | SERVER | 制御サーバー |
DATABASE | 任意のデータベース イベント セッションを作成する | CRDS | SERVER | 任意のイベント セッションを作成する |
DATABASE | アセンブリを作成 | CRAS | SERVER | 制御サーバー |
DATABASE | 非対称キーを作成する | CRAK | SERVER | 制御サーバー |
DATABASE | 証明書の作成 | CRCF | SERVER | 制御サーバー |
DATABASE | 契約を作成 | CRSC | SERVER | 制御サーバー |
DATABASE | データベースを作成 | CRDB | SERVER | 任意のデータベースを作成する |
DATABASE | データベースDDLイベント通知の作成 | CRED | SERVER | CREATE DDL EVENT NOTIFICATION |
DATABASE | デフォルトを作成する | CRDF | SERVER | 制御サーバー |
DATABASE | 外部言語を作成する | CRLA | SERVER | 制御サーバー |
DATABASE | 外部ライブラリを作成する | CREL | SERVER | 制御サーバー |
DATABASE | フルテキスト カタログの作成 | CRFT | SERVER | 制御サーバー |
DATABASE | CREATE FUNCTION | CRFN | SERVER | 制御サーバー |
DATABASE | メッセージの種類を作成する | CRMT | SERVER | 制御サーバー |
DATABASE | プロシージャを作成 | CRPR | SERVER | 制御サーバー |
DATABASE | キューを作成 | CRQU | SERVER | 制御サーバー |
DATABASE | リモート サービス バインディングを作成する | CRSB | SERVER | 制御サーバー |
DATABASE | 役割を作成 | CRRL | SERVER | 制御サーバー |
DATABASE | ルートを作成 | CRRT | SERVER | 制御サーバー |
DATABASE | ルールを作成 | CRRU | SERVER | 制御サーバー |
DATABASE | スキーマを作成 (CREATE SCHEMA) | CRSM | SERVER | 制御サーバー |
DATABASE | サービスを作成 | CRSV | SERVER | 制御サーバー |
DATABASE | 対称キーの作成 | CRSK | SERVER | 制御サーバー |
DATABASE | シノニムの作成 | CRSN | SERVER | 制御サーバー |
DATABASE | CREATE TABLE | CRTB | SERVER | 制御サーバー |
DATABASE | タイプの作成 | CRTY | SERVER | 制御サーバー |
DATABASE | ユーザーを作成する | CUSR | SERVER | 制御サーバー |
DATABASE | ビューを作成 | CRVW | SERVER | 制御サーバー |
DATABASE | XML スキーマ コレクションの作成 | CRXS | SERVER | 制御サーバー |
DATABASE | 削除 | DL | SERVER | 制御サーバー |
DATABASE | データベース イベント セッションを削除する | DRDS | SERVER | 任意のイベント セッションを削除する |
DATABASE | ENABLE LEDGER | EL | SERVER | コントロール |
DATABASE | 実行せよ | EX | SERVER | 制御サーバー |
DATABASE | どの外部エンドポイントでも実行する | EAEE | SERVER | 制御サーバー |
DATABASE | 外部スクリプトを実行する | EAES SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで) に適用されます。 |
SERVER | 制御サーバー |
DATABASE | INSERT | IN | SERVER | 制御サーバー |
DATABASE | KILL DATABASE CONNECTION | KIDC Azure SQL Database にのみ適用されます。 SQL Server では ALTER ANY CONNECTION を使用します。 |
SERVER | 任意の接続を変更する |
DATABASE | 参考文献 | RF | SERVER | 制御サーバー |
DATABASE | SELECT | SL | SERVER | 制御サーバー |
DATABASE | SHOWPLAN | SPLN | SERVER | ALTER TRACE |
DATABASE | クエリ通知をサブスクライブする | SUQN | SERVER | 制御サーバー |
DATABASE | 責任を引き受ける | TO | SERVER | 制御サーバー |
DATABASE | マスク解除します。 | UMSK SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | 制御サーバー |
DATABASE | 更新 | UP | SERVER | 制御サーバー |
DATABASE | 列の暗号化キーの定義を表示します。 | VWCK SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | サーバー状態を表示 |
DATABASE | 任意の列のマスター_キーの定義の表示 | VWCM SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。 |
SERVER | サーバー状態を表示 |
DATABASE | VIEW ANY SENSITIVITY CLASSIFICATION | VASC | SERVER | 制御サーバー |
DATABASE | 暗号化されたセキュリティで保護された定義を表示する | ビデオコンパクトディスク (VCD) | SERVER | 暗号化で保護された定義を表示する |
DATABASE | データベースのパフォーマンス状態の表示 | VDP | SERVER | サーバーのパフォーマンス状態の表示 |
DATABASE | データベース セキュリティ監査の表示 | VDSA | SERVER | 制御サーバー |
DATABASE | データベースのセキュリティ状態の表示 | VDS | SERVER | サーバーのセキュリティ状態の表示 |
DATABASE | データベースの状態の表示 | VWDS | SERVER | サーバー状態を表示 |
DATABASE | VIEW DEFINITION | VW | SERVER | 任意の定義を表示 |
DATABASE | VIEW LEDGER CONTENT | VLC | SERVER | コントロール |
DATABASE | セキュリティ定義の表示 | VWS | SERVER | セキュリティ定義を表示する |
DATABASE | パフォーマンス定義の表示 | ビザ免除プログラム (VWP) | SERVER | パフォーマンス定義を表示する |
データベース スコープ付き認証情報 | ALTER | AL | DATABASE | コントロール |
データベース スコープ付き認証情報 | コントロール | CL | DATABASE | コントロール |
データベース スコープ付き認証情報 | 参考文献 | RF | DATABASE | 参考文献 |
データベース スコープ付き認証情報 | 責任を引き受ける | TO | DATABASE | コントロール |
データベース スコープ付き認証情報 | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
ENDPOINT | ALTER | AL | SERVER | 任意のエンドポイントを変更する |
ENDPOINT | CONNECT | 一酸化炭素 | SERVER | 制御サーバー |
ENDPOINT | コントロール | CL | SERVER | 制御サーバー |
ENDPOINT | 責任を引き受ける | TO | SERVER | 制御サーバー |
ENDPOINT | VIEW DEFINITION | VW | SERVER | 任意の定義を表示 |
全文カタログ | ALTER | AL | DATABASE | 任意のフルテキストカタログを変更 |
全文カタログ | コントロール | CL | DATABASE | コントロール |
全文カタログ | 参考文献 | RF | DATABASE | 参考文献 |
全文カタログ | 責任を引き受ける | TO | DATABASE | コントロール |
全文カタログ | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
FULLTEXT STOPLIST | ALTER | AL | DATABASE | 任意のフルテキストカタログを変更 |
FULLTEXT STOPLIST | コントロール | CL | DATABASE | コントロール |
FULLTEXT STOPLIST | 参考文献 | RF | DATABASE | 参考文献 |
FULLTEXT STOPLIST | 責任を引き受ける | TO | DATABASE | コントロール |
FULLTEXT STOPLIST | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
Login | ALTER | AL | SERVER | 任意のログインを変更する |
Login | コントロール | CL | SERVER | 制御サーバー |
Login | IMPERSONATE | インスタントメッセージング (IM) | SERVER | 制御サーバー |
Login | VIEW DEFINITION | VW | SERVER | 任意の定義を表示 |
メッセージの種類 | ALTER | AL | DATABASE | 任意のメッセージ型を変更する |
メッセージの種類 | コントロール | CL | DATABASE | コントロール |
メッセージの種類 | 参考文献 | RF | DATABASE | 参考文献 |
メッセージの種類 | 責任を引き受ける | TO | DATABASE | コントロール |
メッセージの種類 | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
OBJECT | ALTER | AL | SCHEMA | ALTER |
OBJECT | コントロール | CL | SCHEMA | コントロール |
OBJECT | 削除 | DL | SCHEMA | 削除 |
OBJECT | 実行せよ | EX | SCHEMA | 実行せよ |
OBJECT | INSERT | IN | SCHEMA | INSERT |
OBJECT | RECEIVE | RC | SCHEMA | コントロール |
OBJECT | 参考文献 | RF | SCHEMA | 参考文献 |
OBJECT | SELECT | SL | SCHEMA | SELECT |
OBJECT | 責任を引き受ける | TO | SCHEMA | コントロール |
OBJECT | マスク解除します。 | UMSK | SCHEMA | マスク解除します。 |
OBJECT | 更新 | UP | SCHEMA | 更新 |
OBJECT | 変更の追跡を表示する | VWCT | SCHEMA | 変更の追跡を表示する |
OBJECT | VIEW DEFINITION | VW | SCHEMA | VIEW DEFINITION |
REMOTE SERVICE BINDING | ALTER | AL | DATABASE | 任意のリモートサービスバインディングを変更する |
REMOTE SERVICE BINDING | コントロール | CL | DATABASE | コントロール |
REMOTE SERVICE BINDING | 責任を引き受ける | TO | DATABASE | コントロール |
REMOTE SERVICE BINDING | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
ROLE | ALTER | AL | DATABASE | あらゆるロールを変更する |
ROLE | コントロール | CL | DATABASE | コントロール |
ROLE | 責任を引き受ける | TO | DATABASE | コントロール |
ROLE | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
ROUTE | ALTER | AL | DATABASE | 任意のルートを変更 |
ROUTE | コントロール | CL | DATABASE | コントロール |
ROUTE | 責任を引き受ける | TO | DATABASE | コントロール |
ROUTE | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
SCHEMA | ALTER | AL | DATABASE | 任意のスキーマを変更する |
SCHEMA | コントロール | CL | DATABASE | コントロール |
SCHEMA | シーケンスを作成する (CREATE SEQUENCE) | CRSO | DATABASE | コントロール |
SCHEMA | 削除 | DL | DATABASE | 削除 |
SCHEMA | 実行せよ | EX | DATABASE | 実行せよ |
SCHEMA | INSERT | IN | DATABASE | INSERT |
SCHEMA | 参考文献 | RF | DATABASE | 参考文献 |
SCHEMA | SELECT | SL | DATABASE | SELECT |
SCHEMA | 責任を引き受ける | TO | DATABASE | コントロール |
SCHEMA | マスク解除します。 | UMSK | DATABASE | マスク解除します。 |
SCHEMA | 更新 | UP | DATABASE | 更新 |
SCHEMA | 変更の追跡を表示する | VWCT | DATABASE | 変更の追跡を表示する |
SCHEMA | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
物件リストを検索 | ALTER | AL | SERVER | 任意のフルテキストカタログを変更 |
物件リストを検索 | コントロール | CL | SERVER | コントロール |
物件リストを検索 | 参考文献 | RF | SERVER | 参考文献 |
物件リストを検索 | 責任を引き受ける | TO | SERVER | コントロール |
物件リストを検索 | VIEW DEFINITION | VW | SERVER | VIEW DEFINITION |
SERVER | 一括操作の管理 | ADBO | 該当なし | 該当なし |
SERVER | すべての可用性グループを変更 | ALAG | 該当なし | 該当なし |
SERVER | 任意の接続を変更する | ALCO | 該当なし | 該当なし |
SERVER | 任意の資格情報を変更する | ALCD | 該当なし | 該当なし |
SERVER | 任意のデータベースを変更する | ALDB | 該当なし | 該当なし |
SERVER | 任意のエンドポイントを変更する | ALHE | 該当なし | 該当なし |
SERVER | 任意のイベント通知を変更する | ALES | 該当なし | 該当なし |
SERVER | 任意のイベントセッションを変更する | AAES | 該当なし | 該当なし |
SERVER | ALTER ANY EVENT SESSION ADD EVENT | LSAE | 該当なし | 該当なし |
SERVER | 任意のイベントセッションを変更し、ターゲットを追加 | LSAT | 該当なし | 該当なし |
SERVER | 任意のイベントセッションの無効化を変更する | データ暗号化標準 (DES) | 該当なし | 該当なし |
SERVER | ALTER ANY EVENT SESSION DROP EVENT | LSDE | 該当なし | 該当なし |
SERVER | 任意のイベントセッションを変更してターゲットをドロップする | LSDT | 該当なし | 該当なし |
SERVER | ALTER ANY EVENT SESSION ENABLE | EES | 該当なし | 該当なし |
SERVER | 任意のイベントセッションオプションを変更する | LESO | 該当なし | 該当なし |
SERVER | 任意のリンク サーバーを変更する | オールズ | 該当なし | 該当なし |
SERVER | 任意のログインを変更する | ALLG | 該当なし | 該当なし |
SERVER | ALTER ANY SERVER AUDIT | ALAA | 該当なし | 該当なし |
SERVER | 任意のサーバー ロールを変更する | ALSR | 該当なし | 該当なし |
SERVER | リソースを変更する | ALRS (エーエルアールエス) | 該当なし | 該当なし |
SERVER | サーバーの状態を変更 | ALSS | 該当なし | 該当なし |
SERVER | 設定を変更する | ALST | 該当なし | 該当なし |
SERVER | トレースの変更 | ALTR | 該当なし | 該当なし |
SERVER | サーバーの認証 | AUTH | 該当なし | 該当なし |
SERVER | 任意のデータベースを接続する | CADB | 該当なし | 該当なし |
SERVER | CONNECT SQL | COSQ | 該当なし | 該当なし |
SERVER | 制御サーバー | CL | 該当なし | 該当なし |
SERVER | 任意のデータベースを作成する | CRDB | 該当なし | 該当なし |
SERVER | 可用性グループの作成 | CRAC | 該当なし | 該当なし |
SERVER | CREATE DDL EVENT NOTIFICATION | CRDE | 該当なし | 該当なし |
SERVER | エンドポイントを作成 | CRHE | 該当なし | 該当なし |
SERVER | CREATE SERVER ROLE(サーバーロールを作成) | CRSR | 該当なし | 該当なし |
SERVER | トレース イベント通知の作成 | CRTE | 該当なし | 該当なし |
SERVER | 外部アクセスアセンブリ | XA | 該当なし | 該当なし |
SERVER | IMPERSONATE ANY LOGIN | IAL | 該当なし | 該当なし |
SERVER | SELECT ALL USER SECURABLES | SUS | 該当なし | 該当なし |
SERVER | SHUTDOWN | SHDN | 該当なし | 該当なし |
SERVER | 危険な組み立て | XU | 該当なし | 該当なし |
SERVER | 任意のデータベースを表示 | VWDB | 該当なし | 該当なし |
SERVER | 任意の定義を表示 | VWAD | 該当なし | 該当なし |
SERVER | サーバー状態を表示 | VWSS | 該当なし | 該当なし |
SERVER ROLE | ALTER | AL | SERVER | 任意のサーバー ロールを変更する |
SERVER ROLE | コントロール | CL | SERVER | 制御サーバー |
SERVER ROLE | 責任を引き受ける | TO | SERVER | 制御サーバー |
SERVER ROLE | VIEW DEFINITION | VW | SERVER | 任意の定義を表示 |
SERVICE | ALTER | AL | DATABASE | 任意のサービスを変更する |
SERVICE | コントロール | CL | DATABASE | コントロール |
SERVICE | SEND | SN | DATABASE | コントロール |
SERVICE | 責任を引き受ける | TO | DATABASE | コントロール |
SERVICE | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
SYMMETRIC KEY | ALTER | AL | DATABASE | ALTER ANY SYMMETRIC KEY |
SYMMETRIC KEY | コントロール | CL | DATABASE | コントロール |
SYMMETRIC KEY | 参考文献 | RF | DATABASE | 参考文献 |
SYMMETRIC KEY | 責任を引き受ける | TO | DATABASE | コントロール |
SYMMETRIC KEY | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
タイプ | コントロール | CL | SCHEMA | コントロール |
タイプ | 実行せよ | EX | SCHEMA | 実行せよ |
タイプ | 参考文献 | RF | SCHEMA | 参考文献 |
タイプ | 責任を引き受ける | TO | SCHEMA | コントロール |
タイプ | VIEW DEFINITION | VW | SCHEMA | VIEW DEFINITION |
User | ALTER | AL | DATABASE | 任意のユーザーを変更する |
User | コントロール | CL | DATABASE | コントロール |
User | IMPERSONATE | インスタントメッセージング (IM) | DATABASE | コントロール |
User | VIEW DEFINITION | VW | DATABASE | VIEW DEFINITION |
XML スキーマ コレクション | ALTER | AL | SCHEMA | ALTER |
XML スキーマ コレクション | コントロール | CL | SCHEMA | コントロール |
XML スキーマ コレクション | 実行せよ | EX | SCHEMA | 実行せよ |
XML スキーマ コレクション | 参考文献 | RF | SCHEMA | 参考文献 |
XML スキーマ コレクション | 責任を引き受ける | TO | SCHEMA | コントロール |
XML スキーマ コレクション | VIEW DEFINITION | VW | SCHEMA | VIEW DEFINITION |
SQL Server 2022 で追加・細分化された新しいアクセス許可
SQL Server 2022 には、次のアクセス許可が追加されています。
システム メタデータへのアクセスを許可する 10 件の新しいアクセス許可が追加されました。
拡張イベントに対する 18 件の新しいアクセス許可が追加されました。
セキュリティ関連オブジェクトに対する 9 件の新しいアクセス許可が追加されました。
レジャーに対する 4 件のアクセス許可が追加されました。
その他、3 件のデータベース レベルのアクセス許可が追加されました。
詳細については、PoLP 準拠を強化するために SQL Server 2022 および Azure SQL で追加・細分化された新しいアクセス許可に関する記事を参照してください。
システム メタデータに対するアクセス許可
サーバー レベル:
- セキュリティ定義を表示する
- パフォーマンス定義を表示する
- サーバーのセキュリティ状態の表示
- サーバーのパフォーマンス状態の表示
- 暗号化で保護された定義を表示する
データベース レベル:
- データベースのセキュリティ状態の表示
- データベースのパフォーマンス状態の表示
- セキュリティ定義の表示
- パフォーマンス定義の表示
- 暗号化されたセキュリティで保護された定義を表示する
拡張イベントに対するアクセス許可
サーバー レベル:
- 任意のイベント セッションを作成する
- 任意のイベント セッションを削除する
- 任意のイベントセッションオプションを変更する
- ALTER ANY EVENT SESSION ADD EVENT
- ALTER ANY EVENT SESSION DROP EVENT
- ALTER ANY EVENT SESSION ENABLE
- ALTER ANY EVENT SESSION DISABLE
- ALTER ANY EVENT SESSION ADD TARGET
- 任意のイベントセッションを変更してターゲットをドロップする
これらすべてのアクセス許可は、ALTER ANY EVENT SESSION という同じ親アクセス許可の下にあります。
データベース レベル:
- 任意のデータベース イベント セッションを作成する
- データベース イベント セッションを削除する
- 任意のデータベースイベントセッションオプションを変更
- 任意のデータベース イベント セッションをALTERし、イベントを追加する
- ALTER ANY DATABASE EVENT SESSION DROP EVENT
- ALTER ANY DATABASE EVENT SESSION ENABLE(任意のデータベースイベントセッションを有効化する)
- あらゆるデータベースのイベントセッションを無効にする
- ALTER ANY DATABASE EVENT SESSION ADD TARGET
- すべてのデータベースイベントセッションのターゲット削除を変更
これらすべてのアクセス許可は、ALTER ANY DATABASE EVENT SESSION という同じ親アクセス許可の下にあります。
セキュリティ関連オブジェクトに対するアクセス許可
- CONTROL (CREDENTIAL)
- ログインの作成
- ユーザーを作成する
- 資格に関する参照
- マスクを解除 (オブジェクト)
- アンマスク (スキーマ)
- エラー ログを表示する
- サーバー セキュリティ監査の表示
- データベース セキュリティ監査の表示
レジャーに対するアクセス許可
- ALTER LEDGER
- ALTER LEDGER の構成
- ENABLE LEDGER
- VIEW LEDGER CONTENT
その他のデータベース レベルのアクセス許可
- ALTER ANY EXTERNAL JOB(任意の外部ジョブを変更)
- 任意の外部ストリームを変更する
- 任意の外部エンドポイントを実行する
アクセス許可チェック アルゴリズムの概要
アクセス許可のチェックは複雑な場合があります。 アクセス許可チェック アルゴリズムには、グループ メンバーシップの重複、所有権の継承、明示的および暗黙的なアクセス許可が含まれます。また、セキュリティ保護可能なエンティティを含むセキュリティ保護可能なクラスに対するアクセス許可の影響を受けることもあります。 アルゴリズムの一般的な手順では、関連するアクセス許可がすべて収集されます。 ブロックする DENY が見つからない場合、十分なアクセス権を付与する GRANT が検索されます。 アルゴリズムには、不可欠な要素が 3 つあります。 セキュリティ コンテキスト、 アクセス許可領域、および 必要なアクセス許可です。
注
sa
、dbo
、エンティティ所有者、information_schema
、sys
、または自分自身に対するアクセス許可を付与、拒否、または取り消すことはできません。
セキュリティ コンテキスト
これは、アクセス チェックに対してアクセス許可を与えるプリンシパルのグループです。 EXECUTE AS ステートメントを使用してセキュリティ コンテキストが別のログインまたはユーザーに変更されていない限り、現在のログインまたはユーザーに関連したアクセス許可です。 セキュリティ コンテキストには次のプリンシパルが含まれます。
ログイン
ユーザー
ロールのメンバーシップ
Windows グループのメンバーシップ
モジュール署名が使用されている場合、ユーザーが現在実行しているモジュールの署名に使用された証明書のログインまたはユーザー アカウント、およびそのプリンシパルに関連付けられたロールのメンバーシップ
アクセス許可領域
これは、セキュリティ保護可能なエンティティと、それを含むすべてのセキュリティ保護可能なクラスです。 たとえば、あるテーブル (セキュリティ保護可能なエンティティ) が、セキュリティ保護可能なクラスであるスキーマとデータベースに含まれているとします。 この場合のアクセスは、テーブル、スキーマ、データベース、サーバーの各レベルのアクセス許可による影響を受けます。 詳細については、アクセス許可の階層 (Database Engine) に関する記事を参照してください。
必要なアクセス許可
必要とされるアクセス許可の種類です。 INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL などがあります。
次の例のように、アクセスに複数のアクセス許可が必要な場合もあります。
ストアド プロシージャでは、ストアド プロシージャ自体に対する EXECUTE アクセス許可に加えて、ストアド プロシージャによって参照されている複数のテーブルに対する INSERT アクセス許可が必要な場合があります。
動的管理ビューでは、ビューに対する VIEW SERVER STATE と SELECT の両方のアクセス許可が必要な場合があります。
アルゴリズムの一般的な手順
セキュリティ保護可能なリソースに対するアクセスを許可するかどうかを判断するためにアルゴリズムが実際に使用する手順は、関連するプリンシパルとセキュリティ保護可能なリソースによって異なる場合があります。 ただし、アルゴリズムは一般に以下の手順を実行します。
ログインが sysadmin 固定サーバー ロールのメンバーであるか、ユーザーが現在のデータベースの dbo ユーザーである場合は、アクセス許可チェックを行いません。
所有権の継承が適用され、その継承内でオブジェクトに対するアクセス チェックが以前にセキュリティ チェックに合格している場合は、アクセスを許可します。
呼び出し元に関連付けられたサーバーレベル、データベースレベル、署名付きモジュールの各 ID を集計して、 セキュリティ コンテキストを作成します。
その セキュリティ コンテキスト用に、 アクセス許可領域に対して許可または拒否されたアクセス許可をすべて収集します。 アクセス許可は、GRANT、GRANT WITH GRANT、または DENY として明示的に指定される場合と、暗黙アクセス許可または包含アクセス許可の GRANT または DENY である場合があります。 たとえば、スキーマに対する CONTROL を使用した場合、テーブルに対する CONTROL も暗黙的に適用されます。 また、テーブルに対して CONTROL 権限を使用した場合、SELECT 権限も暗黙的に適用されます。 したがって、スキーマに対する CONTROL が付与された場合、テーブルに対する SELECT も付与されます。 テーブルに対する CONTROL 権限が拒否された場合、テーブルに対する SELECT 権限も拒否されます。
注
列レベルのアクセス許可の GRANT により、オブジェクト レベルの DENY がオーバーライドされます。 詳細については、オブジェクトに対する DENY アクセス許可に関する記事を参照してください。
必要なアクセス許可を識別します。
アクセス許可領域内のオブジェクトについて、必要なアクセス許可が、セキュリティ コンテキストの任意の ID に対し直接または暗黙的に拒否されている場合は、アクセス許可チェックが不合格となります。
アクセス許可領域内のすべてのオブジェクトについて、必要なアクセス許可がセキュリティ コンテキストのいずれの ID に対しても直接または暗黙的に拒否されておらず、必要なアクセス許可に GRANT アクセス許可または GRANT WITH GRANT アクセス許可が含まれている場合は、アクセス許可チェックが合格となります。
列レベルのアクセス許可に関する特別な考慮事項
列レベルのアクセス許可は構文 <table_name>(<column _name>) を使用して付与されます。 例えば次が挙げられます。
GRANT SELECT ON OBJECT::Customer(CustomerName) TO UserJoe;
テーブルの DENY は、列の GRANT によりオーバーライドされます。 ただし、その後にテーブルの DENY があると、列の GRANT は削除されます。
例
このセクションでは、アクセス許可に関する情報を取得する例を示します。
A. 付与できるアクセス許可の完全な一覧を返す
次のステートメントは、fn_builtin_permissions
関数を使用してすべての Database Engine のアクセス許可を返します。 詳細については、「sys.fn_builtin_permissions」 を参照してください。
SELECT * FROM fn_builtin_permissions(default);
GO
B. オブジェクトの特定のクラスに対するアクセス許可を返す
次の例では、 fn_builtin_permissions
を使用してセキュリティ保護可能なカテゴリに使用できるすべてのアクセス許可を表示します。 この例では、アセンブリに対するアクセス許可を返します。
SELECT * FROM fn_builtin_permissions('assembly');
GO
C. オブジェクトに対する実行中のプリンシパルに付与されたアクセス許可を返す
次の例では、 fn_my_permissions
を使用して、指定したセキュリティ保護可能なリソースについて、呼び出し元のプリンシパルが保持している有効なアクセス許可の一覧を返します。 この例では、Orders55
という名前のオブジェクトに対するアクセス許可を返します。 詳細については、「sys.fn_my_permissions」 を参照してください。
SELECT * FROM fn_my_permissions('Orders55', 'object');
GO
D. 指定したオブジェクトに適用できるアクセス許可を返す
次の例は、 Yttrium
と呼ばれるオブジェクトに適用できるアクセス許可を返します。 オブジェクト OBJECT_ID
の ID を取得するために、組み込み関数 Yttrium
が使用されています。
SELECT * FROM sys.database_permissions
WHERE major_id = OBJECT_ID('Yttrium');
GO