次の方法で共有


権限 (データベース エンジン)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric WarehouseMicrosoft Fabric SQL Database

SQL Server のすべてのセキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 データベース エンジン での権限は、ログインおよびサーバー ロールに割り当てられたサーバー レベル、およびデータベース ユーザーおよびデータベース ロールに割り当てられたデータベース レベルで管理されます。 Azure SQL Database のモデルには、データベース権限用に同じシステムがありますが、サーバー レベルの権限は使用できません。 このトピックでは、権限の一覧を示します。 アクセス許可の一般的な実装については、「 Getting Started with Database Engine Permissions」を参照してください。

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 データベースでは、データベース レベルのユーザーとロールのみがサポートされます。 サーバー レベルのログイン、ロール、sa アカウントは使用できません。 Microsoft Fabric の SQL データベースでは、データベース ユーザーの Microsoft Entra ID のみがサポートされている認証方法です。 詳細については、「 Microsoft Fabric の SQL データベースでの認証」を参照してください。

必要な権限を理解したら、GRANTREVOKE、および 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 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 の権限を借用できるようにします。

  • ユーザーになりすます <ユーザー>

    権限を与えられたユーザーが、User の権限を借用できるようにします。

  • CREATE <Server Securable>

    権限を与えられたユーザーが Server Securableを作成できるようにします。

  • CREATE <Database Securable>

    権限を与えられたユーザーが Database Securableを作成できるようにします。

  • CREATE <Schema に含まれるセキュリティ保護可能なリソース>

    スキーマに含まれているセキュリティ保護可能なリソースを作成できるようにします。 ただし、特定のスキーマ内でセキュリティ保護可能なリソースを作成するには、そのスキーマに対する ALTER 権限が必要です。

  • ビューの定義

    権限を与えられたユーザーがメタデータにアクセスできるようにします。

  • 参考文献

    テーブルを参照する FOREIGN KEY 制約を作成するには、そのテーブルに対する REFERENCES 権限が必要です。

    オブジェクトを参照する WITH SCHEMABINDING 句を含む関数またはビューを作成するには、そのオブジェクトに対する REFERENCES 権限が必要です。

SQL Server 権限の一覧表

次の画像は、アクセス許可とそれらの関連性を示します。 一部の高いレベルの許可 ( CONTROL SERVERなど) は複数回列挙されています。 この記事のポスターは、読み取るには小さすぎます。 画像をクリックすると、フルサイズのデータベース エンジンのアクセス許可ポスターを PDF 形式でダウンロードできます。

データベース エンジン アクセス許可 PDF のスクリーンショット。

特定のセキュリティ保護可能なリソースに適用できる権限

次の表に、主な権限のクラスおよび各権限を適用できるセキュリティ保護可能なリソースの種類を示します。

権限 適用対象
変える オブジェクトのすべてのクラス (TYPE を除く)。
コントロール オブジェクトのすべてのクラス:

AGGREGATE、
APPLICATION ROLE、
ASSEMBLY、
ASYMMETRIC KEY、
AVAILABILITY GROUP、
CERTIFICATE、
CONTRACT、
資格情報
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、
利用者
VIEW、および
XML スキーマ コレクション
削除 オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION、SERVER、および TYPE を除く)。
実行せよ CLR 型、外部スクリプト、プロシージャ (Transact-SQL と CLR)、スカラー関数、集計関数 (Transact-SQL と CLR)、およびシノニム
偽装 ログインとユーザー
挿入する シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルで権限を付与できます。
受ける Service Broker キュー
参考文献 AGGREGATE、
ASSEMBLY、
ASYMMETRIC KEY、
CERTIFICATE、
CONTRACT、
資格情報 (適用対象: 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 スキーマ コレクション
選択 シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルで権限を付与できます。
責任を引き受ける オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION、LOGIN、SERVER、および USER を除く)。
更新 シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルで権限を付与できます。
変更の追跡を表示する スキーマとテーブル
ビューの定義 オブジェクトのすべてのクラス (DATABASE SCOPED CONFIGURATION および SERVER を除く)。

注意事項

セットアップ時にシステム オブジェクトに付与された既定のアクセス許可は、発生する可能性のある脅威に対して慎重に評価されているため、SQL Server のインストールの際、セキュリティ強化の一部として変更する必要はありません。 何らかのシステム オブジェクトのアクセス許可の変更によって、機能が制限または中断される可能性があり、SQL Server のインストールが未サポート状態のままになる場合があります。

SQL Server 権限

次の表に、SQL Server のすべての権限の一覧を示します。 Azure SQL Database のアクセス許可は、サポートされている基本のセキュリティ保護可能なリソースにのみ使用できます。 Azure SQL Database ではサーバー レベルのアクセス許可を付与することはできませんが、代わりにデータベースのアクセス許可を付与できる場合があります。

セキュリティ保護可能な基本リソース セキュリティ保護可能な基本リソースに対する粒度の細かい権限 アクセス許可の種類コード 基本リソースを含んでいる別のセキュリティ保護可能なリソース セキュリティ保護可能なコンテナーに対する権限 (基本リソースに対する粒度の細かい権限を暗示)
アプリケーションの役割 変える アル データベース 任意のアプリケーション ロールを変更する
アプリケーションの役割 コントロール CL(塩素) データベース コントロール
アプリケーションの役割 ビューの定義 VW データベース ビューの定義
集会 変える アル データベース 任意のアセンブリを変更
集会 コントロール CL(塩素) データベース コントロール
集会 参考文献 RF データベース 参考文献
集会 責任を引き受ける 宛先 データベース コントロール
集会 ビューの定義 VW データベース ビューの定義
非対称キー 変える アル データベース 非対称キーを変更する
非対称キー コントロール CL(塩素) データベース コントロール
非対称キー 参考文献 RF データベース 参考文献
非対称キー 責任を引き受ける 宛先 データベース コントロール
非対称キー ビューの定義 VW データベース ビューの定義
可用性グループ (Availability Group) 変える アル サーバー すべての可用性グループを変更
可用性グループ (Availability Group) コントロール CL(塩素) サーバー CONTROL SERVER
可用性グループ (Availability Group) 責任を引き受ける 宛先 サーバー CONTROL SERVER
可用性グループ (Availability Group) ビューの定義 VW サーバー 任意の定義を表示
証書 変える アル データベース ALTER ANY CERTIFICATE
証書 コントロール CL(塩素) データベース コントロール
証書 参考文献 RF データベース 参考文献
証書 責任を引き受ける 宛先 データベース コントロール
証書 ビューの定義 VW データベース ビューの定義
契約 変える アル データベース 任意の契約を変更する
契約 コントロール CL(塩素) データベース コントロール
契約 参考文献 RF データベース 参考文献
契約 責任を引き受ける 宛先 データベース コントロール
契約 ビューの定義 VW データベース ビューの定義
資格 情報 コントロール CL(塩素) サーバー CONTROL SERVER
資格 情報 参考文献 RF サーバー 任意の資格情報を変更する
データベース データベースの一括操作の管理 DABO サーバー CONTROL SERVER
データベース 変える アル サーバー 任意のデータベースを変更する
データベース 任意のアプリケーション ロールを変更する 鼻翼 サーバー CONTROL SERVER
データベース 任意のアセンブリを変更 残念ながら サーバー CONTROL SERVER
データベース 非対称キーを変更する アラク サーバー CONTROL SERVER
データベース ALTER ANY CERTIFICATE ALCF サーバー CONTROL SERVER
データベース ALTER ANY COLUMN ENCRYPTION KEY ALCK

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 任意のカラムマスターキーを変更する ALCM

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 任意の契約を変更する ALSC サーバー CONTROL SERVER
データベース 任意のデータベース監査の変更 アルダ サーバー サーバー監査の変更許可
データベース ALTER ANY DATABASE DDL TRIGGER AltG サーバー CONTROL SERVER
データベース 任意のデータベースイベント通知を変更する ALED サーバー ALTER ANY EVENT NOTIFICATION
データベース ALTER ANY DATABASE イベント セッション AADS サーバー 任意のイベントセッションを変更する
データベース ALTER ANY DATABASE EVENT SESSION ADD EVENT LDAE サーバー ALTER ANY EVENT SESSION ADD EVENT
データベース ALTER ANY DATABASE EVENT SESSION ADD TARGET LDAT サーバー ALTER ANY EVENT SESSION ADD TARGET
データベース ALTER ANY DATABASE EVENT SESSION DISABLE DDES サーバー ALTER ANY EVENT SESSION DISABLE
データベース ALTER ANY DATABASE EVENT SESSION DROP EVENT LDDE サーバー ALTER ANY EVENT SESSION DROP EVENT
データベース ALTER ANY DATABASE EVENT SESSION DROP TARGET LDDT サーバー ALTER ANY EVENT SESSION DROP TARGET
データベース ALTER ANY DATABASE EVENT SESSION ENABLE EDES サーバー ALTER ANY EVENT SESSION ENABLE
データベース ALTER ANY DATABASE EVENT SESSION OPTION LDSO サーバー ALTER ANY EVENT SESSION OPTION
データベース ALTER ANY DATABASE SCOPED CONFIGURATION ALDC

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 任意のデータスペースを変更する ALDS サーバー CONTROL SERVER
データベース すべての外部データ ソースを変更します。 AEDS サーバー CONTROL SERVER
データベース 任意の外部のファイル形式を変更します。 AEFF サーバー CONTROL SERVER
データベース ALTER ANY EXTERNAL JOB AESJ サーバー CONTROL SERVER
データベース ALTER ANY EXTERNAL LANGUAGE アッラ サーバー CONTROL SERVER
データベース ALTER ANY EXTERNAL LIBRARY ALEL サーバー CONTROL SERVER
データベース ALTER ANY EXTERNAL STREAM AEST サーバー CONTROL SERVER
データベース 任意のフルテキストカタログを変更 ALFT サーバー CONTROL SERVER
データベース 任意のマスクを変更します。 AAMK

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 任意のメッセージ型を変更する ALMT サーバー CONTROL SERVER
データベース 任意のリモートサービスバインディングを変更する ALSB サーバー CONTROL SERVER
データベース あらゆるロールを変更する ALRL サーバー CONTROL SERVER
データベース 任意のルートを変更 ALRT サーバー CONTROL SERVER
データベース 任意のスキーマを変更する ALSM サーバー CONTROL SERVER
データベース すべてのセキュリティ ポリシーを変更します。 ALSP

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 秘密度分類を変更する AASC
適用対象: SQL Server (SQL Server 2019 (15.x) から現在のバージョンまで)、Azure SQL Database。
サーバー CONTROL SERVER
データベース 任意のサービスを変更する ALSV サーバー CONTROL SERVER
データベース 対称鍵の変更可能 ALSK サーバー CONTROL SERVER
データベース 任意のユーザーを変更する ALUS サーバー CONTROL SERVER
データベース ALTER LEDGER ALR サーバー コントロール
データベース ALTER LEDGER の構成 ALC サーバー CONTROL SERVER
データベース 認証 認証 サーバー サーバーの認証
データベース データベースをバックアップ BADB サーバー CONTROL SERVER
データベース バックアップ ログ BALO サーバー CONTROL SERVER
データベース チェックポイント CP サーバー CONTROL SERVER
データベース 繋ぐ 一酸化炭素 サーバー CONTROL SERVER
データベース 接続レプリケーション 株式会社 サーバー CONTROL SERVER
データベース コントロール CL(塩素) サーバー CONTROL SERVER
データベース 集計関数を作成する 巨岩 サーバー CONTROL SERVER
データベース 任意のデータベース イベント セッションを作成する CRDS サーバー 任意のイベント セッションを作成する
データベース CREATE ASSEMBLY CRAS サーバー CONTROL SERVER
データベース 非対称キーを作成する CRAK サーバー CONTROL SERVER
データベース 証明書の作成 CRCF サーバー CONTROL SERVER
データベース 契約を作成 CRSC サーバー CONTROL SERVER
データベース データベースを作成 CRDB サーバー 任意のデータベースを作成する
データベース データベースDDLイベント通知の作成 CRED サーバー CREATE DDL イベント通知
データベース デフォルトを作成する CRDF サーバー CONTROL SERVER
データベース CREATE EXTERNAL LANGUAGE CRLA サーバー CONTROL SERVER
データベース 外部ライブラリを作成する CREL サーバー CONTROL SERVER
データベース フルテキスト カタログの作成 CRFT サーバー CONTROL SERVER
データベース CREATE 関数 CRFN サーバー CONTROL SERVER
データベース メッセージの種類を作成する CRMT サーバー CONTROL SERVER
データベース 手順の作成 CRPR サーバー CONTROL SERVER
データベース キューを作成 CRQU サーバー CONTROL SERVER
データベース CREATE REMOTE SERVICE BINDING CRSB サーバー CONTROL SERVER
データベース 役割を作成 CRRL サーバー CONTROL SERVER
データベース ルートを作成 持続的腎代替療法 (CRRT) サーバー CONTROL SERVER
データベース ルールを作成 CRRU サーバー CONTROL SERVER
データベース スキーマを作成 (CREATE SCHEMA) CRSM サーバー CONTROL SERVER
データベース CREATE SERVICE CRSV サーバー CONTROL SERVER
データベース 対称キーの作成 CRSK サーバー CONTROL SERVER
データベース シノニムの作成 CRSN サーバー CONTROL SERVER
データベース テーブルを作成 CRTB サーバー CONTROL SERVER
データベース 種類の作成 CRTY サーバー CONTROL SERVER
データベース ユーザーを作成する CUSR サーバー CONTROL SERVER
データベース VIEW の作成 CRVW サーバー CONTROL SERVER
データベース XML スキーマ コレクションの作成 CRXS サーバー CONTROL SERVER
データベース 削除 DL サーバー CONTROL SERVER
データベース データベース イベント セッションを削除する DRDS サーバー 任意のイベント セッションを削除する
データベース 台帳を有効にする エル サーバー コントロール
データベース 実行せよ サーバー CONTROL SERVER
データベース 外部エンドポイントを実行する EAEE サーバー CONTROL SERVER
データベース 外部スクリプトを実行する EAES

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)。
サーバー CONTROL SERVER
データベース 挿入する サーバー CONTROL SERVER
データベース データベース接続の終了 KIDC

適用対象: Azure SQL データベース のみ SQL Server では、ALTER ANY CONNECTION を使用します。
サーバー 任意の接続を変更する
データベース 参考文献 RF サーバー CONTROL SERVER
データベース 選択 SL サーバー CONTROL SERVER
データベース ショープラン SPLN サーバー ALTER TRACE
データベース クエリ通知をサブスクライブする SUQN サーバー CONTROL SERVER
データベース 責任を引き受ける 宛先 サーバー CONTROL SERVER
データベース マスク解除します。 UMSK

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー CONTROL SERVER
データベース 更新 サーバー CONTROL SERVER
データベース 列の暗号化キーの定義を表示します。 VWCK

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー サーバー状態を表示
データベース 任意の列のマスター_キーの定義の表示 VWCM

適用対象: SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで、Azure SQL Database)。
サーバー サーバー状態を表示
データベース 秘密度分類を表示する VASC サーバー CONTROL SERVER
データベース 暗号化されたセキュリティで保護された定義を表示する VCD サーバー 暗号化で保護された定義を表示する
データベース データベースのパフォーマンス状態の表示 VDP サーバー サーバーのパフォーマンス状態の表示
データベース データベース セキュリティ監査の表示 VDSA サーバー CONTROL SERVER
データベース データベースのセキュリティ状態の表示 VDS サーバー サーバーのセキュリティ状態の表示
データベース データベース状態の表示 VWDS サーバー サーバー状態を表示
データベース ビューの定義 VW サーバー 任意の定義を表示
データベース 台帳のコンテンツを表示する VLC サーバー コントロール
データベース セキュリティ定義の表示 VWS サーバー セキュリティ定義を表示する
データベース パフォーマンス定義の表示 VWP サーバー パフォーマンス定義を表示する
DATABASE SCOPED CREDENTIAL 変える アル データベース コントロール
DATABASE SCOPED CREDENTIAL コントロール CL(塩素) データベース コントロール
DATABASE SCOPED CREDENTIAL 参考文献 RF データベース 参考文献
DATABASE SCOPED CREDENTIAL 責任を引き受ける 宛先 データベース コントロール
DATABASE SCOPED CREDENTIAL ビューの定義 VW データベース ビューの定義
エンドポイント 変える アル サーバー 任意のエンドポイントを変更する
エンドポイント 繋ぐ 一酸化炭素 サーバー CONTROL SERVER
エンドポイント コントロール CL(塩素) サーバー CONTROL SERVER
エンドポイント 責任を引き受ける 宛先 サーバー CONTROL SERVER
エンドポイント ビューの定義 VW サーバー 任意の定義を表示
全文カタログ 変える アル データベース 任意のフルテキストカタログを変更
全文カタログ コントロール CL(塩素) データベース コントロール
全文カタログ 参考文献 RF データベース 参考文献
全文カタログ 責任を引き受ける 宛先 データベース コントロール
全文カタログ ビューの定義 VW データベース ビューの定義
全文ストップリスト 変える アル データベース 任意のフルテキストカタログを変更
全文ストップリスト コントロール CL(塩素) データベース コントロール
全文ストップリスト 参考文献 RF データベース 参考文献
全文ストップリスト 責任を引き受ける 宛先 データベース コントロール
全文ストップリスト ビューの定義 VW データベース ビューの定義
ログイン 変える アル サーバー 任意のログインを変更する
ログイン コントロール CL(塩素) サーバー CONTROL SERVER
ログイン 偽装 IM サーバー CONTROL SERVER
ログイン ビューの定義 VW サーバー 任意の定義を表示
メッセージの種類 変える アル データベース 任意のメッセージ型を変更する
メッセージの種類 コントロール CL(塩素) データベース コントロール
メッセージの種類 参考文献 RF データベース 参考文献
メッセージの種類 責任を引き受ける 宛先 データベース コントロール
メッセージの種類 ビューの定義 VW データベース ビューの定義
オブジェクト 変える アル スキーマ 変える
オブジェクト コントロール CL(塩素) スキーマ コントロール
オブジェクト 削除 DL スキーマ 削除
オブジェクト 実行せよ スキーマ 実行せよ
オブジェクト 挿入する スキーマ 挿入する
オブジェクト 受ける RC スキーマ コントロール
オブジェクト 参考文献 RF スキーマ 参考文献
オブジェクト 選択 SL スキーマ 選択
オブジェクト 責任を引き受ける 宛先 スキーマ コントロール
オブジェクト マスク解除します。 UMSK スキーマ マスク解除します。
オブジェクト 更新 スキーマ 更新
オブジェクト 変更の追跡を表示する VWCT スキーマ 変更の追跡を表示する
オブジェクト ビューの定義 VW スキーマ ビューの定義
リモート サービス バインド 変える アル データベース 任意のリモートサービスバインディングを変更する
リモート サービス バインド コントロール CL(塩素) データベース コントロール
リモート サービス バインド 責任を引き受ける 宛先 データベース コントロール
リモート サービス バインド ビューの定義 VW データベース ビューの定義
役割 変える アル データベース あらゆるロールを変更する
役割 コントロール CL(塩素) データベース コントロール
役割 責任を引き受ける 宛先 データベース コントロール
役割 ビューの定義 VW データベース ビューの定義
ルート 変える アル データベース 任意のルートを変更
ルート コントロール CL(塩素) データベース コントロール
ルート 責任を引き受ける 宛先 データベース コントロール
ルート ビューの定義 VW データベース ビューの定義
スキーマ 変える アル データベース 任意のスキーマを変更する
スキーマ コントロール CL(塩素) データベース コントロール
スキーマ シーケンスを作成する (CREATE SEQUENCE) CRSO データベース コントロール
スキーマ 削除 DL データベース 削除
スキーマ 実行せよ データベース 実行せよ
スキーマ 挿入する データベース 挿入する
スキーマ 参考文献 RF データベース 参考文献
スキーマ 選択 SL データベース 選択
スキーマ 責任を引き受ける 宛先 データベース コントロール
スキーマ マスク解除します。 UMSK データベース マスク解除します。
スキーマ 更新 データベース 更新
スキーマ 変更の追跡を表示する VWCT データベース 変更の追跡を表示する
スキーマ ビューの定義 VW データベース ビューの定義
物件リストを検索 変える アル サーバー 任意のフルテキストカタログを変更
物件リストを検索 コントロール CL(塩素) サーバー コントロール
物件リストを検索 参考文献 RF サーバー 参考文献
物件リストを検索 責任を引き受ける 宛先 サーバー コントロール
物件リストを検索 ビューの定義 VW サーバー ビューの定義
サーバー 一括操作の管理 ADBO 適用なし 適用なし
サーバー すべての可用性グループを変更 ALAG 適用なし 適用なし
サーバー 任意の接続を変更する ALCO 適用なし 適用なし
サーバー 任意の資格情報を変更する ALCD 適用なし 適用なし
サーバー 任意のデータベースを変更する ALDB 適用なし 適用なし
サーバー 任意のエンドポイントを変更する ALHE 適用なし 適用なし
サーバー ALTER ANY EVENT NOTIFICATION エール 適用なし 適用なし
サーバー 任意のイベントセッションを変更する AAES 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION ADD EVENT LSAE 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION ADD TARGET LSAT 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION DISABLE データ暗号化標準 (DES) 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION DROP EVENT LSDE 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION DROP TARGET LSDT 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION ENABLE EES 適用なし 適用なし
サーバー ALTER ANY EVENT SESSION OPTION LESO 適用なし 適用なし
サーバー 任意のリンク サーバーを変更する オールズ 適用なし 適用なし
サーバー 任意のログインを変更する ALLG 適用なし 適用なし
サーバー サーバー監査の変更許可 ALAA 適用なし 適用なし
サーバー 任意のサーバー ロールを変更する ALSR 適用なし 適用なし
サーバー リソースを変更する ALRS 適用なし 適用なし
サーバー サーバーの状態を変更 ALSS 適用なし 適用なし
サーバー 設定を変更する ALST 適用なし 適用なし
サーバー ALTER TRACE ALTR 適用なし 適用なし
サーバー サーバーの認証 認証 適用なし 適用なし
サーバー 任意のデータベースを接続する CADB 適用なし 適用なし
サーバー CONNECT SQL COSQ 適用なし 適用なし
サーバー CONTROL SERVER CL(塩素) 適用なし 適用なし
サーバー 任意のデータベースを作成する CRDB 適用なし 適用なし
サーバー 可用性グループの作成 CRAC 適用なし 適用なし
サーバー CREATE DDL イベント通知 CRDE 適用なし 適用なし
サーバー エンドポイントを作成 CRHE 適用なし 適用なし
サーバー CREATE SERVER ROLE(サーバーロールを作成) CRSR 適用なし 適用なし
サーバー トレース イベント通知の作成 CRTE 適用なし 適用なし
サーバー 外部アクセスアセンブリ XA 適用なし 適用なし
サーバー 任意のログインを偽装する IAL 適用なし 適用なし
サーバー すべてのユーザー セキュリティ保護可能なリソースを選択する SUS 適用なし 適用なし
サーバー シャットダウン SHDN 適用なし 適用なし
サーバー 危険な組み立て 適用なし 適用なし
サーバー 任意のデータベースを表示 VWDB 適用なし 適用なし
サーバー 任意の定義を表示 VWAD 適用なし 適用なし
サーバー サーバー状態を表示 VWSS 適用なし 適用なし
サーバーロール 変える アル サーバー 任意のサーバー ロールを変更する
サーバーロール コントロール CL(塩素) サーバー CONTROL SERVER
サーバーロール 責任を引き受ける 宛先 サーバー CONTROL SERVER
サーバーロール ビューの定義 VW サーバー 任意の定義を表示
サービス 変える アル データベース 任意のサービスを変更する
サービス コントロール CL(塩素) データベース コントロール
サービス 送信 SN データベース コントロール
サービス 責任を引き受ける 宛先 データベース コントロール
サービス ビューの定義 VW データベース ビューの定義
対称キー 変える アル データベース 対称鍵の変更可能
対称キー コントロール CL(塩素) データベース コントロール
対称キー 参考文献 RF データベース 参考文献
対称キー 責任を引き受ける 宛先 データベース コントロール
対称キー ビューの定義 VW データベース ビューの定義
タイプ コントロール CL(塩素) スキーマ コントロール
タイプ 実行せよ スキーマ 実行せよ
タイプ 参考文献 RF スキーマ 参考文献
タイプ 責任を引き受ける 宛先 スキーマ コントロール
タイプ ビューの定義 VW スキーマ ビューの定義
User 変える アル データベース 任意のユーザーを変更する
User コントロール CL(塩素) データベース コントロール
User 偽装 IM データベース コントロール
User ビューの定義 VW データベース ビューの定義
XML スキーマ コレクション 変える アル スキーマ 変える
XML スキーマ コレクション コントロール CL(塩素) スキーマ コントロール
XML スキーマ コレクション 実行せよ スキーマ 実行せよ
XML スキーマ コレクション 参考文献 RF スキーマ 参考文献
XML スキーマ コレクション 責任を引き受ける 宛先 スキーマ コントロール
XML スキーマ コレクション ビューの定義 VW スキーマ ビューの定義

SQL Server 2022 に追加された新しい詳細なアクセス許可

SQL Server 2022 には、次のアクセス許可が追加されます。

  • システム メタデータへのアクセスを許可する 10 個の新しいアクセス許可が追加されました。

  • 拡張イベントに対して 18 個の新しいアクセス許可が追加されました。

  • セキュリティ関連のオブジェクトに関して、9 つの新しいアクセス許可が追加されました。

  • レジャーに対して 4 つのアクセス許可が追加されました。

  • 3 つの追加データベース権限。

詳細については、「PoLP 準拠を向上させるための SQL Server 2022 と Azure SQL の新しい詳細アクセス許可」を参照してください。

システム メタデータのアクセス許可へのアクセス

サーバー レベル:

  • セキュリティ定義を表示する
  • パフォーマンス定義を表示する
  • サーバーのセキュリティ状態の表示
  • サーバーのパフォーマンス状態の表示
  • 暗号化で保護された定義を表示する

データベース レベル:

  • データベースのセキュリティ状態の表示
  • データベースのパフォーマンス状態の表示
  • セキュリティ定義の表示
  • パフォーマンス定義の表示
  • 暗号化されたセキュリティで保護された定義を表示する

拡張イベント のアクセス許可

サーバー レベル:

  • 任意のイベント セッションを作成する
  • 任意のイベント セッションを削除する
  • ALTER ANY EVENT SESSION OPTION
  • 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 DROP TARGET

これらのアクセス許可はすべて、同じ親アクセス許可 ALTER ANY EVENT SESSION の下に存在します。

データベース レベル:

  • 任意のデータベース イベント セッションを作成する
  • データベース イベント セッションを削除する
  • ALTER ANY DATABASE EVENT SESSION OPTION
  • ALTER ANY DATABASE EVENT SESSION ADD EVENT
  • ALTER ANY DATABASE EVENT SESSION DROP EVENT
  • ALTER ANY DATABASE EVENT SESSION ENABLE
  • ALTER ANY DATABASE EVENT SESSION DISABLE
  • ALTER ANY DATABASE EVENT SESSION ADD TARGET
  • ALTER ANY DATABASE EVENT SESSION DROP TARGET

これらすべてのアクセス許可は、同じ親アクセス許可 ALTER ANY DATABASE EVENT SESSION の下に存在します。

  • CONTROL (CREDENTIAL)
  • ログインの作成
  • ユーザーを作成する
  • REFERENCES (CREDENTIAL)
  • UNMASK (OBJECT)
  • UNMASK (SCHEMA)
  • エラー ログを表示する
  • サーバー セキュリティ監査の表示
  • データベース セキュリティ監査の表示

台帳のアクセス許可

  • ALTER LEDGER
  • ALTER LEDGER の構成
  • 台帳を有効にする
  • 台帳のコンテンツを表示する

他のデータベース ユーザー権限

  • ALTER ANY EXTERNAL JOB
  • ALTER ANY EXTERNAL STREAM
  • 外部エンドポイントを実行する

権限チェック アルゴリズムの概要

権限のチェックは複雑な場合があります。 権限チェック アルゴリズムには、グループ メンバーシップの重複、所有権の継承、明示的および暗黙的な権限が含まれます。また、セキュリティ保護可能なエンティティを含むセキュリティ保護可能なクラスに対する権限の影響を受けることもあります。 アルゴリズムの一般的な手順では、関連する権限がすべて収集されます。 ブロックする DENY が見つからない場合、十分なアクセス権を付与する GRANT が検索されます。 アルゴリズムには、不可欠な要素が 3 つあります。 セキュリティ コンテキスト権限領域、および 必要な権限です。

sa、dbo、エンティティ所有者、information_schema、sys、または自分自身に対する権限を許可、拒否、または取り消すことはできません。

  • セキュリティ コンテキスト

    これは、アクセス チェックに対して権限を与えるプリンシパルのグループです。 EXECUTE AS ステートメントを使用してセキュリティ コンテキストが別のログインまたはユーザーに変更されていない限り、現在のログインまたはユーザーに関連した権限です。 セキュリティ コンテキストには次のプリンシパルが含まれます。

    • ログイン

    • ユーザー

    • ロールのメンバーシップ

    • Windows グループのメンバーシップ

    • モジュール署名が使用されている場合、ユーザーが現在実行しているモジュールの署名に使用された証明書のログインまたはユーザー アカウント、およびそのプリンシパルに関連付けられたロールのメンバーシップ

  • 権限領域

    これは、セキュリティ保護可能なエンティティと、それを含むすべてのセキュリティ保護可能なクラスです。 たとえば、あるテーブル (セキュリティ保護可能なエンティティ) が、セキュリティ保護可能なクラスであるスキーマとデータベースに含まれているとします。 この場合のアクセスは、テーブル、スキーマ、データベース、サーバーの各レベルの権限による影響を受けます。 詳細については、「権限の階層 (データベース エンジン)」を参照してください。

  • 必要な権限

    必要とされる権限の種類です。 INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL などがあります。

    次の例のように、アクセスに複数の権限が必要な場合もあります。

    • ストアド プロシージャでは、ストアド プロシージャ自体に対する EXECUTE 権限に加えて、ストアド プロシージャによって参照されている複数のテーブルに対する INSERT 権限が必要な場合があります。

    • 動的管理ビューでは、ビューに対する VIEW SERVER STATE 権限と SELECT 権限の両方が必要な場合があります。

アルゴリズムの一般的な手順

セキュリティ保護可能なリソースに対するアクセスを許可するかどうかを判断するためにアルゴリズムが実際に使用する手順は、関連するプリンシパルとセキュリティ保護可能なリソースによって異なる場合があります。 ただし、アルゴリズムは一般に次の手順を実行します。

  1. ログインが sysadmin 固定サーバー ロールのメンバーであるか、ユーザーが現在のデータベースの dbo ユーザーである場合は、権限チェックを行いません。

  2. 所有権の継承が適用され、その継承内でオブジェクトに対するアクセス チェックが以前にセキュリティ チェックに合格している場合は、アクセスを許可します。

  3. 呼び出し元に関連付けられたサーバーレベル、データベースレベル、署名付きモジュールの各 ID を集計して、 セキュリティ コンテキストを作成します。

  4. その セキュリティ コンテキスト用に、 権限領域に対して許可または拒否された権限をすべて収集します。 権限は、GRANT、GRANT WITH GRANT、または DENY として明示的に指定される場合と、暗黙権限または包含権限の GRANT または DENY である場合があります。 たとえば、スキーマに対する CONTROL 権限を使用した場合、テーブルに対する CONTROL 権限も暗黙的に適用されます。 また、テーブルに対して CONTROL 権限を使用した場合、SELECT 権限も暗黙的に適用されます。 したがって、スキーマに対する CONTROL 権限が許可された場合、テーブルに対する SELECT 権限も許可されます。 テーブルに対する CONTROL 権限が拒否された場合、テーブルに対する SELECT 権限も拒否されます。

    列レベルの権限の GRANT により、オブジェクト レベルの DENY がオーバーライドされます。 詳細については、「 DENY オブジェクトのアクセス許可」を参照してください。

  5. 必要な権限を識別します。

  6. 権限領域 内のオブジェクトについて、 必要な権限 が、 セキュリティ コンテキストの任意の ID に対し直接または暗黙的に拒否されている場合は、権限チェックが不合格となります。

  7. 権限スペース内のすべてのオブジェクトについて、必要な権限が、セキュリティ コンテキストのいずれの 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 関数によって、すべてのデータベース エンジンの権限が返されます。 詳細については、「sys.fn_builtin_permissions (Transact-SQL)」を参照してください。

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 (Transact-SQL)」を参照してください。

SELECT * FROM fn_my_permissions('Orders55', 'object');
GO

D. 指定したオブジェクトに適用できる権限を返す

次の例は、 Yttriumと呼ばれるオブジェクトに適用できる権限を返します。 組み込み関数 OBJECT_ID を使用して、オブジェクト Yttrium の ID を取得します。

SELECT * FROM sys.database_permissions
    WHERE major_id = OBJECT_ID('Yttrium');
GO