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

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

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

Transact-SQL 構文表記規則

構文

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   

引数

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

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

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

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

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

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

AS <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
対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。

解説

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

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

データベース ユーザー権限 権限が含まれるデータベース ユーザー権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
IMPERSONATE CONTROL CONTROL
ALTER CONTROL ALTER ANY USER
VIEW DEFINITION CONTROL VIEW DEFINITION

データベース ロール権限

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

データベース ロール権限 権限が含まれるデータベース ロール権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
TAKE OWNERSHIP CONTROL CONTROL
ALTER CONTROL ALTER ANY ROLE
VIEW DEFINITION CONTROL VIEW DEFINITION

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

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

アプリケーション ロール権限 権限が含まれるアプリケーション ロール権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
ALTER CONTROL ALTER ANY APPLICATION ROLE
VIEW DEFINITION CONTROL VIEW DEFINITION

アクセス許可

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

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

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

次の例では、AdventureWorks2022 ユーザー WanidaCONTROL アクセス許可を、ユーザー RolandX に対して拒否します。

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

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

次の例では、AdventureWorks2022 ロール SammamishParkingVIEW DEFINITION アクセス許可を、データベース ユーザー JinghaoLiu に対して拒否します。 ユーザー CASCADE には、GRANT OPTION を指定して VIEW DEFINITION 権限が許可されているため、JinghaoLiu オプションを指定します。

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

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

次の例では、ユーザー HamithaLIMPERSONATE セス許可権限を、AdventureWorks2022 アプリケーション ロール AccountsPayable17 に対して拒否します。

適用対象: 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)
CREATE USER (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
CREATE ROLE (Transact-SQL)
GRANT (Transact-SQL)
権限 (データベース エンジン)
プリンシパル (データベース エンジン)