適用対象:SQL Server
Azure SQL Managed Instance
サーバーの権限を拒否します。
構文
DENY permission [ ,...n ]
TO <grantee_principal> [ ,...n ]
[ CASCADE ]
[ AS <grantor_principal> ]
<grantee_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
<grantor_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
引数
アクセス許可
サーバー上で拒否できる権限を指定します。 アクセス許可のリストについては、解説を参照してください。
CASCADE
指定したプリンシパル、およびこのプリンシパルによって権限が許可されている他のすべてのプリンシパルに対しても、同じ権限を拒否することを示します。 校長が許可を得て許可を得た場合に必須 GRANT OPTION。
<server_principal>
権限を拒否するプリンシパルを指定します。
<grantor_principal>
このクエリを実行するプリンシパルが権限を拒否する権利を取得した、元のプリンシパルを指定します。
AS主体条項を使って、許可を拒否した主体として記録されている主体は、その陳述を実行する人以外の主体であるべきだと示してください。 例えば、ユーザーのメアリーが12歳 principal_id 、ラウルが15歳のプリンシパルであると仮定します。 メアリーが実行 DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;sys.database_permissions テーブルは、否定文の grantor_principal_id が15(ラウル)であることを示しますが、実際には文はユーザー13(メアリー)によって実行されました。
SQL_Server_login
SQL Server ログインを指定します。
SQL_Server_login_mapped_to_Windows_login
Windows ログインにマップされている SQL Server ログインを指定します。
SQL_Server_login_mapped_to_Windows_group
Windows グループにマップされている SQL Server ログインを指定します。
SQL_Server_login_mapped_to_certificate
証明書にマップされている SQL Server ログインを指定します。
SQL_Server_login_mapped_to_asymmetric_key
非対称キーにマップされている SQL Server ログインを指定します。
server_role
サーバー ロールを指定します。
解説
サーバー範囲での権限は、現在のデータベースが masterされた場合にのみ拒否可能です。
サーバー権限に関する情報は sys.server_permissions カタログ ビュー、サーバー プリンシパルに関する情報は sys.server_principals カタログ ビューでそれぞれ確認できます。 サーバー ロールのメンバーシップに関する情報は、sys.server_role_members カタログ ビューで確認できます。
Azure SQL Databaseでは、サーバーレベルの権限のGRANT、REVOKE、DENYはサポートされていません。
サーバーは権限の階層の最上位となります。 次の表に、サーバー上で拒否できる最も限定的な権限を示します。
| サーバー権限 | 権限が含まれるサーバー権限 |
|---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。 |
CONTROL SERVER |
ALTER ANY CONNECTION |
CONTROL SERVER |
ALTER ANY CREDENTIAL |
CONTROL SERVER |
ALTER ANY DATABASE |
CONTROL SERVER |
ALTER ANY ENDPOINT |
CONTROL SERVER |
ALTER ANY EVENT NOTIFICATION |
CONTROL SERVER |
ALTER ANY EVENT SESSION |
CONTROL SERVER |
ALTER ANY LINKED SERVER |
CONTROL SERVER |
ALTER ANY LOGIN |
CONTROL SERVER |
ALTER ANY SERVER AUDIT |
CONTROL SERVER |
ALTER ANY SERVER ROLE適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。 |
CONTROL SERVER |
ALTER RESOURCES |
CONTROL SERVER |
ALTER SERVER STATE |
CONTROL SERVER |
ALTER SETTINGS |
CONTROL SERVER |
ALTER TRACE |
CONTROL SERVER |
AUTHENTICATE SERVER |
CONTROL SERVER |
| どのものでも接続してください DATABASE 適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。 |
CONTROL SERVER |
CONNECT SQL |
CONTROL SERVER |
CONTROL SERVER |
CONTROL SERVER |
CREATE ANY DATABASE |
ALTER ANY DATABASE |
| CREATE AVAILABILITY GROUP 適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。 |
"任意の AVAILABILITY GROUP を変更" |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。 |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY |
CONTROL SERVER |
IMPERSONATE ANY LOGIN適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。 |
CONTROL SERVER |
SELECT ALL USER SECURABLES適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。 |
CONTROL SERVER |
SHUTDOWN |
CONTROL SERVER |
UNSAFE ASSEMBLY |
CONTROL SERVER |
VIEW ANY DATABASE |
VIEW ANY DEFINITION |
VIEW ANY DEFINITION |
CONTROL SERVER |
VIEW ANY PERFORMANCE DEFINITION適用対象: SQL Server 2022 (16.x) 以降のバージョン。 |
VIEW ANY DEFINITION |
VIEW ANY SECURITY DEFINITION適用対象: SQL Server 2022 (16.x) 以降のバージョン。 |
VIEW ANY DEFINITION |
VIEW SERVER PERFORMANCE STATE適用対象: SQL Server 2022 (16.x) 以降のバージョン。 |
VIEW SERVER STATE |
VIEW SERVER SECURITY STATE適用対象: SQL Server 2022 (16.x) 以降のバージョン。 |
VIEW SERVER STATE |
VIEW SERVER STATE |
ALTER SERVER STATE |
次の 3 つのサーバー権限が、SQL Server 2014 (12.x) で追加されました。
CONNECT ANY DATABASEpermission- 現在存在するすべてのデータベースと将来新たに作成される可能性のあるデータベースに接続しなければならないログイン
CONNECT ANY DATABASEを付与します。 接続以外の権限はどのデータベースにおいても一切付与されません。SELECT ALL USER SECURABLESやVIEW SERVER STATEと組み合わせることで、監査プロセスがSQL Serverのインスタンス上のすべてのデータやデータベース状態を閲覧できるようにします。
- 現在存在するすべてのデータベースと将来新たに作成される可能性のあるデータベースに接続しなければならないログイン
IMPERSONATE ANY LOGINpermission- この権限が付与されていると、中間層プロセスがデータベースに接続するときに、そこに接続するクライアントのアカウントの権限を借用できます。 この権限が拒否されていると、高い特権を持つログインが他のログインの権限を借用するのをブロックできます。 例えば、
CONTROL SERVER権限を持つログインは他のログインを偽ることをブロックできます。
- この権限が付与されていると、中間層プロセスがデータベースに接続するときに、そこに接続するクライアントのアカウントの権限を借用できます。 この権限が拒否されていると、高い特権を持つログインが他のログインの権限を借用するのをブロックできます。 例えば、
SELECT ALL USER SECURABLESpermission- 付与されていると、監査担当者などログインが、ユーザーが接続できるすべてのデータベースのデータを表示できます。 拒否されると、
sysスキーマに含まれていないオブジェクトへのアクセスを妨げます。
- 付与されていると、監査担当者などログインが、ユーザーが接続できるすべてのデータベースのデータを表示できます。 拒否されると、
アクセス許可
CONTROL SERVER 権限またはセキュリティ保護可能なリソースの所有権が必要です。 AS 句を使用する場合、指定されたプリンシパルは、権限が拒否されるセキュリティ保護可能なリソースを所有している必要があります。
例
A. SQL Serverのログインおよび再付与されたプリンシパルに対してCONNECT SQL権限を拒否すること
次の例では、SQL Server ログイン CONNECT SQL と、このログインが権限を許可したプリンシパルに対して、Test 権限を拒否します。
USE master;
DENY CONNECT SQL TO Test CASCADE;
GO
B. ASオプションでCREATE ENDPOINTSQL Serverログインの許可を拒否する
次の例では、ユーザー CREATE ENDPOINT に対して Test1 権限を拒否します。 この例では AS オプションを使って、このステートメントを実行するプリンシパルに権限を許可した、元のプリンシパルとして Test2 を指定します。
USE master;
DENY CREATE ENDPOINT TO Test1 AS Test2;
GO