GRANT (Transact-SQL)

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

セキュリティ保護可能なリソースに対する権限をプリンシパルに許可します。 一般的な概念は、 GRANT <some permission> ON <some object> TO <some user, login, or group>です。 権限の概要については、「権限 (データベース エンジン)」を参照してください。

Transact-SQL 構文表記規則

Syntax

SQL Server、Azure SQL Database、および Fabric SQL データベースの構文。

-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Azure Synapse Analytics、Parallel Data Warehouse、および Microsoft Fabric Warehouse の構文。

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Arguments

ALL

このオプションは旧バージョンとの互換性のためだけに保持されており、非推奨とされます。 すべての可能なアクセス許可が付与されるわけではありません。 ALLの付与は、次のアクセス許可を付与することと同じです。

Securable Permissions
Database BACKUP DATABASEBACKUP LOGCREATE DATABASECREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULECREATE TABLE、および CREATE VIEW
スカラー関数 EXECUTE および REFERENCES
テーブル値関数 DELETEINSERTREFERENCESSELECT、および UPDATE
ストアド プロシージャ EXECUTE
Table DELETEINSERTREFERENCESSELECT、および UPDATE
View DELETEINSERTREFERENCESSELECT、および UPDATE

PRIVILEGES

ISO 準拠のために用意されています。 ALLの動作は変更されません。

permission

アクセス許可の名前。 セキュリティ保護可能なリソースへのアクセス許可の有効なマッピングについては、次のセクションで説明します。

column

権限を許可するテーブルの列の名前を指定します。 かっこ () が必要です。

class

権限を許可するセキュリティ保護可能なリソースのクラスを指定します。 スコープ修飾子 :: が必要です。

securable

権限を許可するセキュリティ保護可能なリソースを指定します。

TO校長

プリンシパルの名前。 セキュリティ保護可能なリソースに対する権限を許可できるプリンシパルは、そのリソースによって異なります。 有効な組み合わせについては、次のセクションを参照してください。

GRANT オプション

権限が許可された被付与者が、この権限を他のプリンシパルにも許可できることを示します。

AS校長

AS <principal>句を使用して、アクセス許可の権限付与者として記録されたプリンシパルが、ステートメントを実行しているユーザー以外のプリンシパルである必要があることを示します。 たとえば、ユーザー Maryprincipal_id12があり、ユーザー Raulがプリンシパル 15であると仮定します。 Mary GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;実行sys.database_permissionsテーブルは、ステートメントが実際にユーザー grantor_principal_id (15) によって実行された場合でも、Raul12 (Mary) されたことを示します。

アクセス許可チェーンを明示的に定義する必要がない限り、通常、 AS 句の使用はお勧めしません。 詳細については、「 アクセス許可チェック アルゴリズムの概要を参照してください。

このステートメントで AS を使用しても、別のユーザーを偽装する機能は意味しません。

Remarks

GRANT ステートメントの完全な構文は複雑です。 前の構文図は、その構造に注意を引くために簡略化されました。 特定のセキュリティ保護可能なリソースに対するアクセス許可を付与するための完全な構文については、この記事で後述する記事で説明します。

REVOKE ステートメントを使用して付与されたアクセス許可を削除できます。また、DENY ステートメントを使用して、プリンシパルがGRANTを介して特定のアクセス許可を取得できないようにすることができます。

アクセス許可を付与すると、指定したセキュリティ保護可能なリソースに対するアクセス許可の DENY または REVOKE が削除されます。 セキュリティ保護可能なリソースを含む上位のスコープで同じアクセス許可が拒否された場合、 DENY が優先されます。 ただし、許可されたアクセス許可を高いスコープで取り消しても、優先されません。

データベース レベルの権限は、指定されたデータベースのスコープ内で許可されます。 ユーザーが別のデータベースのオブジェクトに対する権限を必要とする場合、そのデータベースにユーザー アカウントを作成するか、または現在のデータベースへのアクセス権と同様に、そのデータベースへのアクセス権もユーザー アカウントに与えます。

Caution

テーブル レベルの DENY は、列レベルの GRANTよりも優先されません。 この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。 将来のリリースでは削除される予定です。

sp_helprotect システム ストアド プロシージャは、データベース レベルのセキュリティ保護可能なリソースに対するアクセス許可を報告します。

Microsoft Fabric では、現在、 CREATE USER を明示的に実行することはできません。 GRANT または DENY が実行されると、ユーザーが自動的に作成されます。

GRANTオプション付き

GRANT ... WITH GRANT OPTIONは、アクセス許可を受け取ったセキュリティ プリンシパルに、指定したアクセス許可を他のセキュリティ アカウントに付与する権限が付与されることを指定します。 アクセス許可を受け取るプリンシパルがロールまたは Windows グループである場合は、グループまたはロールのメンバーではないユーザーにオブジェクト権限をさらに付与する必要がある場合に、 AS 句を使用する必要があります。 GRANTステートメントを実行できるのは、グループまたはロールではなくユーザーのみであるため、グループまたはロールの特定のメンバーは、AS句を使用して、アクセス許可を付与するときにロールまたはグループ メンバーシップを明示的に呼び出す必要があります。 次の例は、ロールまたは Windows グループに付与されたときに WITH GRANT OPTION がどのように使用されるかを示しています。

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

SQL Server 権限の一覧表

PDF 形式のすべてのデータベース エンジン権限のポスター サイズのグラフについては、https://aka.ms/sql-permissions-posterを参照してください。

Permissions

付与者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION で指定されたアクセス許可自体を保持しているか、アクセス許可が暗黙的に付与される上位のアクセス許可を保持している必要があります。 AS オプションを使用する場合は、追加の要件が適用されます。 詳細については、セキュリティ保護可能なリソース別の記事を参照してください。

オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。 セキュリティ保護可能なリソースに対する CONTROL 権限を持つプリンシパルは、そのセキュリティ保護可能なリソースに対するアクセス許可を付与できます。

CONTROL SERVER固定サーバー ロールのメンバーなど、権限の付与対象ユーザーは、サーバー内のセキュリティ保護可能なリソースに対して任意のアクセス許可を付与できます。 CONTROL固定データベース ロールのメンバーなど、データベースに対する権限の付与対象ユーザーは、データベース内のセキュリティ保護可能なリソースに対する任意のアクセス許可を付与できます。 スキーマに対する CONTROL 権限の付与対象ユーザーは、スキーマ内の任意のオブジェクトに対して任意の権限を付与できます。

Examples

次の表は、セキュリティ保護可能なリソースと、その構文について説明している記事の一覧です。

Securable GRANT の構文
アプリケーション ロール GRANT データベースプリンシパルパーセンテーション(Transact-SQL)
Assembly GRANT アセンブリ権限(Transact-SQL)
非対称キー GRANT 非対称鍵権限(Transact-SQL)
可用性グループ GRANT 可用性グループ権限(Transact-SQL)
Certificate GRANT 証明書許可(Transact-SQL)
Contract GRANT Service Broker のアクセス許可 (Transact-SQL)
Database GRANT データベース権限 (Transact-SQL)
データベース スコープ資格情報 GRANT データベーススコープ認証(Transact-SQL)
Endpoint GRANT エンドポイントのアクセス許可 (Transact-SQL)
Full-Text カタログ GRANT Full-Text パーセンテーション(Transact-SQL)
Full-Text ストップリスト GRANT Full-Text パーセンテーション(Transact-SQL)
Function GRANT オブジェクトの権限 (Transact-SQL)
Login GRANT サーバー プリンシパルのアクセス許可 (Transact-SQL)
メッセージの種類 GRANT Service Broker のアクセス許可 (Transact-SQL)
Object GRANT オブジェクトの権限 (Transact-SQL)
Queue GRANT オブジェクトの権限 (Transact-SQL)
リモート サービス バインド GRANT Service Broker のアクセス許可 (Transact-SQL)
Role GRANT データベースプリンシパルパーセンテーション(Transact-SQL)
Route GRANT Service Broker のアクセス許可 (Transact-SQL)
Schema GRANT スキーマ権限(Transact-SQL)
検索プロパティ リスト GRANT 検索プロパティリストの権限(Transact-SQL)
Server GRANT サーバーのアクセス許可 (Transact-SQL)
Service GRANT Service Broker のアクセス許可 (Transact-SQL)
ストアド プロシージャ GRANT オブジェクトの権限 (Transact-SQL)
対称キー GRANT 対称鍵権限(Transact-SQL)
Synonym GRANT オブジェクトの権限 (Transact-SQL)
システム オブジェクト GRANT システム オブジェクトの権限 (Transact-SQL)
Table GRANT オブジェクトの権限 (Transact-SQL)
タイプ GRANT タイプ権限(Transact-SQL)
User GRANT データベースプリンシパルパーセンテーション(Transact-SQL)
View GRANT オブジェクトの権限 (Transact-SQL)
XML スキーマ コレクション GRANT XMLスキーマ収集権限(Transact-SQL)