DENY サーバー権限(Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

サーバーの権限を拒否します。

Transact-SQL 構文表記規則

構文

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 DATABASE permission

    • 現在存在するすべてのデータベースと将来新たに作成される可能性のあるデータベースに接続しなければならないログイン CONNECT ANY DATABASE を付与します。 接続以外の権限はどのデータベースにおいても一切付与されません。 SELECT ALL USER SECURABLESやVIEW SERVER STATEと組み合わせることで、監査プロセスがSQL Serverのインスタンス上のすべてのデータやデータベース状態を閲覧できるようにします。
  • IMPERSONATE ANY LOGIN permission

    • この権限が付与されていると、中間層プロセスがデータベースに接続するときに、そこに接続するクライアントのアカウントの権限を借用できます。 この権限が拒否されていると、高い特権を持つログインが他のログインの権限を借用するのをブロックできます。 例えば、 CONTROL SERVER 権限を持つログインは他のログインを偽ることをブロックできます。
  • SELECT ALL USER SECURABLES permission

    • 付与されていると、監査担当者などログインが、ユーザーが接続できるすべてのデータベースのデータを表示できます。 拒否されると、 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