適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric プレビューの SQL データベース
データベースに含まれている、権限ごとまたは列例外の権限ごとに 1 行のデータを返します。 列権限が、対応するオブジェクトレベルの権限とは異なる場合、列権限ごとに行が存在します。 列権限が、対応するオブジェクトの権限と同じ場合、それに対する行はなく、適用される権限はオブジェクトのものです。
Important
列レベルの権限は、同一エンティティのオブジェクト レベルの権限をオーバーライドします。
Column name | Data type | Description |
---|---|---|
class | tinyint | 権限許可が存在するクラスを識別します。 詳細については、「sys.securable_classes (Transact-SQL)」を参照してください。 0 = データベース 1 = オブジェクトまたは列 3 = スキーマ 4 = データベース プリンシパル 5 = アセンブリ - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 6 = 型 10 = XML スキーマ コレクション - 適用対象: SQL Server 2008 (10.0.x) 以降のバージョン。 15 = メッセージの種類 - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 16 = サービス コントラクト - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 17 = サービス - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 18 = リモート サービス バインド - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 19 = ルート - への適用: SQL Server 2008 (10.0.x) 以降のバージョン。 23 =フルテキスト カタログ - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 24 = 対称キー - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 25 = 証明書 - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 26 = 非対称キー - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 29 = フルテキスト ストップリスト - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 31 = 検索プロパティ リスト - アプリケーション: SQL Server 2008 (10.0.x) 以降のバージョン。 32 = データベース スコープ資格情報 - アプリケーション: SQL Server 2016 (13.x) 以降のバージョン。 34 = 外部言語 - アプリケーション: SQL Server 2019 (15.x) 以降のバージョン。 |
class_desc | nvarchar(60) | 権限が存在するクラスの説明。 DATABASE OBJECT_OR_COLUMN SCHEMA DATABASE_PRINCIPAL ASSEMBLY TYPE XML_SCHEMA_COLLECTION MESSAGE_TYPE SERVICE_CONTRACT SERVICE REMOTE_SERVICE_BINDING ROUTE FULLTEXT_CATALOG SYMMETRIC_KEYS CERTIFICATE ASYMMETRIC_KEY FULLTEXT STOPLIST 物件リストを検索 データベース スコープ付き認証情報 EXTERNAL LANGUAGE |
major_id | int | 権限が存在するリソースの ID。クラスに基づいて解釈されます。 通常、 major_id は、クラスが表すものに適用される ID の種類にすぎません。 0 = データベース自体 >0 = ユーザー オブジェクトのオブジェクト ID <0 = システム オブジェクトのオブジェクト ID |
minor_id | int | 権限が存在するリソースのセカンダリ ID。クラスに基づいて解釈されます。 多くの場合、 minor_id は 0 です。オブジェクトのクラスに使用できるサブカテゴリがないためです。 それ以外の場合、これはテーブルの列 ID です。 |
grantee_principal_id | int | 権限が付与される対象のデータベース プリンシパル ID。 |
grantor_principal_id | int | これらの権限の付与者のデータベース プリンシパル ID。 |
type | char(4) | データベースの権限の種類。 権限の種類の一覧については、次の表を参照してください。 |
permission_name | nvarchar(128) | Permission name. |
state | char(1) | Permission state: D = 拒否 R = 取り消し G = 許可 W = 許可の許可オプション |
state_desc | nvarchar(60) | 権限の状態の説明。 DENY REVOKE GRANT GRANT_WITH_GRANT_OPTION |
Database Permissions
次の種類の権限を使用できます。
Permission type | Permission name | 適用されるセキュリティ保護可能なリソース |
---|---|---|
AADS | ALTER ANY DATABASE イベント セッション | DATABASE |
AAMK | 任意のマスクを変更します。 | DATABASE |
AEDS | すべての外部データ ソースを変更します。 | DATABASE |
AEFF | 任意の外部のファイル形式を変更します。 | DATABASE |
AL | ALTER | APPLICATION ROLE、ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、FULLTEXT CATALOG、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMA、SERVICE、SYMMETRIC KEY、USER、XML SCHEMA COLLECTION |
ALAK | 非対称キーを変更する | DATABASE |
ALAR | 任意のアプリケーション ロールを変更する | DATABASE |
ALAS | 任意のアセンブリを変更 | DATABASE |
ALCF | 任意の証明書を変更する | DATABASE |
ALDS | 任意のデータスペースを変更する | DATABASE |
ALED | 任意のデータベースイベント通知を変更する | DATABASE |
ALFT | 任意のフルテキストカタログを変更 | DATABASE |
ALMT | 任意のメッセージ型を変更する | DATABASE |
ALRL | あらゆるロールを変更する | DATABASE |
ALRT | 任意のルートを変更 | DATABASE |
ALSB | 任意のリモートサービスバインディングを変更する | DATABASE |
ALSC | 任意の契約を変更する | DATABASE |
ALSK | 対称鍵の変更可能 | DATABASE |
ALSM | 任意のスキーマを変更する | DATABASE |
ALSV | 任意のサービスを変更する | DATABASE |
ALTG | ALTER ANY DATABASE DDL TRIGGER | DATABASE |
ALUS | 任意のユーザーを変更する | DATABASE |
AUTH | AUTHENTICATE | DATABASE |
BADB | BACKUP DATABASE | DATABASE |
BALO | BACKUP LOG | DATABASE |
CL | CONTROL | APPLICATION ROLE、ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、FULLTEXT CATALOG、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMA、SERVICE、SYMMETRIC KEY、TYPE、USER、XML SCHEMA COLLECTION |
CO | CONNECT | DATABASE |
CORP | CONNECT REPLICATION | DATABASE |
CP | CHECKPOINT | DATABASE |
CRAG | CREATE AGGREGATE | DATABASE |
CRAK | 非対称キーを作成する | DATABASE |
CRAS | CREATE ASSEMBLY | DATABASE |
CRCF | CREATE CERTIFICATE | DATABASE |
CRDB | CREATE DATABASE | DATABASE |
CRDF | CREATE DEFAULT | DATABASE |
CRED | データベースDDLイベント通知の作成 | DATABASE |
CRFN | CREATE FUNCTION | DATABASE |
CRFT | フルテキスト カタログの作成 | DATABASE |
CRMT | メッセージの種類を作成する | DATABASE |
CRPR | CREATE PROCEDURE | DATABASE |
CRQU | CREATE QUEUE | DATABASE |
CRRL | CREATE ROLE | DATABASE |
CRRT | CREATE ROUTE | DATABASE |
CRRU | CREATE RULE | DATABASE |
CRSB | リモート サービス バインディングを作成する | DATABASE |
CRSC | CREATE CONTRACT | DATABASE |
CRSK | 対称キーの作成 | DATABASE |
CRSM | CREATE SCHEMA | DATABASE |
CRSN | CREATE SYNONYM | DATABASE |
CRSO |
適用対象: SQL Server 2012 (11.x) 以降のバージョン。 CREATE SEQUENCE |
DATABASE |
CRSV | CREATE SERVICE | DATABASE |
CRTB | CREATE TABLE | DATABASE |
CRTY | CREATE TYPE | DATABASE |
CRVW | CREATE VIEW | DATABASE |
CRXS |
適用対象: SQL Server 2008 (10.0.x) 以降のバージョン。 XML スキーマ コレクションの作成 |
DATABASE |
DABO | データベースの一括処理の管理 | DATABASE |
DL | DELETE | DATABASE、OBJECT、SCHEMA |
EAES | 外部スクリプトを実行する | DATABASE |
EX | EXECUTE | ASSEMBLY、DATABASE、OBJECT、SCHEMA、TYPE、XML SCHEMA COLLECTION |
IM | IMPERSONATE | USER |
IN | INSERT | DATABASE、OBJECT、SCHEMA |
RC | RECEIVE | OBJECT |
RF | REFERENCES | ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、FULLTEXT CATALOG、MESSAGE TYPE、OBJECT、SCHEMA、SYMMETRIC KEY、TYPE、XML SCHEMA COLLECTION |
SL | SELECT | DATABASE、OBJECT、SCHEMA |
SN | SEND | SERVICE |
SPLN | SHOWPLAN | DATABASE |
SUQN | クエリ通知をサブスクライブする | DATABASE |
TO | TAKE OWNERSHIP | ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、FULLTEXT CATALOG、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMA、SERVICE、SYMMETRIC KEY、TYPE、XML SCHEMA COLLECTION |
UP | UPDATE | DATABASE、OBJECT、SCHEMA |
VW | VIEW DEFINITION | APPLICATION ROLE、ASSEMBLY、ASYMMETRIC KEY、CERTIFICATE、CONTRACT、DATABASE、FULLTEXT CATALOG、MESSAGE TYPE、OBJECT、REMOTE SERVICE BINDING、ROLE、ROUTE、SCHEMA、SERVICE、SYMMETRIC KEY、TYPE、USER、XML SCHEMA COLLECTION |
VWCK | 列の暗号化キーの定義を表示します。 | DATABASE |
VWCM | 任意の列のマスター_キーの定義の表示 | DATABASE |
VWCT | 変更の追跡を表示する | TABLE, SCHEMA |
VWDS | データベースの状態の表示 | DATABASE |
REVOKE と列例外のアクセス許可
ほとんどの場合、REVOKE コマンドは GRANT または DENY エントリをsys.database_permissionsから削除します。
ただし、オブジェクトに対する GRANT 権限または DENY 権限を持ち、その権限を列に対して取り消すことができます。 この列例外アクセス許可は、sys.database_permissionsに REVOKE として表示されます。 次の例を考えてみましょう。
GRANT SELECT ON Person.Person TO [Sales];
REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];
これらのアクセス許可は、sys.database_permissionsに 1 つの GRANT (テーブル上) と 1 つの REVOKE (列) として表示されます。
Important
REVOKE は DENY とは異なります。Sales
プリンシパルは、他のアクセス許可を介して列にアクセスできる可能性があるためです。 権限を取り消す代わりに拒否した場合、DENY は常に GRANT よりも優先されるため、Sales
は列の内容を表示できません。
Permissions
すべてのユーザーは自分の権限を参照できます。 他のユーザーの権限を表示するには、VIEW DEFINITION、ALTER ANY USER、またはユーザーに対する任意の権限が必要です。 ユーザー定義ロールを参照するには、ALTER ANY ROLE、またはロールのメンバーシップ (パブリックなど) が必要です。
カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されているセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。
Examples
A. データベース プリンシパルのすべてのアクセス許可を一覧表示する
次のクエリによって、データベース プリンシパルに対して明示的に付与または拒否されたアクセス許可の一覧が表示されます。
Important
固定データベース ロールのアクセス許可は、sys.database_permissions
には表示されません。 このため、データベース プリンシパルには、ここに一覧表示されない別のアクセス許可がある場合があります。
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;
B. データベース内のスキーマ オブジェクトに対する権限を一覧表示する
次のクエリでは、 sys.database_principals と sys.database_permissions
を sys.objects および sys.schemas に結合し 特定のスキーマ オブジェクトに対して許可または拒否されたアクセス許可を一覧表示します。
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;
C. 特定のオブジェクトの権限を一覧表示する
前の例を使用して、1 つのデータベース オブジェクトに固有のアクセス許可を照会できます。
たとえば、サンプル データベースのデータベース ユーザー test
に付与される次の詳細なアクセス許可について考えますAdventureWorksDW2022
。
GRANT SELECT ON dbo.vAssocSeqOrders TO [test];
dbo.vAssocSeqOrders
に割り当てられている詳細なアクセス許可を見つけます。
SELECT pr.principal_id
,pr.name
,pr.type_desc
,pr.authentication_type_desc
,pe.state_desc
,pe.permission_name
,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
AND s.name = 'dbo';
出力を返します。
principal_id name type_desc authentication_type_desc state_desc permission_name ObjectName
5 test SQL_USER INSTANCE GRANT SELECT dbo.vAssocSeqOrders