アクセス許可 (データベース エンジン)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

SQL Server のすべてのセキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 データベース エンジン のアクセス許可は、ログインおよびサーバー ロールに割り当てられたサーバー レベル、およびデータベース ユーザーおよびデータベース ロールに割り当てられたデータベース レベルで管理されます。 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 データベースでは、データベース レベルのユーザーとロールのみがサポートされます。 サーバー レベルのログイン、ロール、 sa アカウントは使用できません。 Microsoft Fabric の SQL データベースでは、データベース ユーザーの Microsoft Entra ID のみがサポートされている認証方法です。 詳細については、Microsoft Fabric の SQL Database における認可に関する記事を参照してください。

必要なアクセス許可を理解したら、 GRANTREVOKE、および DENY ステートメントを使用して、ログインまたはサーバー ロールにサーバー レベルのアクセス許可を適用し、ユーザーまたはデータベース ロールにデータベース レベルのアクセス許可を適用できます。 例えば次が挙げられます。

GRANT SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
REVOKE SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;

アクセス許可システムの計画に関するヒントについては、「 データベース エンジンのアクセス許可の概要」を参照してください。

アクセス許可の名前付け規則

ここでは、アクセス許可に名前を付ける際に従う一般的な規則について説明します。

  • CONTROL

    権限を与えられたユーザーに所有権のような権限を与えます。 アクセス許可を与えられたユーザーは、事実上、セキュリティ保護可能なリソースに対する定義済みのすべてのアクセス許可を持っています。 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 の権限を借用できるようにします。

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

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

  • CREATE <Server Securable>

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

  • CREATE <Database Securable>

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

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

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

  • VIEW 定義

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

  • REFERENCES

    テーブルを参照する FOREIGN KEY 制約を作成するには、そのテーブルに対する REFERENCES アクセス許可が必要です。

    オブジェクトを参照するFUNCTION句を使用してVIEWまたはWITH SCHEMABINDINGを作成するには、オブジェクトに対する REFERENCES 権限が必要です。

SQL Server アクセス許可の一覧表

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

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

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

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

Permission 対象
ALTER TYPEを除くオブジェクトのすべてのクラス。
CONTROL オブジェクトのすべてのクラス:

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 SCHEMA COLLECTION
DELETE DATABASE SCOPED CONFIGURATION、SERVER、TYPEを除くすべてのオブジェクト クラス。
EXECUTE CLR 型、外部スクリプト、ストアド プロシージャ (Transact-SQL および CLR)、スカラー関数および集約関数 (Transact-SQL および CLR)、シノニム
IMPERSONATE ログインとユーザー
INSERT シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。
RECEIVE Service Broker キュー
REFERENCES 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 オブジェクト
SYMMETRIC KEY,
TABLE,
TYPE,
VIEW と
XML SCHEMA COLLECTION
SELECT シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。
当事者意識を持つ DATABASE SCOPED CONFIGURATION、LOGIN、SERVER、USERを除くすべてのオブジェクト クラス。
UPDATE シノニム、テーブルと列、ビューと列。 データベース、スキーマ、またはオブジェクト レベルでアクセス許可を付与できます。
VIEW 変更の追跡 スキーマとテーブル
VIEW 定義 DATABASE SCOPED CONFIGURATIONおよび SERVER を除くオブジェクトのすべてのクラス。

Caution

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

SQL Server アクセス許可

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

セキュリティが確保可能なもの セキュリティ保護可能な基本リソースに対する粒度の細かいアクセス許可 アクセス許可の種類のコード 基本リソースを含んでいる別のセキュリティ保護可能なリソース セキュリティ保護可能なコンテナーに対するアクセス許可 (基本リソースに対する粒度の細かいアクセス許可を暗示)
APPLICATION ROLE ALTER AL DATABASE "任意の APPLICATION ROLE を変更"
APPLICATION ROLE CONTROL CL DATABASE CONTROL
APPLICATION ROLE VIEW 定義 VW DATABASE VIEW 定義
ASSEMBLY ALTER AL DATABASE "任意の ASSEMBLY を変更"
ASSEMBLY CONTROL CL DATABASE CONTROL
ASSEMBLY REFERENCES RF DATABASE REFERENCES
ASSEMBLY 当事者意識を持つ TO DATABASE CONTROL
ASSEMBLY VIEW 定義 VW DATABASE VIEW 定義
ASYMMETRIC KEY ALTER AL DATABASE "任意の ASYMMETRIC KEY を変更"
ASYMMETRIC KEY CONTROL CL DATABASE CONTROL
ASYMMETRIC KEY REFERENCES RF DATABASE REFERENCES
ASYMMETRIC KEY 当事者意識を持つ TO DATABASE CONTROL
ASYMMETRIC KEY VIEW 定義 VW DATABASE VIEW 定義
AVAILABILITY GROUP ALTER AL SERVER "任意の AVAILABILITY GROUP を変更"
AVAILABILITY GROUP CONTROL CL SERVER 制御サーバー
AVAILABILITY GROUP 当事者意識を持つ TO SERVER 制御サーバー
AVAILABILITY GROUP VIEW 定義 VW SERVER VIEW 任意の定義
CERTIFICATE ALTER AL DATABASE "任意の CERTIFICATE を変更"
CERTIFICATE CONTROL CL DATABASE CONTROL
CERTIFICATE REFERENCES RF DATABASE REFERENCES
CERTIFICATE 当事者意識を持つ TO DATABASE CONTROL
CERTIFICATE VIEW 定義 VW DATABASE VIEW 定義
CONTRACT ALTER AL DATABASE "任意の CONTRACT を変更"
CONTRACT CONTROL CL DATABASE CONTROL
CONTRACT REFERENCES RF DATABASE REFERENCES
CONTRACT 当事者意識を持つ TO DATABASE CONTROL
CONTRACT VIEW 定義 VW DATABASE VIEW 定義
CREDENTIAL CONTROL CL SERVER 制御サーバー
CREDENTIAL REFERENCES RF SERVER "任意の CREDENTIAL を変更"
DATABASE DATABASE 一括操作の管理 DABO SERVER 制御サーバー
DATABASE ALTER AL SERVER "任意の DATABASE を変更"
DATABASE "任意の APPLICATION ROLE を変更" ALAR SERVER 制御サーバー
DATABASE "任意の ASSEMBLY を変更" ALAS SERVER 制御サーバー
DATABASE "任意の ASYMMETRIC KEY を変更" ALAK SERVER 制御サーバー
DATABASE "任意の CERTIFICATE を変更" ALCF SERVER 制御サーバー
DATABASE "任意の COLUMN ENCRYPTION KEY を変更" ALCK

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE "任意の COLUMN MASTER KEY を変更" ALCM

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE "任意の CONTRACT を変更" ALSC SERVER 制御サーバー
DATABASE 任意の DATABASE 監査を変更 ALDA SERVER "任意の SERVER AUDIT を変更"
DATABASE ALTER ANY DATABASE DDL TRIGGER ALTG SERVER 制御サーバー
DATABASE あらゆる変更 DATABASEEVENT NOTIFICATION ALED SERVER "任意の EVENT NOTIFICATION を変更"
DATABASE 任意の変更 DATABASEEVENT SESSION AADS SERVER "任意の EVENT SESSION を変更"
DATABASE ALTER ANY DATABASEEVENT SESSION ADD イベント LDAE SERVER ALTER ANY EVENT SESSION ADD イベント
DATABASE ALTER ANY DATABASEEVENT SESSION ターゲットの追加 LDAT SERVER 任意の EVENT SESSION ターゲットを追加
DATABASE 任意の DATABASEEVENT SESSION を無効にする DDES SERVER 任意の EVENT SESSION の無効化を変更
DATABASE ALTER ANY DATABASEEVENT SESSION DROP イベント LDDE SERVER ALTER ANY EVENT SESSION DROP イベント
DATABASE 任意の DATABASEEVENT SESSION DROP TARGET を変更 LDDT SERVER ALTER ANY EVENT SESSION DROP TARGET
DATABASE 任意のDATABASEEVENT SESSIONの有効化の変更 EDES SERVER 任意の EVENT SESSION の ALTER を有効化
DATABASE 任意のDATABASEEVENT SESSIONオプションを変更 LDSO SERVER 任意の EVENT SESSION オプションを変更
DATABASE "任意の DATABASE SCOPED CONFIGURATION を変更" ALDC

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE 任意のデータスペースを変更する ALDS SERVER 制御サーバー
DATABASE "任意の EXTERNAL DATA SOURCE を変更" AEDS SERVER 制御サーバー
DATABASE "任意の EXTERNAL FILE FORMAT を変更" AEFF SERVER 制御サーバー
DATABASE ALTER ANY EXTERNAL JOB(任意の外部ジョブを変更) AESJ SERVER 制御サーバー
DATABASE "任意の EXTERNAL LANGUAGE を変更" ALLA SERVER 制御サーバー
DATABASE "任意の EXTERNAL LIBRARY を変更" ALEL SERVER 制御サーバー
DATABASE 任意の外部ストリームを変更する AEST SERVER 制御サーバー
DATABASE "任意の FULLTEXT CATALOG を変更" ALFT SERVER 制御サーバー
DATABASE 任意のマスクを変更します。 AAMK

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE "任意の MESSAGE TYPE を変更" ALMT SERVER 制御サーバー
DATABASE "任意の REMOTE SERVICE BINDING を変更" ALSB SERVER 制御サーバー
DATABASE "任意の ROLE を変更" ALRL SERVER 制御サーバー
DATABASE "任意の ROUTE を変更" ALRT SERVER 制御サーバー
DATABASE "任意の SCHEMA を変更" ALSM SERVER 制御サーバー
DATABASE "任意の SECURITY POLICY を変更" ALSP

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE "任意の SENSITIVITY CLASSIFICATION を変更" AASC
SQL Server (SQL Server 2019 (15.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE "任意の SERVICE を変更" ALSV SERVER 制御サーバー
DATABASE "任意の SYMMETRIC KEY を変更" ALSK SERVER 制御サーバー
DATABASE "任意の USER を変更" ALUS SERVER 制御サーバー
DATABASE LEDGER を変更 ALR SERVER CONTROL
DATABASE ALTER LEDGER の構成 ALC SERVER 制御サーバー
DATABASE AUTHENTICATE AUTH SERVER サーバーの認証
DATABASE BACKUP DATABASE BADB SERVER 制御サーバー
DATABASE BACKUP ログ BALO SERVER 制御サーバー
DATABASE CHECKPOINT CP SERVER 制御サーバー
DATABASE CONNECT CO SERVER 制御サーバー
DATABASE コネクト・レプリケーション CORP SERVER 制御サーバー
DATABASE CONTROL CL SERVER 制御サーバー
DATABASE CREATE AGGREGATE CRAG SERVER 制御サーバー
DATABASE あらゆるものを作成 DATABASEEVENT SESSION CRDS SERVER 何でも作成 EVENT SESSION
DATABASE CREATE ASSEMBLY CRAS SERVER 制御サーバー
DATABASE CREATE ASYMMETRIC KEY CRAK SERVER 制御サーバー
DATABASE CREATE CERTIFICATE CRCF SERVER 制御サーバー
DATABASE CREATE CONTRACT CRSC SERVER 制御サーバー
DATABASE CREATE DATABASE CRDB SERVER 何でも作成 DATABASE
DATABASE CREATE DATABASE DDL EVENT NOTIFICATION CRED SERVER DDL を作成 EVENT NOTIFICATION
DATABASE CREATE DEFAULT CRDF SERVER 制御サーバー
DATABASE CREATE EXTERNAL LANGUAGE CRLA SERVER 制御サーバー
DATABASE CREATE EXTERNAL LIBRARY CREL SERVER 制御サーバー
DATABASE CREATE FULLTEXT CATALOG CRFT SERVER 制御サーバー
DATABASE CREATE FUNCTION CRFN SERVER 制御サーバー
DATABASE CREATE MESSAGE TYPE CRMT SERVER 制御サーバー
DATABASE CREATE PROCEDURE CRPR SERVER 制御サーバー
DATABASE CREATE QUEUE CRQU SERVER 制御サーバー
DATABASE CREATE REMOTE SERVICE BINDING CRSB SERVER 制御サーバー
DATABASE CREATE ROLE CRRL SERVER 制御サーバー
DATABASE CREATE ROUTE CRRT SERVER 制御サーバー
DATABASE CREATE RULE CRRU SERVER 制御サーバー
DATABASE CREATE SCHEMA CRSM SERVER 制御サーバー
DATABASE CREATE SERVICE CRSV SERVER 制御サーバー
DATABASE CREATE SYMMETRIC KEY CRSK SERVER 制御サーバー
DATABASE CREATE SYNONYM CRSN SERVER 制御サーバー
DATABASE CREATE TABLE CRTB SERVER 制御サーバー
DATABASE CREATE TYPE CRTY SERVER 制御サーバー
DATABASE CREATE USER CUSR SERVER 制御サーバー
DATABASE CREATE VIEW CRVW SERVER 制御サーバー
DATABASE CREATE XML SCHEMA COLLECTION CRXS SERVER 制御サーバー
DATABASE DELETE DL SERVER 制御サーバー
DATABASE 任意のDATABASEEVENT SESSIONをドロップ DRDS SERVER いずれかをドロップ EVENT SESSION
DATABASE Ledger を有効にする EL SERVER CONTROL
DATABASE EXECUTE EX SERVER 制御サーバー
DATABASE 任意の外部コマンドを実行する ENDPOINT EAEE SERVER 制御サーバー
DATABASE 外部スクリプトを実行する EAES

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで) に適用されます。
SERVER 制御サーバー
DATABASE INSERT IN SERVER 制御サーバー
DATABASE 接続をDATABASE切断 KIDC

Azure SQL Database にのみ適用されます。 SQL Server では ALTER ANY CONNECTION を使用します。
SERVER 任意の接続を変更する
DATABASE REFERENCES RF SERVER 制御サーバー
DATABASE SELECT SL SERVER 制御サーバー
DATABASE SHOWPLAN SPLN SERVER ALTER TRACE(トレースの変更権限)
DATABASE クエリ通知をサブスクライブする SUQN SERVER 制御サーバー
DATABASE 当事者意識を持つ TO SERVER 制御サーバー
DATABASE UNMASK UMSK

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER 制御サーバー
DATABASE UPDATE UP SERVER 制御サーバー
DATABASE VIEW 任意の COLUMN ENCRYPTION KEY 定義 VWCK

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER VIEW サーバーの状態
DATABASE VIEW 任意の COLUMN MASTER KEY 定義 VWCM

SQL Server (SQL Server 2016 (13.x) から現在のバージョンまで)、Azure SQL Database に適用されます。
SERVER VIEW サーバーの状態
DATABASE VIEW 任意 SENSITIVITY CLASSIFICATION VASC SERVER 制御サーバー
DATABASE VIEW 暗号化によってセキュリティで保護された定義 VCD SERVER VIEW あらゆる暗号技術で保護された定義
DATABASE VIEW DATABASE パフォーマンスの状態 VDP SERVER VIEW サーバーのパフォーマンスの状態
DATABASE VIEW DATABASE セキュリティ監査 VDSA SERVER 制御サーバー
DATABASE VIEW DATABASE セキュリティの状態 VDS SERVER VIEW サーバー セキュリティの状態
DATABASE VIEW DATABASE STATE VWDS SERVER VIEW サーバーの状態
DATABASE VIEW 定義 VW SERVER VIEW 任意の定義
DATABASE VIEW 台帳の内容 VLC SERVER CONTROL
DATABASE VIEW セキュリティ定義 VWS SERVER VIEW 任意のセキュリティ定義
DATABASE VIEW パフォーマンスの定義 VWP SERVER VIEW 任意のパフォーマンス定義
DATABASE SCOPED CREDENTIAL ALTER AL DATABASE CONTROL
DATABASE SCOPED CREDENTIAL CONTROL CL DATABASE CONTROL
DATABASE SCOPED CREDENTIAL REFERENCES RF DATABASE REFERENCES
DATABASE SCOPED CREDENTIAL 当事者意識を持つ TO DATABASE CONTROL
DATABASE SCOPED CREDENTIAL VIEW 定義 VW DATABASE VIEW 定義
ENDPOINT ALTER AL SERVER "任意の ENDPOINT を変更"
ENDPOINT CONNECT CO SERVER 制御サーバー
ENDPOINT CONTROL CL SERVER 制御サーバー
ENDPOINT 当事者意識を持つ TO SERVER 制御サーバー
ENDPOINT VIEW 定義 VW SERVER VIEW 任意の定義
FULLTEXT CATALOG ALTER AL DATABASE "任意の FULLTEXT CATALOG を変更"
FULLTEXT CATALOG CONTROL CL DATABASE CONTROL
FULLTEXT CATALOG REFERENCES RF DATABASE REFERENCES
FULLTEXT CATALOG 当事者意識を持つ TO DATABASE CONTROL
FULLTEXT CATALOG VIEW 定義 VW DATABASE VIEW 定義
FULLTEXT STOPLIST ALTER AL DATABASE "任意の FULLTEXT CATALOG を変更"
FULLTEXT STOPLIST CONTROL CL DATABASE CONTROL
FULLTEXT STOPLIST REFERENCES RF DATABASE REFERENCES
FULLTEXT STOPLIST 当事者意識を持つ TO DATABASE CONTROL
FULLTEXT STOPLIST VIEW 定義 VW DATABASE VIEW 定義
LOGIN ALTER AL SERVER "任意の LOGIN を変更"
LOGIN CONTROL CL SERVER 制御サーバー
LOGIN IMPERSONATE IM SERVER 制御サーバー
LOGIN VIEW 定義 VW SERVER VIEW 任意の定義
MESSAGE TYPE ALTER AL DATABASE "任意の MESSAGE TYPE を変更"
MESSAGE TYPE CONTROL CL DATABASE CONTROL
MESSAGE TYPE REFERENCES RF DATABASE REFERENCES
MESSAGE TYPE 当事者意識を持つ TO DATABASE CONTROL
MESSAGE TYPE VIEW 定義 VW DATABASE VIEW 定義
OBJECT ALTER AL SCHEMA ALTER
OBJECT CONTROL CL SCHEMA CONTROL
OBJECT DELETE DL SCHEMA DELETE
OBJECT EXECUTE EX SCHEMA EXECUTE
OBJECT INSERT IN SCHEMA INSERT
OBJECT RECEIVE RC SCHEMA CONTROL
OBJECT REFERENCES RF SCHEMA REFERENCES
OBJECT SELECT SL SCHEMA SELECT
OBJECT 当事者意識を持つ TO SCHEMA CONTROL
OBJECT UNMASK UMSK SCHEMA UNMASK
OBJECT UPDATE UP SCHEMA UPDATE
OBJECT VIEW 変更の追跡 VWCT SCHEMA VIEW 変更の追跡
OBJECT VIEW 定義 VW SCHEMA VIEW 定義
REMOTE SERVICE BINDING ALTER AL DATABASE "任意の REMOTE SERVICE BINDING を変更"
REMOTE SERVICE BINDING CONTROL CL DATABASE CONTROL
REMOTE SERVICE BINDING 当事者意識を持つ TO DATABASE CONTROL
REMOTE SERVICE BINDING VIEW 定義 VW DATABASE VIEW 定義
ROLE ALTER AL DATABASE "任意の ROLE を変更"
ROLE CONTROL CL DATABASE CONTROL
ROLE 当事者意識を持つ TO DATABASE CONTROL
ROLE VIEW 定義 VW DATABASE VIEW 定義
ROUTE ALTER AL DATABASE "任意の ROUTE を変更"
ROUTE CONTROL CL DATABASE CONTROL
ROUTE 当事者意識を持つ TO DATABASE CONTROL
ROUTE VIEW 定義 VW DATABASE VIEW 定義
SCHEMA ALTER AL DATABASE "任意の SCHEMA を変更"
SCHEMA CONTROL CL DATABASE CONTROL
SCHEMA CREATE SEQUENCE CRSO DATABASE CONTROL
SCHEMA DELETE DL DATABASE DELETE
SCHEMA EXECUTE EX DATABASE EXECUTE
SCHEMA INSERT IN DATABASE INSERT
SCHEMA REFERENCES RF DATABASE REFERENCES
SCHEMA SELECT SL DATABASE SELECT
SCHEMA 当事者意識を持つ TO DATABASE CONTROL
SCHEMA UNMASK UMSK DATABASE UNMASK
SCHEMA UPDATE UP DATABASE UPDATE
SCHEMA VIEW 変更の追跡 VWCT DATABASE VIEW 変更の追跡
SCHEMA VIEW 定義 VW DATABASE VIEW 定義
SEARCH PROPERTY LIST ALTER AL SERVER "任意の FULLTEXT CATALOG を変更"
SEARCH PROPERTY LIST CONTROL CL SERVER CONTROL
SEARCH PROPERTY LIST REFERENCES RF SERVER REFERENCES
SEARCH PROPERTY LIST 当事者意識を持つ TO SERVER CONTROL
SEARCH PROPERTY LIST VIEW 定義 VW SERVER VIEW 定義
SERVER 一括操作の管理 ADBO 適用なし 適用なし
SERVER "任意の AVAILABILITY GROUP を変更" ALAG 適用なし 適用なし
SERVER 任意の接続を変更する ALCO 適用なし 適用なし
SERVER "任意の CREDENTIAL を変更" ALCD 適用なし 適用なし
SERVER "任意の DATABASE を変更" ALDB 適用なし 適用なし
SERVER "任意の ENDPOINT を変更" ALHE 適用なし 適用なし
SERVER "任意の EVENT NOTIFICATION を変更" ALES 適用なし 適用なし
SERVER "任意の EVENT SESSION を変更" AAES 適用なし 適用なし
SERVER ALTER ANY EVENT SESSION ADD イベント LSAE 適用なし 適用なし
SERVER 任意の EVENT SESSION ターゲットを追加 LSAT 適用なし 適用なし
SERVER 任意の EVENT SESSION の無効化を変更 DES 適用なし 適用なし
SERVER ALTER ANY EVENT SESSION DROP イベント LSDE 適用なし 適用なし
SERVER ALTER ANY EVENT SESSION DROP TARGET LSDT 適用なし 適用なし
SERVER 任意の EVENT SESSION の ALTER を有効化 EES 適用なし 適用なし
SERVER 任意の EVENT SESSION オプションを変更 LESO 適用なし 適用なし
SERVER 任意のリンク サーバーを変更する ALLS 適用なし 適用なし
SERVER "任意の LOGIN を変更" ALLG 適用なし 適用なし
SERVER "任意の SERVER AUDIT を変更" ALAA 適用なし 適用なし
SERVER "任意の SERVER ROLE を変更" ALSR 適用なし 適用なし
SERVER リソースの変更 ALRS 適用なし 適用なし
SERVER サーバーの状態を変更 ALSS 適用なし 適用なし
SERVER 設定を変更 ALST 適用なし 適用なし
SERVER ALTER TRACE(トレースの変更権限) ALTR 適用なし 適用なし
SERVER サーバーの認証 AUTH 適用なし 適用なし
SERVER あらゆるものを接続 DATABASE CADB 適用なし 適用なし
SERVER SQLに接続 COSQ 適用なし 適用なし
SERVER 制御サーバー CL 適用なし 適用なし
SERVER 何でも作成 DATABASE CRDB 適用なし 適用なし
SERVER CREATE AVAILABILITY GROUP CRAC 適用なし 適用なし
SERVER DDL を作成 EVENT NOTIFICATION CRDE 適用なし 適用なし
SERVER CREATE ENDPOINT CRHE 適用なし 適用なし
SERVER CREATE SERVER ROLE CRSR 適用なし 適用なし
SERVER トレースを作成 EVENT NOTIFICATION CRTE 適用なし 適用なし
SERVER 外部アクセス ASSEMBLY XA 適用なし 適用なし
SERVER 任意のLOGINになりすます IAL 適用なし 適用なし
SERVER USER すべての保護可能なオブジェクトを選択 SUS 適用なし 適用なし
SERVER SHUTDOWN SHDN 適用なし 適用なし
SERVER 安全ではありません ASSEMBLY XU 適用なし 適用なし
SERVER VIEW 任意 DATABASE VWDB 適用なし 適用なし
SERVER VIEW 任意の定義 VWAD 適用なし 適用なし
SERVER VIEW サーバーの状態 VWSS 適用なし 適用なし
SERVER ROLE ALTER AL SERVER "任意の SERVER ROLE を変更"
SERVER ROLE CONTROL CL SERVER 制御サーバー
SERVER ROLE 当事者意識を持つ TO SERVER 制御サーバー
SERVER ROLE VIEW 定義 VW SERVER VIEW 任意の定義
SERVICE ALTER AL DATABASE "任意の SERVICE を変更"
SERVICE CONTROL CL DATABASE CONTROL
SERVICE SEND SN DATABASE CONTROL
SERVICE オーナーシップを持つ TO DATABASE CONTROL
SERVICE VIEW 定義 VW DATABASE VIEW 定義
SYMMETRIC KEY ALTER AL DATABASE "任意の SYMMETRIC KEY を変更"
SYMMETRIC KEY CONTROL CL DATABASE CONTROL
SYMMETRIC KEY REFERENCES RF DATABASE REFERENCES
SYMMETRIC KEY 当事者意識を持つ TO DATABASE CONTROL
SYMMETRIC KEY VIEW 定義 VW DATABASE VIEW 定義
TYPE CONTROL CL SCHEMA CONTROL
TYPE EXECUTE EX SCHEMA EXECUTE
TYPE REFERENCES RF SCHEMA REFERENCES
TYPE オーナーシップを持つ TO SCHEMA CONTROL
TYPE VIEW 定義 VW SCHEMA VIEW 定義
USER ALTER AL DATABASE "任意の USER を変更"
USER CONTROL CL DATABASE CONTROL
USER IMPERSONATE IM DATABASE CONTROL
USER VIEW 定義 VW DATABASE VIEW 定義
XML SCHEMA COLLECTION ALTER AL SCHEMA ALTER
XML SCHEMA COLLECTION CONTROL CL SCHEMA CONTROL
XML SCHEMA COLLECTION EXECUTE EX SCHEMA EXECUTE
XML SCHEMA COLLECTION REFERENCES RF SCHEMA REFERENCES
XML SCHEMA COLLECTION 当事者意識を持つ TO SCHEMA CONTROL
XML SCHEMA COLLECTION VIEW 定義 VW SCHEMA VIEW 定義

SQL Server 2022 で追加・細分化された新しいアクセス許可

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

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

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

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

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

  • その他、3 件のデータベース レベルのアクセス許可が追加されました。

詳細については、PoLP 準拠を強化するために SQL Server 2022 および Azure SQL で追加・細分化された新しいアクセス許可に関する記事を参照してください。

システム メタデータに対するアクセス許可

サーバー レベル:

  • VIEW 任意のセキュリティ定義
  • VIEW 任意のパフォーマンス定義
  • VIEW サーバー セキュリティの状態
  • VIEW サーバーのパフォーマンスの状態
  • VIEW あらゆる暗号技術で保護された定義

データベース レベル:

  • VIEW DATABASE セキュリティの状態
  • VIEW DATABASE パフォーマンスの状態
  • VIEW セキュリティ定義
  • VIEW パフォーマンスの定義
  • VIEW 暗号化によってセキュリティで保護された定義

拡張イベントに対するアクセス許可

サーバー レベル:

  • 何でも作成 EVENT SESSION
  • いずれかをドロップ EVENT SESSION
  • 任意の EVENT SESSION オプションを変更
  • ALTER ANY EVENT SESSION ADD イベント
  • ALTER ANY EVENT SESSION DROP イベント
  • 任意の EVENT SESSION の ALTER を有効化
  • 任意の EVENT SESSION の無効化を変更
  • 任意の EVENT SESSION ターゲットを追加
  • ALTER ANY EVENT SESSION DROP TARGET

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

データベース レベル:

  • あらゆるものを作成 DATABASEEVENT SESSION
  • 任意のDATABASEEVENT SESSIONをドロップ
  • 任意のDATABASEEVENT SESSIONオプションを変更
  • ALTER ANY DATABASEEVENT SESSION ADD イベント
  • ALTER ANY DATABASEEVENT SESSION DROP イベント
  • 任意のDATABASEEVENT SESSIONの有効化の変更
  • 任意の DATABASEEVENT SESSION を無効にする
  • ALTER ANY DATABASEEVENT SESSION ターゲットの追加
  • 任意の DATABASEEVENT SESSION DROP TARGET を変更

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

  • 制御 (CREDENTIAL)
  • CREATE LOGIN
  • CREATE USER
  • 参考資料 (CREDENTIAL)
  • UNMASK (オブジェクト)
  • マスク解除 (SCHEMA)
  • VIEW 任意のエラー ログ
  • VIEW サーバー セキュリティ監査
  • VIEW DATABASE セキュリティ監査

台帳のアクセス許可

  • LEDGER を変更
  • ALTER LEDGER の構成
  • Ledger を有効にする
  • VIEW 台帳の内容

その他のデータベース レベルのアクセス許可

  • ALTER ANY EXTERNAL JOB(任意の外部ジョブを変更)
  • 任意の外部ストリームを変更する
  • 任意の外部コマンドを実行する ENDPOINT

アクセス許可チェック アルゴリズムの概要

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

Note

sadbo、エンティティ所有者、information_schemasys、または自分自身に対するアクセス許可を付与、拒否、または取り消すことはできません。

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

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

    • ログイン

    • ユーザー

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

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

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

  • アクセス許可領域

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

  • 必要なアクセス許可

    必要とされるアクセス許可の種類です。 たとえば、 INSERT、 UPDATE、 DELETE、SELECT、EXECUTE、ALTER、CONTROL などです。

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

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

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

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

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

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

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

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

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

    Note

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

  5. 必要なアクセス許可を識別します。

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

  7. 必要なアクセス許可が拒否されておらず、かつ 必要なアクセス許可に GRANT または WITH GRANT アクセス許可付きの GRANT が含まれており、それが アクセス許可空間内の任意のオブジェクトについて セキュリティ コンテキスト内のいずれかの ID に対して直接または暗黙的に許可されている場合は、アクセス許可チェックは成功とします。

列レベルのアクセス許可に関する特別な考慮事項

列レベルのアクセス許可は構文 <table_name>(<column _name>) を使用して付与されます。 例えば次が挙げられます。

GRANT SELECT ON OBJECT::Customer(CustomerName) TO UserJoe;

テーブルの DENY は、列の GRANT によってオーバーライドされます。 ただし、テーブルの後続の DENY では、列 GRANTが削除されます。

Examples

このセクションでは、アクセス許可に関する情報を取得する例を示します。

A. 付与できるアクセス許可の完全な一覧を返す

次のステートメントは、fn_builtin_permissions 関数を使用してすべての データベース エンジン のアクセス許可を返します。 詳細については、「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