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>
権限の概要については、「権限 (データベース エンジン)」を参照してください。
構文
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 DATABASE 、 BACKUP LOG , CREATE DATABASE , CREATE DEFAULT , CREATE FUNCTION , , CREATE PROCEDURE , CREATE RULE , CREATE TABLE , and CREATE VIEW |
スカラー関数 | EXECUTE および REFERENCES |
テーブル値関数 | DELETE 、INSERT 、REFERENCES 、SELECT 、および UPDATE |
ストアド プロシージャ | EXECUTE |
テーブル | DELETE 、INSERT 、REFERENCES 、SELECT 、および UPDATE |
表示 | DELETE 、INSERT 、REFERENCES 、SELECT 、および UPDATE |
PRIVILEGES
ISO 準拠のために用意されています。 の動作 ALL
を変更しません。
permission
アクセス許可の名前。 セキュリティ保護可能なリソースへのアクセス許可の有効なマッピングについては、次のセクションで説明します。
column
権限を許可するテーブルの列の名前を指定します。 かっこが(
)
必要です。
class
権限を許可するセキュリティ保護可能なリソースのクラスを指定します。 スコープ修飾子 ::
が必要です。
securable
権限を許可するセキュリティ保護可能なリソースを指定します。
TO principal
プリンシパルの名前。 セキュリティ保護可能なリソースに対する権限を許可できるプリンシパルは、そのリソースによって異なります。 有効な組み合わせについては、次のセクションを参照してください。
GRANT OPTION
権限が許可された被付与者が、この権限を他のプリンシパルにも許可できることを示します。
AS principal
この句を AS <principal>
使用して、アクセス許可の権限付与者として記録されたプリンシパルが、ステートメントを実行するユーザー以外のプリンシパルである必要があることを示します。 たとえば、ユーザーが a を持ちprincipal_id
12
、ユーザー Raul
Mary
がプリンシパルであると仮定します15
。 Mary が実行すると、sys.database_permissions
ステートメントが15
grantor_prinicpal_id
実際にユーザー 12
() によって実行された場合でも、テーブルは was (Mary
Raul
) であることを示します。GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
アクセス許可チェーンを AS
明示的に定義する必要がない限り、句の使用は通常お勧めしません。 詳細については、「権限チェック アルゴリズムの概要」を参照してください。
このステートメントで使用しても、別の AS
ユーザーを偽装する機能は意味しません。
解説
ステートメントの GRANT
完全な構文は複雑です。 前の構文図は、その構造に注意を引くために簡略化されました。 特定のセキュリティ保護可能なリソースに対するアクセス許可を付与するための完全な構文については、この記事で後述する記事で説明します。
このステートメントを REVOKE
使用して、付与されたアクセス許可を削除できます。また、このステートメントを DENY
使用して、プリンシパル GRANT
が .
権限を付与すると、指定したセキュリティ保護可能なリソースに対する権限が削除されるか、そのREVOKE
権限が削除DENY
されます。 セキュリティ保護可能なリソースを含むより高いスコープで同じアクセス許可が拒否された場合、そのアクセス許可が DENY
優先されます。 ただし、許可されたアクセス許可を高いスコープで取り消しても、優先されません。
データベース レベルの権限は、指定されたデータベースのスコープ内で許可されます。 ユーザーが別のデータベースのオブジェクトに対する権限を必要とする場合、そのデータベースにユーザー アカウントを作成するか、または現在のデータベースへのアクセス権と同様に、そのデータベースへのアクセス権もユーザー アカウントに与えます。
注意
テーブル レベルは、列レベルDENY
GRANT
よりも優先されません。 この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。 将来のリリースでは削除される予定です。
システム ストアド プロシージャは 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
付与対象ユーザーは、スキーマ内の任意のオブジェクトに対して任意のアクセス許可を付与できます。
例
次の表は、セキュリティ保護可能なリソースと、その構文について説明している記事の一覧です。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示