権限 (データベース エンジン)
SQL Server のセキュリティ保護可能なリソースにはすべて、プリンシパルに許可できる権限が関連付けられています。このトピックでは次の情報について説明します。
権限の名前付け規則
特定のセキュリティ保護可能リソースに関連する権限
SQL Server 権限
権限チェック アルゴリズム
使用例
権限の名前付け規則
ここでは、権限に名前を付ける際に従う一般的な規則について説明します。
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 の個々のインスタンスを作成、変更、または削除できるようにします。たとえば、ALTER ANY SCHEMA では、データベース内の任意のスキーマを作成、変更、または削除できます。
TAKE OWNERSHIP
権限を与えられたユーザーが、許可されたセキュリティ保護可能なリソースの所有権を使用できるようにします。
IMPERSONATE <Login>
権限を与えられたユーザーが、Login の権限を借用できるようにします。
IMPERSONATE <User>
権限を与えられたユーザーが、User の権限を借用できるようにします。
CREATE <Server Securable>
権限を与えられたユーザーが Server Securable を作成できるようにします。
CREATE <Database Securable>
権限を与えられたユーザーが Database Securable を作成できるようにします。
CREATE <Schema-contained Securable>
スキーマに含まれているセキュリティ保護可能なリソースを作成できるようにします。ただし、特定のスキーマ内でセキュリティ保護可能なリソースを作成するには、そのスキーマに対する ALTER 権限が必要です。
VIEW DEFINITION
権限を与えられたユーザーがメタデータにアクセスできるようにします。
REFERENCES
テーブルを参照する FOREIGN KEY 制約を作成するには、そのテーブルに対する REFERENCES 権限が必要です。
オブジェクトを参照する WITH SCHEMABINDING 句を含む関数またはビューを作成するには、そのオブジェクトに対する REFERENCES 権限が必要です。
SQL Server 権限の図
データベース エンジンのすべての権限に関するポスター サイズの図を pdf 形式で提供しています。詳細については、https://go.microsoft.com/fwlink/?LinkId=229142 を参照してください。
特定のセキュリティ保護可能なリソースに適用できる権限
次の表に、主な権限のクラスおよび各権限を適用できるセキュリティ保護可能なリソースの種類を示します。
権限 |
適用対象 |
---|---|
SELECT |
シノニム テーブル、列 テーブル値関数、Transact-SQL と共通言語ランタイム (CLR)、列 ビュー、列 |
VIEW CHANGE TRACKING |
テーブル スキーマ |
UPDATE |
シノニム テーブル、列 ビュー、列 |
REFERENCES |
スカラー関数、集計関数 (Transact-SQL と CLR) Service Broker キュー テーブル、列 テーブル値関数 (Transact-SQL と CLR)、列 型 ビュー、列 |
INSERT |
シノニム テーブル、列 ビュー、列 |
DELETE |
シノニム テーブル、列 ビュー、列 |
EXECUTE |
プロシージャ (Transact-SQL と CLR) スカラー関数、集計関数 (Transact-SQL と CLR) シノニム CLR 型 |
RECEIVE |
Service Broker キュー |
VIEW DEFINITION |
プロシージャ (Transact-SQL と CLR) Service Broker キュー スカラー関数、集計関数 (Transact-SQL と CLR) シノニム テーブル テーブル値関数 (Transact-SQL と CLR) ビュー |
ALTER |
プロシージャ (Transact-SQL と CLR) スカラー関数、集計関数 (Transact-SQL と CLR) Service Broker キュー テーブル テーブル値関数 (Transact-SQL と CLR) ビュー |
TAKE OWNERSHIP |
プロシージャ (Transact-SQL と CLR) スカラー関数、集計関数 (Transact-SQL と CLR) シノニム テーブル テーブル値関数 (Transact-SQL と CLR) ビュー |
CONTROL |
プロシージャ (Transact-SQL と CLR) スカラー関数、集計関数 (Transact-SQL と CLR) Service Broker キュー シノニム テーブル テーブル値関数 (Transact-SQL と CLR) ビュー |
SQL Server 権限
次の表に、SQL Server のすべての権限の一覧を示します。
セキュリティ保護可能な基本リソース |
セキュリティ保護可能な基本リソースに対する粒度の細かい権限 |
権限の種類のコード |
基本リソースを含んでいる別のセキュリティ保護可能なリソース |
セキュリティ保護可能なコンテナーに対する権限 (基本リソースに対する粒度の細かい権限を暗示) |
---|---|---|---|---|
アプリケーション ロール |
ALTER |
AL |
データベース |
ALTER ANY APPLICATION ROLE |
アプリケーション ロール |
CONTROL |
CL |
データベース |
CONTROL |
アプリケーション ロール |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
アセンブリ |
ALTER |
AL |
データベース |
ALTER ANY ASSEMBLY |
アセンブリ |
CONTROL |
CL |
データベース |
CONTROL |
アセンブリ |
REFERENCES |
RF |
データベース |
REFERENCES |
アセンブリ |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
アセンブリ |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
非対称キー |
ALTER |
AL |
データベース |
ALTER ANY ASYMMETRIC KEY |
非対称キー |
CONTROL |
CL |
データベース |
CONTROL |
非対称キー |
REFERENCES |
RF |
データベース |
REFERENCES |
非対称キー |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
非対称キー |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
証明書 |
ALTER |
AL |
データベース |
ALTER ANY CERTIFICATE |
証明書 |
CONTROL |
CL |
データベース |
CONTROL |
証明書 |
REFERENCES |
RF |
データベース |
REFERENCES |
証明書 |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
証明書 |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
コントラクト |
ALTER |
AL |
データベース |
ALTER ANY CONTRACT |
コントラクト |
CONTROL |
CL |
データベース |
CONTROL |
コントラクト |
REFERENCES |
RF |
データベース |
REFERENCES |
コントラクト |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
コントラクト |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
データベース |
ALTER |
AL |
サーバー |
ALTER ANY DATABASE |
データベース |
ALTER ANY APPLICATION ROLE |
ALAR |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY ASSEMBLY |
ALAS |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY ASYMMETRIC KEY |
ALAK |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY CERTIFICATE |
ALCF |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY CONTRACT |
ALSC |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY DATABASE AUDIT |
ALDA |
サーバー |
ALTER ANY SERVER AUDIT |
データベース |
ALTER ANY DATABASE DDL TRIGGER |
ALTG |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY DATABASE EVENT NOTIFICATION |
ALED |
サーバー |
ALTER ANY EVENT NOTIFICATION |
データベース |
ALTER ANY DATASPACE |
ALDS |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY FULLTEXT CATALOG |
ALFT |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY MESSAGE TYPE |
ALMT |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY REMOTE SERVICE BINDING |
ALSB |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY ROLE |
ALRL |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY ROUTE |
ALRT |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY SCHEMA |
ALSM |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY SERVICE |
ALSV |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY SYMMETRIC KEY |
ALSK |
サーバー |
CONTROL SERVER |
データベース |
ALTER ANY USER |
ALUS |
サーバー |
CONTROL SERVER |
データベース |
AUTHENTICATE |
AUTH |
サーバー |
AUTHENTICATE SERVER |
データベース |
BACKUP DATABASE |
BADB |
サーバー |
CONTROL SERVER |
データベース |
BACKUP LOG |
BALO |
サーバー |
CONTROL SERVER |
データベース |
CHECKPOINT |
CP |
サーバー |
CONTROL SERVER |
データベース |
CONNECT |
CO |
サーバー |
CONTROL SERVER |
データベース |
CONNECT REPLICATION |
CORP |
サーバー |
CONTROL SERVER |
データベース |
CONTROL |
CL |
サーバー |
CONTROL SERVER |
データベース |
CREATE AGGREGATE |
CRAG |
サーバー |
CONTROL SERVER |
データベース |
CREATE ASSEMBLY |
CRAS |
サーバー |
CONTROL SERVER |
データベース |
CREATE ASYMMETRIC KEY |
CRAK |
サーバー |
CONTROL SERVER |
データベース |
CREATE CERTIFICATE |
CRCF |
サーバー |
CONTROL SERVER |
データベース |
CREATE CONTRACT |
CRSC |
サーバー |
CONTROL SERVER |
データベース |
CREATE DATABASE |
CRDB |
サーバー |
CREATE ANY DATABASE |
データベース |
CREATE DATABASE DDL EVENT NOTIFICATION |
CRED |
サーバー |
CREATE DDL EVENT NOTIFICATION |
データベース |
CREATE DEFAULT |
CRDF |
サーバー |
CONTROL SERVER |
データベース |
CREATE FULLTEXT CATALOG |
CRFT |
サーバー |
CONTROL SERVER |
データベース |
CREATE FUNCTION |
CRFN |
サーバー |
CONTROL SERVER |
データベース |
CREATE MESSAGE TYPE |
CRMT |
サーバー |
CONTROL SERVER |
データベース |
CREATE PROCEDURE |
CRPR |
サーバー |
CONTROL SERVER |
データベース |
CREATE QUEUE |
CRQU |
サーバー |
CONTROL SERVER |
データベース |
CREATE REMOTE SERVICE BINDING |
CRSB |
サーバー |
CONTROL SERVER |
データベース |
CREATE ROLE |
CRRL |
サーバー |
CONTROL SERVER |
データベース |
CREATE ROUTE |
CRRT |
サーバー |
CONTROL SERVER |
データベース |
CREATE RULE |
CRRU |
サーバー |
CONTROL SERVER |
データベース |
CREATE SCHEMA |
CRSM |
サーバー |
CONTROL SERVER |
データベース |
CREATE SERVICE |
CRSV |
サーバー |
CONTROL SERVER |
データベース |
CREATE SYMMETRIC KEY |
CRSK |
サーバー |
CONTROL SERVER |
データベース |
CREATE SYNONYM |
CRSN |
サーバー |
CONTROL SERVER |
データベース |
CREATE TABLE |
CRTB |
サーバー |
CONTROL SERVER |
データベース |
CREATE TYPE |
CRTY |
サーバー |
CONTROL SERVER |
データベース |
CREATE VIEW |
CRVW |
サーバー |
CONTROL SERVER |
データベース |
CREATE XML SCHEMA COLLECTION |
CRXS |
サーバー |
CONTROL SERVER |
データベース |
DELETE |
DL |
サーバー |
CONTROL SERVER |
データベース |
EXECUTE |
EX |
サーバー |
CONTROL SERVER |
データベース |
INSERT |
IN |
サーバー |
CONTROL SERVER |
データベース |
REFERENCES |
RF |
サーバー |
CONTROL SERVER |
データベース |
SELECT |
SL |
サーバー |
CONTROL SERVER |
データベース |
SHOWPLAN |
SPLN |
サーバー |
ALTER TRACE |
データベース |
SUBSCRIBE QUERY NOTIFICATIONS |
SUQN |
サーバー |
CONTROL SERVER |
データベース |
TAKE OWNERSHIP |
TO |
サーバー |
CONTROL SERVER |
データベース |
UPDATE |
UP |
サーバー |
CONTROL SERVER |
データベース |
VIEW DATABASE STATE |
VWDS |
サーバー |
VIEW SERVER STATE |
データベース |
VIEW DEFINITION |
VW |
サーバー |
VIEW ANY DEFINITION |
エンドポイント |
ALTER |
AL |
サーバー |
ALTER ANY ENDPOINT |
エンドポイント |
CONNECT |
CO |
サーバー |
CONTROL SERVER |
エンドポイント |
CONTROL |
CL |
サーバー |
CONTROL SERVER |
エンドポイント |
TAKE OWNERSHIP |
TO |
サーバー |
CONTROL SERVER |
エンドポイント |
VIEW DEFINITION |
VW |
サーバー |
VIEW ANY DEFINITION |
フルテキスト カタログ |
ALTER |
AL |
データベース |
ALTER ANY FULLTEXT CATALOG |
フルテキスト カタログ |
CONTROL |
CL |
データベース |
CONTROL |
フルテキスト カタログ |
REFERENCES |
RF |
データベース |
REFERENCES |
フルテキスト カタログ |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
フルテキスト カタログ |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
フルテキスト ストップ リスト |
ALTER |
AL |
データベース |
ALTER ANY FULLTEXT CATALOG |
フルテキスト ストップ リスト |
CONTROL |
CL |
データベース |
CONTROL |
フルテキスト ストップ リスト |
REFERENCES |
RF |
データベース |
REFERENCES |
フルテキスト ストップ リスト |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
フルテキスト ストップ リスト |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
ログイン |
ALTER |
AL |
サーバー |
ALTER ANY LOGIN |
ログイン |
CONTROL |
CL |
サーバー |
CONTROL SERVER |
ログイン |
IMPERSONATE |
IM |
サーバー |
CONTROL SERVER |
ログイン |
VIEW DEFINITION |
VW |
サーバー |
VIEW ANY DEFINITION |
メッセージ型 |
ALTER |
AL |
データベース |
ALTER ANY MESSAGE TYPE |
メッセージ型 |
CONTROL |
CL |
データベース |
CONTROL |
メッセージ型 |
REFERENCES |
RF |
データベース |
REFERENCES |
メッセージ型 |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
メッセージ型 |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
オブジェクト |
ALTER |
AL |
スキーマ |
ALTER |
オブジェクト |
CONTROL |
CL |
スキーマ |
CONTROL |
オブジェクト |
DELETE |
DL |
スキーマ |
DELETE |
オブジェクト |
EXECUTE |
EX |
スキーマ |
EXECUTE |
オブジェクト |
INSERT |
IN |
スキーマ |
INSERT |
オブジェクト |
RECEIVE |
RC |
スキーマ |
CONTROL |
オブジェクト |
REFERENCES |
RF |
スキーマ |
REFERENCES |
オブジェクト |
SELECT |
SL |
スキーマ |
SELECT |
オブジェクト |
TAKE OWNERSHIP |
TO |
スキーマ |
CONTROL |
オブジェクト |
UPDATE |
UP |
スキーマ |
UPDATE |
オブジェクト |
VIEW CHANGE TRACKING |
VWCT |
スキーマ |
VIEW CHANGE TRACKING |
オブジェクト |
VIEW DEFINITION |
VW |
スキーマ |
VIEW DEFINITION |
リモート サービス バインド |
ALTER |
AL |
データベース |
ALTER ANY REMOTE SERVICE BINDING |
リモート サービス バインド |
CONTROL |
CL |
データベース |
CONTROL |
リモート サービス バインド |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
リモート サービス バインド |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
ロール |
ALTER |
AL |
データベース |
ALTER ANY ROLE |
ロール |
CONTROL |
CL |
データベース |
CONTROL |
ロール |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
ロール |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
ルート |
ALTER |
AL |
データベース |
ALTER ANY ROUTE |
ルート |
CONTROL |
CL |
データベース |
CONTROL |
ルート |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
ルート |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
スキーマ |
ALTER |
AL |
データベース |
ALTER ANY SCHEMA |
スキーマ |
CONTROL |
CL |
データベース |
CONTROL |
スキーマ |
DELETE |
DL |
データベース |
DELETE |
スキーマ |
EXECUTE |
EX |
データベース |
EXECUTE |
スキーマ |
INSERT |
IN |
データベース |
INSERT |
スキーマ |
REFERENCES |
RF |
データベース |
REFERENCES |
スキーマ |
SELECT |
SL |
データベース |
SELECT |
スキーマ |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
スキーマ |
UPDATE |
UP |
データベース |
UPDATE |
スキーマ |
VIEW CHANGE TRACKING |
VWCT |
データベース |
VIEW CHANGE TRACKING |
スキーマ |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
サーバー |
ADMINISTER BULK OPERATIONS |
ADBO |
適用なし |
適用なし |
サーバー |
ALTER ANY CONNECTION |
ALCO |
適用なし |
適用なし |
サーバー |
ALTER ANY CREDENTIAL |
ALCD |
適用なし |
適用なし |
サーバー |
ALTER ANY DATABASE |
ALDB |
適用なし |
適用なし |
サーバー |
ALTER ANY ENDPOINT |
ALHE |
適用なし |
適用なし |
サーバー |
ALTER ANY EVENT NOTIFICATION |
ALES |
適用なし |
適用なし |
サーバー |
ALTER ANY LINKED SERVER |
ALLS |
適用なし |
適用なし |
サーバー |
ALTER ANY LOGIN |
ALLG |
適用なし |
適用なし |
サーバー |
ALTER ANY SERVER AUDIT |
ALAA |
適用なし |
適用なし |
サーバー |
ALTER RESOURCES |
ALRS |
適用なし |
適用なし |
サーバー |
ALTER SERVER STATE |
ALSS |
適用なし |
適用なし |
サーバー |
ALTER SETTINGS |
ALST |
適用なし |
適用なし |
サーバー |
ALTER TRACE |
ALTR |
適用なし |
適用なし |
サーバー |
AUTHENTICATE SERVER |
AUTH |
適用なし |
適用なし |
サーバー |
CONNECT SQL |
COSQ |
適用なし |
適用なし |
サーバー |
CONTROL SERVER |
CL |
適用なし |
適用なし |
サーバー |
CREATE ANY DATABASE |
CRDB |
適用なし |
適用なし |
サーバー |
CREATE DDL EVENT NOTIFICATION |
CRDE |
適用なし |
適用なし |
サーバー |
CREATE ENDPOINT |
CRHE |
適用なし |
適用なし |
サーバー |
CREATE TRACE EVENT NOTIFICATION |
CRTE |
適用なし |
適用なし |
サーバー |
EXTERNAL ACCESS ASSEMBLY |
XA |
適用なし |
適用なし |
サーバー |
SHUTDOWN |
SHDN |
適用なし |
適用なし |
サーバー |
UNSAFE ASSEMBLY |
XU |
適用なし |
適用なし |
サーバー |
VIEW ANY DATABASE |
VWDB |
適用なし |
適用なし |
サーバー |
VIEW ANY DEFINITION |
VWAD |
適用なし |
適用なし |
サーバー |
VIEW SERVER STATE |
VWSS |
適用なし |
適用なし |
サービス |
ALTER |
AL |
データベース |
ALTER ANY SERVICE |
サービス |
CONTROL |
CL |
データベース |
CONTROL |
サービス |
SEND |
SN |
データベース |
CONTROL |
サービス |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
サービス |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
対称キー |
ALTER |
AL |
データベース |
ALTER ANY SYMMETRIC KEY |
対称キー |
CONTROL |
CL |
データベース |
CONTROL |
対称キー |
REFERENCES |
RF |
データベース |
REFERENCES |
対称キー |
TAKE OWNERSHIP |
TO |
データベース |
CONTROL |
対称キー |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
型 |
CONTROL |
CL |
スキーマ |
CONTROL |
型 |
EXECUTE |
EX |
スキーマ |
EXECUTE |
型 |
REFERENCES |
RF |
スキーマ |
REFERENCES |
型 |
TAKE OWNERSHIP |
TO |
スキーマ |
CONTROL |
型 |
VIEW DEFINITION |
VW |
スキーマ |
VIEW DEFINITION |
ユーザー |
ALTER |
AL |
データベース |
ALTER ANY USER |
ユーザー |
CONTROL |
CL |
データベース |
CONTROL |
ユーザー |
IMPERSONATE |
IM |
データベース |
CONTROL |
ユーザー |
VIEW DEFINITION |
VW |
データベース |
VIEW DEFINITION |
XML スキーマ コレクション |
ALTER |
AL |
スキーマ |
ALTER |
XML スキーマ コレクション |
CONTROL |
CL |
スキーマ |
CONTROL |
XML スキーマ コレクション |
EXECUTE |
EX |
スキーマ |
EXECUTE |
XML スキーマ コレクション |
REFERENCES |
RF |
スキーマ |
REFERENCES |
XML スキーマ コレクション |
TAKE OWNERSHIP |
TO |
スキーマ |
CONTROL |
XML スキーマ コレクション |
VIEW DEFINITION |
VW |
スキーマ |
VIEW DEFINITION |
権限チェック アルゴリズムの概要
権限のチェックは複雑な場合があります。権限チェック アルゴリズムには、グループ メンバーシップの重複、所有権の継承、明示的および暗黙的な権限が含まれます。また、セキュリティ保護可能なエンティティを含むセキュリティ保護可能なクラスに対する権限の影響を受けることもあります。アルゴリズムの一般的な手順では、関連する権限がすべて収集されます。ブロックする DENY が見つからない場合、十分なアクセス権を付与する GRANT が検索されます。アルゴリズムには、不可欠な要素が 3 つあります。セキュリティ コンテキスト、権限領域、および必要な権限です。
注 |
---|
sa、dbo、エンティティ所有者、information_schema、sys、または自分自身に対する権限を許可、拒否、または取り消すことはできません。 |
セキュリティ コンテキスト
これは、アクセス チェックに対して権限を与えるプリンシパルのグループです。EXECUTE AS ステートメントを使用してセキュリティ コンテキストが別のログインまたはユーザーに変更されていない限り、現在のログインまたはユーザーに関連した権限です。セキュリティ コンテキストには次のプリンシパルが含まれます。
ログイン
ユーザー
ロールのメンバーシップ
Windows グループのメンバーシップ
モジュール署名が使用されている場合、ユーザーが現在実行しているモジュールの署名に使用された証明書のログインまたはユーザー アカウント、およびそのプリンシパルに関連付けられたロールのメンバーシップ
権限領域
これは、セキュリティ保護可能なエンティティと、それを含むすべてのセキュリティ保護可能なクラスです。たとえば、あるテーブル (セキュリティ保護可能なエンティティ) が、セキュリティ保護可能なクラスであるスキーマとデータベースに含まれているとします。この場合のアクセスは、テーブル、スキーマ、データベース、サーバーの各レベルの権限による影響を受けます。詳細については、「権限の階層 (データベース エンジン)」を参照してください。
必要な権限
必要とされる権限の種類です。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 がオーバーライドされます。
必要な権限を識別します。
権限領域内のオブジェクトについて、必要な権限が、セキュリティ コンテキストの任意の ID に対し直接または暗黙的に拒否されている場合は、権限チェックが不合格となります。
権限領域内のすべてのオブジェクトについて、必要な権限が、セキュリティ コンテキストのいずれの ID に対しても直接または暗黙的に拒否されておらず、必要な権限に GRANT 権限または GRANT WITH GRANT 権限が含まれている場合は、権限チェックが合格となります。
使用例
権限に関する情報を取得する例を次に示します。
A. 許可できる権限の完全な一覧を返す
次のステートメントでは、fn_builtin_permissions 関数によって、すべてのデータベース エンジン権限が返されます。詳細については、「sys.fn_builtin_permissions (Transact-SQL)」を参照してください。
SELECT * FROM fn_builtin_permissions(default);
GO
SELECT * FROM fn_builtin_permissions(default);
GO
B. オブジェクトの特定のクラスに対する権限を返す
fn_builtin_permissions 関数を使用すると、セキュリティ保護可能なリソースのカテゴリに使用できるすべての権限を確認することもできます。次の例は、アセンブリに対する権限を返します。
SELECT * FROM fn_builtin_permissions('assembly');
GO
SELECT * FROM fn_builtin_permissions('assembly');
GO
C. オブジェクトに対する実行中のプリンシパルに許可された権限を返す
fn_my_permissions を使用すると、指定したセキュリティ保護可能なリソースについて、呼び出し元のプリンシパルが保持している有効な権限の一覧が返されます。詳細については、「sys.fn_my_permissions (Transact-SQL)」を参照してください。次の例は、Orders55 という名前のオブジェクトに対する権限を返します。
SELECT * FROM fn_my_permissions('Orders55', 'object');
GO
SELECT * FROM fn_my_permissions('Orders55', 'object');
GO
D. 指定したオブジェクトに適用できる権限を返す
次の例は、Yttrium と呼ばれるオブジェクトに適用できる権限を返します。オブジェクト Yttrium の ID を取得するために、組み込み関数 OBJECT_ID が使用されていることに注意してください。
SELECT * FROM sys.database_permissions
WHERE major_id = OBJECT_ID('Yttrium');
GO
SELECT * FROM sys.database_permissions
WHERE major_id = OBJECT_ID('Yttrium');
GO