次の方法で共有


DENY (データベース プリンシパルの権限の拒否) (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

SQL Server のデータベース ユーザー、データベース ロール、またはアプリケーション ロールに対して許可された権限を拒否します。

Transact-SQL 構文表記規則

Syntax

DENY permission [ ,...n ]    
    ON   
    {  [ USER :: database_user ]  
     | [ ROLE :: database_role ]  
     | [ APPLICATION ROLE :: application_role ]  
    }  
    TO <database_principal> [ ,...n ]  
      [ CASCADE ]  
      [ AS <database_principal> ]  
  
<database_principal> ::=  
    Database_user   
  | Database_role   
  | Application_role   
  | Database_user_mapped_to_Windows_User   
  | Database_user_mapped_to_Windows_Group   
  | Database_user_mapped_to_certificate   
  | Database_user_mapped_to_asymmetric_key   
  | Database_user_with_no_login   

Arguments

permission
データベース プリンシパルで拒否できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

ユーザー ::database_user
権限を拒否するユーザーのクラスと名前を指定します。 スコープ修飾子 ( :: ) が必要です。

役割 ::database_role
権限を拒否するロールのクラスと名前を指定します。 スコープ修飾子 ( :: ) が必要です。

アプリケーション ロール ::application_role
適用対象: SQL Server 2008 (10.0.x) 以降、SQL Database。

権限を拒否するアプリケーション ロールのクラスと名前を指定します。 スコープ修飾子 ( :: ) が必要です。

CASCADE
このプリンシパルによって権限が許可されている他のプリンシパルに対しても、同じ権限を拒否することを示します。

<database_principal>
このクエリを実行するプリンシパルが権限を取り消す権利を取得した、元のプリンシパルを指定します。

Database_user
データベース ユーザーを指定します。

Database_role
データベース ロールを指定します。

Application_role
適用対象: SQL Server 2008 (10.0.x) 以降、SQL Database。

アプリケーション ロールを指定します。

Database_user_mapped_to_Windows_User
Windows ユーザーにマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_Windows_Group
Windows グループにマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_certificate
証明書にマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_asymmetric_key
非対称キーにマップされているデータベース ユーザーを指定します。

Database_user_with_no_login
対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。

Remarks

データベース ユーザー権限

データベース ユーザーは、データベース レベルのセキュリティ保護可能なリソースで、権限の階層で親となっているデータベースに含まれています。 次の表に、データベース ユーザーで拒否できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。

データベース ユーザー権限 権限が含まれるデータベース ユーザー権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
IMPERSONATE CONTROL CONTROL
ALTER CONTROL 任意のユーザーを変更する
ビューの定義 CONTROL ビューの定義

データベース ロール権限

データベース ロールは、データベース レベルのセキュリティ保護可能なリソースで、権限の階層で親となっているデータベースに含まれています。 次の表に、データベース ロールで拒否できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。

データベース ロール権限 権限が含まれるデータベース ロール権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
所有権 CONTROL CONTROL
ALTER CONTROL あらゆるロールを変更する
ビューの定義 CONTROL ビューの定義

アプリケーション ロール権限

アプリケーション ロールは、データベース レベルのセキュリティ保護可能なリソースで、権限の階層で親となっているデータベースに含まれています。 次の表に、アプリケーション ロールで拒否できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。

アプリケーション ロール権限 権限が含まれるアプリケーション ロール権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
ALTER CONTROL 任意のアプリケーション ロールを変更する
ビューの定義 CONTROL ビューの定義

Permissions

指定したプリンシパルに対する CONTROL 権限、または CONTROL 権限を暗黙的に含む上位の権限が必要です。

db_owner 固定データベース ロールのメンバーなど、データベースに対する CONTROL 権限が許可されているユーザーは、データベース内のセキュリティ保護可能なリソースに対する権限を拒否できます。

Examples

A. ユーザーの CONTROL 権限を別のユーザーに対して拒否する

以下の例は、AdventureWorks2025のユーザーCONTROLWanidaユーザーRolandXへの許可を否定しています。

USE AdventureWorks2022;  
DENY CONTROL ON USER::Wanida TO RolandX;  
GO  

B. ロールの VIEW DEFINITION 権限を、GRANT OPTION で権限が許可されたユーザーに対して拒否する

以下の例は、AdventureWorks2025の役割SammamishParkingデータベースユーザーJinghaoLiuに対するVIEW DEFINITION許可を否定しています。 ユーザー CASCADE には、GRANT OPTION を指定して VIEW DEFINITION 権限が許可されているため、JinghaoLiu オプションを指定します。

USE AdventureWorks2022;  
DENY VIEW DEFINITION ON ROLE::SammamishParking   
    TO JinghaoLiu CASCADE;  
GO  

C. ユーザーの IMPERSONATE 権限をアプリケーション ロールに対して拒否する

以下の例は、AdventureWorks2025アプリケーションロールAccountsPayable17HamithaLユーザーへの許可をIMPERSONATE否定しています。

適用対象: SQL Server 2008 (10.0.x) 以降、SQL Database。

USE AdventureWorks2022;  
DENY IMPERSONATE ON USER::HamithaL TO AccountsPayable17;  
GO    

こちらもご覧ください

GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)
REVOKE (データベース プリンシパルの権限の取り消し) (Transact-SQL)
sys.database_principals(Transact-SQL)
sys.database_permissions(Transact-SQL)
ユーザーを作成 (Transact-SQL)
アプリケーションロールの作成 (Transact-SQL)
ロールを作成 (Transact-SQL)
グラント (Transact-SQL)
権限 (データベース エンジン)
プリンシパル (データベース エンジン)