GRANT (Transact-SQL)

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

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

Transact-SQL 構文表記規則

構文

SQL Server および Azure 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 の構文。

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
}

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

ALL

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

セキュリティ保護可能 アクセス許可
データベース BACKUP DATABASEBACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, , CREATE PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW
スカラー関数 EXECUTE および REFERENCES
テーブル値関数 DELETEINSERTREFERENCESSELECT、および UPDATE
ストアド プロシージャ EXECUTE
テーブル DELETEINSERTREFERENCESSELECT、および UPDATE
表示 DELETEINSERTREFERENCESSELECT、および UPDATE

PRIVILEGES

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

permission

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

column

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

class

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

securable

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

TO principal

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

GRANT OPTION

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

AS principal

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

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

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

解説

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

このステートメントを REVOKE 使用して、付与されたアクセス許可を削除できます。また、このステートメントを DENY 使用して、プリンシパル GRANTが .

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

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

注意

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

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

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

WITH GRANT OPTION

アクセス 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

アクセス許可

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

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

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

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

セキュリティ保護可能 GRANT の構文
アプリケーション ロール GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)
アセンブリ GRANT (アセンブリの権限の許可) (Transact-SQL)
非対称キー GRANT (非対称キーの権限の許可) (Transact-SQL)
可用性グループ 可用性グループの権限の許可 (Transact-SQL)
Certificate GRANT (証明書の権限の許可) (Transact-SQL)
コントラクト GRANT (Service Broker の権限の許可) (Transact-SQL)
データベース GRANT (データベースの権限の許可) (Transact-SQL)
データベース スコープ資格情報 GRANT (データベース スコープの資格情報の許可) (Transact-SQL)
エンドポイント GRANT (エンドポイントの権限の許可) (Transact-SQL)
フルテキスト カタログ GRANT (フルテキストの権限の許可) (Transact-SQL)
フルテキスト ストップリスト GRANT (フルテキストの権限の許可) (Transact-SQL)
機能 GRANT (オブジェクトの権限の許可) (Transact-SQL)
ログイン GRANT (サーバー プリンシパルの権限の許可) (Transact-SQL)
メッセージ型 GRANT (Service Broker の権限の許可) (Transact-SQL)
Object GRANT (オブジェクトの権限の許可) (Transact-SQL)
キュー GRANT (オブジェクトの権限の許可) (Transact-SQL)
リモート サービス バインド GRANT (Service Broker の権限の許可) (Transact-SQL)
Role GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)
ルート GRANT (Service Broker の権限の許可) (Transact-SQL)
スキーマ GRANT (スキーマ権限の許可) (Transact-SQL)
検索プロパティ リスト GRANT (検索プロパティ リスト権限の許可) (Transact-SQL)
サーバー GRANT (サーバーの権限の許可) (Transact-SQL)
サービス GRANT (Service Broker の権限の許可) (Transact-SQL)
ストアド プロシージャ GRANT (オブジェクトの権限の許可) (Transact-SQL)
対称キー GRANT (対称キーの権限の許可) (Transact-SQL)
シノニム GRANT (オブジェクトの権限の許可) (Transact-SQL)
システム オブジェクト GRANT (システム オブジェクトの権限の許可) (Transact-SQL)
テーブル GRANT (オブジェクトの権限の許可) (Transact-SQL)
種類 GRANT (型の権限の許可) (Transact-SQL)
User GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)
View GRANT (オブジェクトの権限の許可) (Transact-SQL)
XML スキーマ コレクション GRANT (XML スキーマ コレクションの権限の許可) (Transact-SQL)