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

適用対象:SQL ServerAzure SQL DatabaseAzure 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  

引数

permission
サーバー上で拒否できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

CASCADE
指定したプリンシパル、およびこのプリンシパルによって権限が許可されている他のすべてのプリンシパルに対しても、同じ権限を拒否することを示します。 校長が許可を得てオプション GRANT 必要です。

<server_principal>
権限を拒否するプリンシパルを指定します。

<grantor_principal>
このクエリを実行するプリンシパルが権限を拒否する権利を取得した、元のプリンシパルを指定します。 AS 句は、権限の拒否者として記録されるプリンシパルは、ステートメントを実行しているユーザー以外のプリンシパルでなければならないことを示すために使います。 たとえば、ユーザー Mary の principal_id は 12、ユーザー Raul の principal_id は 15 であるものとします。 Mary は DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; 実行sys.database_permissionsテーブルは、ステートメントが実際にユーザー 13 (Mary) によって実行された場合でも、deny ステートメントのgrantor_principal_idが 15 (ラウル) であることを示します。

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

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 カタログ ビューで確認できます。

サーバーは権限の階層の最上位となります。 次の表に、サーバー上で拒否できる最も限定的な権限を示します。

サーバー権限 権限が含まれるサーバー権限
一括操作の管理 制御サーバー
"任意の AVAILABILITY GROUP を変更"

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
制御サーバー
任意の接続を変更する 制御サーバー
"任意の CREDENTIAL を変更" 制御サーバー
"任意の DATABASE を変更" 制御サーバー
"任意の ENDPOINT を変更" 制御サーバー
"任意の EVENT NOTIFICATION を変更" 制御サーバー
"任意の EVENT SESSION を変更" 制御サーバー
任意のリンク サーバーを変更する 制御サーバー
"任意の LOGIN を変更" 制御サーバー
"任意の SERVER AUDIT を変更" 制御サーバー
"任意の SERVER ROLE を変更"

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
制御サーバー
リソースの変更 制御サーバー
サーバーの状態を変更 制御サーバー
設定を変更 制御サーバー
オルター・トレース 制御サーバー
サーバーの認証 制御サーバー
どのものでも接続してください DATABASE

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
SQLに接続 制御サーバー
制御サーバー 制御サーバー
何でも作成してください DATABASE "任意の DATABASE を変更"
CREATE AVAILABILITY GROUP

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
"任意の AVAILABILITY GROUP を変更"
DDLを作成 EVENT NOTIFICATION "任意の EVENT NOTIFICATION を変更"
CREATE ENDPOINT "任意の ENDPOINT を変更"
CREATE SERVER ROLE

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
"任意の SERVER ROLE を変更"
トレースを作成 EVENT NOTIFICATION "任意の EVENT NOTIFICATION を変更"
外部アクセス ASSEMBLY 制御サーバー
誰かになりすます LOGIN

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
すべての USER セキュリティ保護可能なリソースを選択する

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
SHUTDOWN 制御サーバー
Unsafe ASSEMBLY 制御サーバー
VIEW どんな人でも DATABASE VIEW 任意の定義
VIEW 任意の定義 制御サーバー
VIEW サーバーの状態 サーバーの状態を変更

次の 3 つのサーバー権限が、SQL Server 2014 (12.x) で追加されました。

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

どんなLOGINになりすます許可を
この権限が付与されていると、中間層プロセスがデータベースに接続するときに、そこに接続するクライアントのアカウントの権限を借用できます。 この権限が拒否されていると、高い特権を持つログインが他のログインの権限を借用するのをブロックできます。 たとえば、CONTROL SERVER 権限を持つログインが他のログインの権限を借用するのをブロックできます。

すべての選択 USER 担保可能物 の許可
付与されていると、監査担当者などログインが、ユーザーが接続できるすべてのデータベースのデータを表示できます。 この権限が拒否されていると、オブジェクトが sys スキーマに含まれている場合を除き、オブジェクトへのアクセスが拒否されます。

アクセス許可

CONTROL SERVER 権限またはセキュリティ保護可能なリソースの所有権が必要です。 AS 句を使用する場合、指定されたプリンシパルは、権限が拒否されるセキュリティ保護可能なリソースを所有している必要があります。

A. SQL Server ログインと、このログインが権限を許可したプリンシパルに対して CONNECT SQL 権限を拒否する

次の例では、SQL Server ログイン CONNECT SQL と、このログインが権限を許可したプリンシパルに対して、Annika 権限を拒否します。

USE master;  
DENY CONNECT SQL TO Annika CASCADE;  
GO  

B. ASオプションでSQL Serverログインの許可を拒否するCREATE ENDPOINT

次の例では、ユーザー CREATE ENDPOINT に対して ArifS 権限を拒否します。 この例では AS オプションを使って、このステートメントを実行するプリンシパルに権限を許可した、元のプリンシパルとして MandarP を指定します。

USE master;  
DENY CREATE ENDPOINT TO ArifS AS MandarP;  
GO  

参照

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY サーバーのアクセス許可 (Transact-SQL)
REVOKE サーバーのアクセス許可 (Transact-SQL)
権限の階層 (データベース エンジン)
sys.fn_builtin_permissions(Transact-SQL)
sys.fn_my_permissions(Transact-SQL)
HAS_PERMS_BY_NAME(Transact-SQL)