GRANT (サーバー プリンシパルの権限の許可) (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
SQL Server ログインに対する権限を許可します。
構文
GRANT permission [ ,...n ] }
ON
{ [ LOGIN :: SQL_Server_login ]
| [ SERVER ROLE :: server_role ] }
TO <server_principal> [ ,...n ]
[ WITH GRANT OPTION ]
[ AS SQL_Server_login ]
<server_principal> ::=
SQL_Server_login
| SQL_Server_login_from_Windows_login
| SQL_Server_login_from_certificate
| SQL_Server_login_from_AsymKey
| server_role
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
permission
SQL Server ログインに対して許可することができる権限を指定します。 権限の一覧については、後の「解説」を参照してください。
LOGIN :: SQL_Server_login
権限を許可する対象となる SQL Server ログインを指定します。 スコープ修飾子 ( :: ) が必要です。
SERVER ROLE :: server_role
権限を許可するユーザー定義のサーバー ロールを指定します。 スコープ修飾子 ( :: ) が必要です。
TO <server_principal> 権限が許可される対象となる SQL Server ログインまたはサーバー ロールを指定します。
SQL_Server_login
SQL Server ログインの名前を指定します。
SQL_Server_login_from_Windows_login
Windows ログインから作成された SQL Server ログインの名前を指定します。
SQL_Server_login_from_certificate
証明書にマップされている SQL Server ログインの名前を指定します。
SQL_Server_login_from_AsymKey
非対称キーにマップされている SQL Server ログインの名前を指定します。
server_role
ユーザー定義サーバー ロールの名前を指定します。
WITH GRANT OPTION
権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。
AS SQL_Server_login
このクエリを実行するプリンシパルが権限を許可する権利を取得した、元の SQL Server ログインを指定します。
解説
サーバー スコープの権限を許可できるのは、現在のデータベースが master のときだけです。
サーバー権限に関する情報は、sys.server_permissions カタログ ビューで確認できます。 サーバー プリンシパルに関する情報は、sys.server_principals カタログ ビューで確認できます。
SQL Server ログインおよびサーバー ロールはサーバー レベルのセキュリティ保護可能なリソースです。 次の表に、SQL Server ログインまたはサーバー ロールに対して許可することができる権限のうち最も明確で限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。
SQL Server ログインまたはサーバー ロールの権限 | 権限が含まれる SQL Server ログインまたはサーバー ロールの権限 | 権限が含まれるサーバー権限 |
---|---|---|
CONTROL | CONTROL | CONTROL SERVER |
IMPERSONATE | CONTROL | CONTROL SERVER |
VIEW DEFINITION | CONTROL | VIEW ANY DEFINITION |
ALTER | CONTROL | ALTER ANY LOGIN ALTER ANY SERVER ROLE |
アクセス許可
ログインの場合、ログインに対する CONTROL 権限、またはサーバーに対する ALTER ANY LOGIN 権限が必要です。
サーバー ロールの場合、サーバー ロールに対する CONTROL 権限、またはサーバーに対する ALTER ANY SERVER ROLE 権限が必要です。
例
A. ログインの IMPERSONATE 権限を許可する
次の例では、SQL Server ログイン WanidaBenshoof
の IMPERSONATE
権限を、Windows ユーザー AdvWorks\YoonM
から作成された SQL Server ログインに対して許可します。
USE master;
GRANT IMPERSONATE ON LOGIN::WanidaBenshoof to [AdvWorks\YoonM];
GO
B. GRANT OPTION を指定して VIEW DEFINITION 権限を許可する
次の例では、SQL Server ログイン EricKurjan
の VIEW DEFINITION
を、SQL Server ログイン RMeyyappan
に対して、GRANT OPTION
を使用して許可します。
USE master;
GRANT VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan
WITH GRANT OPTION;
GO
C. サーバー ロールの VIEW DEFINITION 権限を許可する
次の例では、Auditors
サーバー ロールに対する Sales
サーバー ロールの VIEW DEFINITION
を許可します。
USE master;
GRANT VIEW DEFINITION ON SERVER ROLE::Sales TO Auditors ;
GO
参照
sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
CREATE LOGIN (Transact-SQL)
プリンシパル (データベース エンジン)
権限 (データベース エンジン)
セキュリティ関数 (Transact-SQL)
セキュリティ ストアド プロシージャ (Transact-SQL)