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

すべての SQL Server セキュリティ保護可能なリソースには、プリンシパルに付与できるアクセス許可が関連付けられています。 このトピックでは、次の情報を提供します。

権限の命名規則

次に、アクセス許可の名前付けに従う一般的な慣例について説明します。

  • コントロール

    権限付与対象ユーザーに所有権に似た機能を付与します。 権限付与対象ユーザーは、セキュリティ保護可能なリソースに対して定義されているすべてのアクセス許可を実質的に持ちます。 CONTROL が付与されている主体は、セキュリティオブジェクトへのアクセス許可を付与することもできます。 SQL Server セキュリティ モデルは階層構造であるため、特定のスコープの CONTROL には、そのスコープ内のすべてのセキュリティ保護可能なリソースに対する CONTROL が暗黙的に含まれます。 たとえば、データベースに対する CONTROL は、データベースに対するすべての権限、データベース内のすべてのアセンブリに対するすべての権限、データベース内のすべてのスキーマに対するすべての権限、およびデータベース内のすべてのスキーマ内のオブジェクトに対するすべての権限を意味します。

  • 変更する

    特定のセキュリティ保護対象の所有権を除くプロパティを変更する機能を付与します。 スコープに対して付与されると、ALTER は、そのスコープ内に含まれるセキュリティ保護可能なリソースを変更、作成、または削除する機能も付与します。 たとえば、スキーマに対する ALTER 権限には、スキーマからオブジェクトを作成、変更、および削除する機能が含まれます。

  • ALTER ANY <Server Securable>、Server Securable は任意のサーバーで利用可能なセキュリティ保護対象です。

    サーバー セキュリティ保護可能なサーバーの個々のインスタンスを作成、変更、または削除する機能を付与します。 たとえば、ALTER ANY LOGIN は、インスタンス内のログインを作成、変更、または削除する機能を付与します。

  • ALTER ANY <データベース内の保護可能なオブジェクト>。データベース内の保護可能なオブジェクトは、データベースレベルで任意の保護対象となり得ます。

    データベース保護対象リソースの個々のインスタンスを作成、変更、または削除することを可能にします。 たとえば、ALTER ANY SCHEMA は、データベース内のスキーマを作成、変更、または削除する機能を提供します。

  • 責任を引き受ける

    権限付与対象ユーザーが、付与されているセキュリティ保護可能なリソースの所有権を取得できるようにします。

  • IMPERSONATE <ログイン>

    権限付与対象ユーザーがログインを偽装できるようにします。

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

    権限付与することで対象ユーザーが他のユーザーになりすますことが可能になります。

  • CREATE <Server Securable>

    権限付与対象ユーザーに 、サーバー セキュリティ保護可能なリソースを作成する権限を付与します。

  • CREATE <Database Securable>

    権限付与対象ユーザーにデータベース保護可能項目を作成する権限を付与します。

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

    スキーマに含まれるセキュリティ対象のリソースを作成する機能を付与します。 ただし、特定のスキーマ内でセキュラブルを作成するには、スキーマに対する ALTER 権限が必要です。

  • VIEW 定義

    権限付与対象ユーザーがメタデータにアクセスできるようにします。

  • 参考文献

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

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

SQL Server のアクセス許可のグラフ

pdf 形式のすべてのデータベース エンジンのアクセス許可のポスター サイズのグラフについては、 https://github.com/microsoft/sql-server-samples/blob/master/samples/features/security/permissions-posters/Microsoft_SQL_Server_2017_and_Azure_SQL_Database_permissions_infographic.pdfを参照してください。

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

次の表に、アクセス許可の主要なクラスと、それらが適用されるセキュリティ保護可能なリソースの種類を示します。

権限 対象
SELECT シノニム

テーブルと列

テーブル値関数、Transact-SQL および共通言語ランタイム (CLR)、および列

ビューと列
VIEW 変更の追跡

スキーマ
UPDATE シノニム

テーブルと列

ビューと列

シーケンス オブジェクト
参考文献 スカラー関数と集計関数 (Transact-SQL および CLR)

サービス ブローカー キュー

テーブルと列

テーブル値関数 (Transact-SQL と CLR)、および列

種類

ビューと列

シーケンス オブジェクト
INSERT シノニム

テーブルと列

ビューと列
DELETE シノニム

テーブルと列

ビューと列
実行する プロシージャ (Transact-SQL と CLR)

スカラー関数と集計関数 (Transact-SQL および CLR)

シノニム

CLR 型
RECEIVE サービス ブローカー キュー
VIEW 定義 可用性グループ

プロシージャ (Transact-SQL と CLR)

サービス ブローカー キュー

スカラー関数と集計関数 (Transact-SQL および CLR)

ログイン、ユーザー、ロール

シノニム



テーブル値関数 (Transact-SQL および CLR)

見解

シーケンス オブジェクト
変更する 可用性グループ

プロシージャ (Transact-SQL と CLR)

スカラー関数と集計関数 (Transact-SQL および CLR)

シーケンス オブジェクト

ログイン、ユーザー、ロール

サービス ブローカー キュー



テーブル値関数 (Transact-SQL および CLR)

見解
責任を引き受ける 可用性グループ

役割

プロシージャ (Transact-SQL と CLR)

スカラー関数と集計関数 (Transact-SQL および CLR)

サーバーの役割

シノニム



テーブル値関数 (Transact-SQL および CLR)

見解

シーケンス オブジェクト
コントロール 可用性グループ

プロシージャ (Transact-SQL と CLR)

スカラー関数と集計関数 (Transact-SQL および CLR)

ログイン、ユーザー、ロール

サービス ブローカー キュー

シノニム



テーブル値関数 (Transact-SQL および CLR)

見解

シーケンス オブジェクト
偽装 ログインとユーザー

注意事項

セットアップ時にシステム オブジェクトに付与される既定のアクセス許可は、考えられる脅威に対して慎重に評価されるため、SQL Server インストールの強化の一環として変更する必要はありません。 システム オブジェクトに対するアクセス許可を変更すると、機能が制限または中断され、SQL Server のインストールがサポートされていない状態になる可能性があります。

SQL Server と SQL Database のアクセス許可

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

基本セキュリティ保護可能なリソース セキュリティ保護可能な基本リソースに対する詳細なアクセス許可 アクセス許可の種類コード ベースセキュリティを含むセキュリティ保護が可能なリソース ベースのセキュリティ保護対象に対する詳細なアクセス許可を意味する、コンテナーのセキュリティ保護対象に対するアクセス許可
APPLICATION ROLE 変更する アル DATABASE "任意の APPLICATION ROLE を変更"
APPLICATION ROLE コントロール CL DATABASE コントロール
APPLICATION ROLE VIEW 定義 VW DATABASE VIEW 定義
ASSEMBLY 変更する アル DATABASE "任意の ASSEMBLY を変更"
ASSEMBLY コントロール CL DATABASE コントロール
ASSEMBLY 参考文献 RF DATABASE 参考文献
ASSEMBLY 責任を引き受ける 宛先 DATABASE コントロール
ASSEMBLY VIEW 定義 VW DATABASE VIEW 定義
ASYMMETRIC KEY 変更する アル DATABASE "任意の ASYMMETRIC KEY を変更"
ASYMMETRIC KEY コントロール CL DATABASE コントロール
ASYMMETRIC KEY 参考文献 RF DATABASE 参考文献
ASYMMETRIC KEY 責任を引き受ける 宛先 DATABASE コントロール
ASYMMETRIC KEY VIEW 定義 VW DATABASE VIEW 定義
AVAILABILITY GROUP 変更する アル サーバー "任意の AVAILABILITY GROUP を変更"
AVAILABILITY GROUP コントロール CL サーバー 制御サーバー
AVAILABILITY GROUP 責任を引き受ける 宛先 サーバー 制御サーバー
AVAILABILITY GROUP VIEW 定義 VW サーバー VIEW 任意の定義
CERTIFICATE 変更する アル DATABASE "任意の CERTIFICATE を変更"
CERTIFICATE コントロール CL DATABASE コントロール
CERTIFICATE 参考文献 RF DATABASE 参考文献
CERTIFICATE 責任を引き受ける 宛先 DATABASE コントロール
CERTIFICATE VIEW 定義 VW DATABASE VIEW 定義
CONTRACT 変更する アル DATABASE "任意の CONTRACT を変更"
CONTRACT コントロール CL DATABASE コントロール
CONTRACT 参考文献 RF DATABASE 参考文献
CONTRACT 責任を引き受ける 宛先 DATABASE コントロール
CONTRACT VIEW 定義 VW DATABASE VIEW 定義
DATABASE 変更する アル サーバー "任意の DATABASE を変更"
DATABASE "任意の APPLICATION ROLE を変更" 鼻翼 サーバー 制御サーバー
DATABASE "任意の ASSEMBLY を変更" 残念ながら サーバー 制御サーバー
DATABASE "任意の ASYMMETRIC KEY を変更" アラク サーバー 制御サーバー
DATABASE "任意の CERTIFICATE を変更" ALCF サーバー 制御サーバー
DATABASE "任意の CONTRACT を変更" ALSC サーバー 制御サーバー
DATABASE 任意の DATABASE 監査を変更 アルダ サーバー "任意の SERVER AUDIT を変更"
DATABASE ALTER ANY DATABASE DDL TRIGGER AltG サーバー 制御サーバー
DATABASE あらゆる変更 DATABASEEVENT NOTIFICATION ALED サーバー "任意の EVENT NOTIFICATION を変更"
DATABASE あらゆる変更 DATABASEEVENT SESSION AADS

注: SQL Database にのみ適用されます。
サーバー "任意の EVENT SESSION を変更"
DATABASE 任意のデータスペースを変更する ALDS サーバー 制御サーバー
DATABASE "任意の FULLTEXT CATALOG を変更" ALFT サーバー 制御サーバー
DATABASE "任意の MESSAGE TYPE を変更" ALMT サーバー 制御サーバー
DATABASE "任意の REMOTE SERVICE BINDING を変更" ALSB サーバー 制御サーバー
DATABASE "任意の ROLE を変更" ALRL サーバー 制御サーバー
DATABASE "任意の ROUTE を変更" ALRT サーバー 制御サーバー
DATABASE "任意の SCHEMA を変更" ALSM サーバー 制御サーバー
DATABASE "任意の SECURITY POLICY を変更" ALSP

注: SQL Database にのみ適用されます。
サーバー 制御サーバー
DATABASE "任意の SERVICE を変更" ALSV サーバー 制御サーバー
DATABASE "任意の SYMMETRIC KEY を変更" ALSK サーバー 制御サーバー
DATABASE "任意の USER を変更" ALUS サーバー 制御サーバー
DATABASE 認証 認証 サーバー サーバーの認証
DATABASE BACKUP DATABASE BADB サーバー 制御サーバー
DATABASE BACKUP ログ BALO サーバー 制御サーバー
DATABASE チェックポイント CP サーバー 制御サーバー
DATABASE 繋ぐ 一酸化炭素 サーバー 制御サーバー
DATABASE 接続レプリケーション 株式会社 サーバー 制御サーバー
DATABASE コントロール CL サーバー 制御サーバー
DATABASE CREATE AGGREGATE 巨岩 サーバー 制御サーバー
DATABASE CREATE ASSEMBLY CRAS サーバー 制御サーバー
DATABASE CREATE ASYMMETRIC KEY CRAK サーバー 制御サーバー
DATABASE CREATE CERTIFICATE CRCF サーバー 制御サーバー
DATABASE CREATE CONTRACT CRSC サーバー 制御サーバー
DATABASE CREATE DATABASE CRDB サーバー 何でも作成 DATABASE
DATABASE CREATE DATABASE Ddl EVENT NOTIFICATION CRED サーバー DDL を作成 EVENT NOTIFICATION
DATABASE CREATE DEFAULT CRDF サーバー 制御サーバー
DATABASE CREATE FULLTEXT CATALOG CRFT サーバー 制御サーバー
DATABASE CREATE FUNCTION CRFN サーバー 制御サーバー
DATABASE CREATE MESSAGE TYPE CRMT サーバー 制御サーバー
DATABASE CREATE PROCEDURE CRPR サーバー 制御サーバー
DATABASE CREATE QUEUE CRQU サーバー 制御サーバー
DATABASE CREATE REMOTE SERVICE BINDING CRSB サーバー 制御サーバー
DATABASE CREATE ROLE CRRL サーバー 制御サーバー
DATABASE CREATE ROUTE 持続的腎代替療法 (CRRT) サーバー 制御サーバー
DATABASE CREATE RULE CRRU サーバー 制御サーバー
DATABASE CREATE SCHEMA CRSM サーバー 制御サーバー
DATABASE CREATE SERVICE CRSV サーバー 制御サーバー
DATABASE CREATE SYMMETRIC KEY CRSK サーバー 制御サーバー
DATABASE CREATE SYNONYM CRSN サーバー 制御サーバー
DATABASE CREATE TABLE CRTB サーバー 制御サーバー
DATABASE CREATE TYPE CRTY サーバー 制御サーバー
DATABASE CREATE VIEW CRVW サーバー 制御サーバー
DATABASE CREATE XML SCHEMA COLLECTION CRXS サーバー 制御サーバー
DATABASE DELETE DL サーバー 制御サーバー
DATABASE 実行する サーバー 制御サーバー
DATABASE INSERT サーバー 制御サーバー
DATABASE 接続をDATABASE切断 KIDC

注: SQL Database にのみ適用されます。 SQL Server で ALTER ANY CONNECTION を使用します。
サーバー 任意の接続を変更する
DATABASE 参考文献 RF サーバー 制御サーバー
DATABASE SELECT SL サーバー 制御サーバー
DATABASE ショープラン SPLN サーバー ALTER TRACE(トレースの変更権限)
DATABASE クエリ通知をサブスクライブする SUQN サーバー 制御サーバー
DATABASE 責任を引き受ける 宛先 サーバー 制御サーバー
DATABASE UPDATE サーバー 制御サーバー
DATABASE VIEW DATABASE 状態 VWDS サーバー VIEW サーバーの状態
DATABASE VIEW 定義 VW サーバー VIEW 任意の定義
ENDPOINT 変更する アル サーバー "任意の ENDPOINT を変更"
ENDPOINT 繋ぐ 一酸化炭素 サーバー 制御サーバー
ENDPOINT コントロール CL サーバー 制御サーバー
ENDPOINT 責任を引き受ける 宛先 サーバー 制御サーバー
ENDPOINT VIEW 定義 VW サーバー VIEW 任意の定義
FULLTEXT CATALOG 変更する アル DATABASE "任意の FULLTEXT CATALOG を変更"
FULLTEXT CATALOG コントロール CL DATABASE コントロール
FULLTEXT CATALOG 参考文献 RF DATABASE 参考文献
FULLTEXT CATALOG 責任を引き受ける 宛先 DATABASE コントロール
FULLTEXT CATALOG VIEW 定義 VW DATABASE VIEW 定義
FULLTEXT STOPLIST 変更する アル DATABASE "任意の FULLTEXT CATALOG を変更"
FULLTEXT STOPLIST コントロール CL DATABASE コントロール
FULLTEXT STOPLIST 参考文献 RF DATABASE 参考文献
FULLTEXT STOPLIST 責任を引き受ける 宛先 DATABASE コントロール
FULLTEXT STOPLIST VIEW 定義 VW DATABASE VIEW 定義
LOGIN 変更する アル サーバー "任意の LOGIN を変更"
LOGIN コントロール CL サーバー 制御サーバー
LOGIN 偽装 IM サーバー 制御サーバー
LOGIN VIEW 定義 VW サーバー VIEW 任意の定義
MESSAGE TYPE 変更する アル DATABASE "任意の MESSAGE TYPE を変更"
MESSAGE TYPE コントロール CL DATABASE コントロール
MESSAGE TYPE 参考文献 RF DATABASE 参考文献
MESSAGE TYPE 責任を引き受ける 宛先 DATABASE コントロール
MESSAGE TYPE VIEW 定義 VW DATABASE VIEW 定義
オブジェクト 変更する アル SCHEMA 変更する
オブジェクト コントロール CL SCHEMA コントロール
オブジェクト DELETE DL SCHEMA DELETE
オブジェクト 実行する SCHEMA 実行する
オブジェクト INSERT SCHEMA INSERT
オブジェクト RECEIVE RC SCHEMA コントロール
オブジェクト 参考文献 RF SCHEMA 参考文献
オブジェクト SELECT SL SCHEMA SELECT
オブジェクト 責任を引き受ける 宛先 SCHEMA コントロール
オブジェクト UPDATE SCHEMA UPDATE
オブジェクト VIEW 変更の追跡 VWCT SCHEMA VIEW 変更の追跡
オブジェクト VIEW 定義 VW SCHEMA VIEW 定義
REMOTE SERVICE BINDING 変更する アル DATABASE "任意の REMOTE SERVICE BINDING を変更"
REMOTE SERVICE BINDING コントロール CL DATABASE コントロール
REMOTE SERVICE BINDING 責任を引き受ける 宛先 DATABASE コントロール
REMOTE SERVICE BINDING VIEW 定義 VW DATABASE VIEW 定義
ROLE 変更する アル DATABASE "任意の ROLE を変更"
ROLE コントロール CL DATABASE コントロール
ROLE 責任を引き受ける 宛先 DATABASE コントロール
ROLE VIEW 定義 VW DATABASE VIEW 定義
ROUTE 変更する アル DATABASE "任意の ROUTE を変更"
ROUTE コントロール CL DATABASE コントロール
ROUTE 責任を引き受ける 宛先 DATABASE コントロール
ROUTE VIEW 定義 VW DATABASE VIEW 定義
SEARCH PROPERTY LIST 変更する アル サーバー "任意の FULLTEXT CATALOG を変更"
SEARCH PROPERTY LIST コントロール CL サーバー コントロール
SEARCH PROPERTY LIST 参考文献 RF サーバー 参考文献
SEARCH PROPERTY LIST 責任を引き受ける 宛先 サーバー コントロール
SEARCH PROPERTY LIST VIEW 定義 VW サーバー VIEW 定義
SCHEMA 変更する アル DATABASE "任意の SCHEMA を変更"
SCHEMA コントロール CL DATABASE コントロール
SCHEMA CREATE SEQUENCE CRSO DATABASE コントロール
SCHEMA DELETE DL DATABASE DELETE
SCHEMA 実行する DATABASE 実行する
SCHEMA INSERT DATABASE INSERT
SCHEMA 参考文献 RF DATABASE 参考文献
SCHEMA SELECT SL DATABASE SELECT
SCHEMA 責任を引き受ける 宛先 DATABASE コントロール
SCHEMA UPDATE DATABASE UPDATE
SCHEMA VIEW 変更の追跡 VWCT DATABASE VIEW 変更の追跡
SCHEMA VIEW 定義 VW DATABASE VIEW 定義
サーバー 一括操作の管理 ADBO 適用なし 適用なし
サーバー 任意の接続を変更する ALCO 適用なし 適用なし
サーバー "任意の CREDENTIAL を変更" ALCD 適用なし 適用なし
サーバー "任意の DATABASE を変更" ALDB 適用なし 適用なし
サーバー "任意の ENDPOINT を変更" ALHE 適用なし 適用なし
サーバー "任意の EVENT NOTIFICATION を変更" エール 適用なし 適用なし
サーバー "任意の EVENT SESSION を変更" AAES 適用なし 適用なし
サーバー 任意のリンク サーバーを変更する オールズ 適用なし 適用なし
サーバー "任意の LOGIN を変更" ALLG 適用なし 適用なし
サーバー "任意の SERVER AUDIT を変更" ALAA 適用なし 適用なし
サーバー "任意の SERVER ROLE を変更" ALSR 適用なし 適用なし
サーバー ALTER AVAILABILITY GROUP ALAG 適用なし 適用なし
サーバー リソースを変更する ALRS 適用なし 適用なし
サーバー サーバーの状態を変更 ALSS 適用なし 適用なし
サーバー 設定を変更する ALST 適用なし 適用なし
サーバー ALTER TRACE(トレースの変更権限) ALTR 適用なし 適用なし
サーバー サーバーの認証 認証 適用なし 適用なし
サーバー あらゆるものを接続 DATABASE CADB 適用なし 適用なし
サーバー SQLに接続 COSQ 適用なし 適用なし
サーバー 制御サーバー CL 適用なし 適用なし
サーバー 何でも作成 DATABASE CRDB 適用なし 適用なし
サーバー 可用性グループの作成 CRAC 適用なし 適用なし
サーバー DDL を作成 EVENT NOTIFICATION CRDE 適用なし 適用なし
サーバー CREATE ENDPOINT CRHE 適用なし 適用なし
サーバー CREATE SERVER ROLE CRSR 適用なし 適用なし
サーバー トレースを作成 EVENT NOTIFICATION CRTE 適用なし 適用なし
サーバー 外部アクセス ASSEMBLY XA 適用なし 適用なし
サーバー 任意のLOGINになりすます IAL 適用なし 適用なし
サーバー USER すべての保護可能なオブジェクトを選択 SUS 適用なし 適用なし
サーバー シャットダウン SHDN 適用なし 適用なし
サーバー 安全ではありません ASSEMBLY 適用なし 適用なし
サーバー VIEW 任意 DATABASE VWDB 適用なし 適用なし
サーバー VIEW 任意の定義 VWAD 適用なし 適用なし
サーバー VIEW サーバーの状態 VWSS 適用なし 適用なし
SERVER ROLE 変更する アル サーバー "任意の SERVER ROLE を変更"
SERVER ROLE コントロール CL サーバー 制御サーバー
SERVER ROLE 責任を引き受ける 宛先 サーバー 制御サーバー
SERVER ROLE VIEW 定義 VW サーバー VIEW 任意の定義
SERVICE 変更する アル DATABASE "任意の SERVICE を変更"
SERVICE コントロール CL DATABASE コントロール
SERVICE SEND SN DATABASE コントロール
SERVICE 責任を引き受ける 宛先 DATABASE コントロール
SERVICE VIEW 定義 VW DATABASE VIEW 定義
SYMMETRIC KEY 変更する アル DATABASE "任意の SYMMETRIC KEY を変更"
SYMMETRIC KEY コントロール CL DATABASE コントロール
SYMMETRIC KEY 参考文献 RF DATABASE 参考文献
SYMMETRIC KEY 責任を引き受ける 宛先 DATABASE コントロール
SYMMETRIC KEY VIEW 定義 VW DATABASE VIEW 定義
TYPE コントロール CL SCHEMA コントロール
TYPE 実行する SCHEMA 実行する
TYPE 参考文献 RF SCHEMA 参考文献
TYPE 責任を引き受ける 宛先 SCHEMA コントロール
TYPE VIEW 定義 VW SCHEMA VIEW 定義
USER 変更する アル DATABASE "任意の USER を変更"
USER コントロール CL DATABASE コントロール
USER 偽装 IM DATABASE コントロール
USER VIEW 定義 VW DATABASE VIEW 定義
XML SCHEMA COLLECTION 変更する アル SCHEMA 変更する
XML SCHEMA COLLECTION コントロール CL SCHEMA コントロール
XML SCHEMA COLLECTION 実行する SCHEMA 実行する
XML SCHEMA COLLECTION 参考文献 RF SCHEMA 参考文献
XML SCHEMA COLLECTION 責任を引き受ける 宛先 SCHEMA コントロール
XML SCHEMA COLLECTION VIEW 定義 VW SCHEMA VIEW 定義

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

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

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

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

    これは、アクセスチェックにアクセス許可を提供するプリンシパルのグループです。 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 は拒否されます。

    列レベルのアクセス許可の GRANT は、オブジェクト レベルの DENY をオーバーライドします。

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

  6. 必要なアクセス許可が、アクセス許可空間内のオブジェクトのセキュリティ コンテキスト内のいずれかの ID に対して直接または暗黙的に拒否された場合は、アクセス許可チェックを失敗します。

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

例示

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

ある。 許可可能なアクセス許可の完全な一覧を返す

次のステートメントは、 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  

こちらもご覧ください

権限の階層 (データベース エンジン)
sys.database_permissions(Transact-SQL)