DENY データベース権限(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

SQL Server のデータベースに対する権限を拒否します。

Transact-SQL 構文表記規則

Syntax

DENY <permission> [ ,...n ]
    TO <database_principal> [ ,...n ] [ CASCADE ]
    [ AS <database_principal> ]

<permission> ::=
    permission | ALL [ PRIVILEGES ]

<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: データベースで取り消すことができる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

ALL: このオプションに設定しても、可能な権限がすべて拒否されるわけではありません。 ALLを拒否することは、 BACKUPDATABASE、 BACKUP LOG、 CREATE DATABASE、 CREATE DEFAULT、 CREATE FUNCTION、 CREATE PROCEDURE、 CREATE RULE、 CREATE TABLE、 CREATE VIEWの権限を拒否することと同等です。

PRIVILEGES: ISO 準拠のために用意されています。 ALL の動作は変更されません。

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

Remarks

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

データベース許可 権限が含まれるデータベース権限 権限が含まれるサーバー権限
一括操作 DATABASE 管理する
適用対象: SQL Database。
CONTROL 制御サーバー
ALTER CONTROL "任意の DATABASE を変更"
"任意の APPLICATION ROLE を変更" ALTER 制御サーバー
"任意の ASSEMBLY を変更" ALTER 制御サーバー
"任意の ASYMMETRIC KEY を変更" ALTER 制御サーバー
"任意の CERTIFICATE を変更" ALTER 制御サーバー
"任意の COLUMN ENCRYPTION KEY を変更" ALTER 制御サーバー
COLUMN MASTER KEY定義を変える ALTER 制御サーバー
"任意の CONTRACT を変更" ALTER 制御サーバー
監査 DATABASE を変更する ALTER "任意の SERVER AUDIT を変更"
DDL DATABASE 変更 TRIGGER ALTER 制御サーバー
ALTER ANY(変えて) DATABASEEVENT NOTIFICATION ALTER "任意の EVENT NOTIFICATION を変更"
ALTER ANY(変えて) DATABASEEVENT SESSION
適用対象: Azure SQL データベース
ALTER "任意の EVENT SESSION を変更"
"任意の DATABASE SCOPED CONFIGURATION を変更"
適用対象: SQL Server 2016 (13.x) 以降、SQL Database。
CONTROL 制御サーバー
任意のデータスペースを変更する ALTER 制御サーバー
"任意の EXTERNAL DATA SOURCE を変更" ALTER 制御サーバー
"任意の EXTERNAL FILE FORMAT を変更" ALTER 制御サーバー
"任意の EXTERNAL LIBRARY を変更"
適用対象: SQL Server 2017 (14.x)
CONTROL 制御サーバー
"任意の FULLTEXT CATALOG を変更" ALTER 制御サーバー
任意のマスクを変更します。 CONTROL 制御サーバー
"任意の MESSAGE TYPE を変更" ALTER 制御サーバー
"任意の REMOTE SERVICE BINDING を変更" ALTER 制御サーバー
"任意の ROLE を変更" ALTER 制御サーバー
"任意の ROUTE を変更" ALTER 制御サーバー
"任意の SECURITY POLICY を変更"
適用対象: SQL Server 2016 (13.x) 以降、Azure SQL データベース。
CONTROL 制御サーバー
"任意の SCHEMA を変更" ALTER 制御サーバー
"任意の SERVICE を変更" ALTER 制御サーバー
"任意の SYMMETRIC KEY を変更" ALTER 制御サーバー
"任意の USER を変更" ALTER 制御サーバー
AUTHENTICATE CONTROL サーバーの認証
BACKUP DATABASE CONTROL 制御サーバー
BACKUP ログ CONTROL 制御サーバー
CHECKPOINT CONTROL 制御サーバー
CONNECT コネクト・レプリケーション 制御サーバー
コネクト・レプリケーション CONTROL 制御サーバー
CONTROL CONTROL 制御サーバー
CREATE AGGREGATE ALTER 制御サーバー
CREATE ASSEMBLY "任意の ASSEMBLY を変更" 制御サーバー
CREATE ASYMMETRIC KEY "任意の ASYMMETRIC KEY を変更" 制御サーバー
CREATE CERTIFICATE "任意の CERTIFICATE を変更" 制御サーバー
CREATE CONTRACT "任意の CONTRACT を変更" 制御サーバー
CREATE DATABASE CONTROL 何でも作成してください DATABASE
CREATE DATABASE Ddl EVENT NOTIFICATION ALTER ANY(変えて) DATABASEEVENT NOTIFICATION DDLを作成 EVENT NOTIFICATION
CREATE DEFAULT ALTER 制御サーバー
CREATE FULLTEXT CATALOG "任意の FULLTEXT CATALOG を変更" 制御サーバー
CREATE FUNCTION ALTER 制御サーバー
CREATE MESSAGE TYPE "任意の MESSAGE TYPE を変更" 制御サーバー
CREATE PROCEDURE ALTER 制御サーバー
CREATE QUEUE ALTER 制御サーバー
CREATE REMOTE SERVICE BINDING "任意の REMOTE SERVICE BINDING を変更" 制御サーバー
CREATE ROLE "任意の ROLE を変更" 制御サーバー
CREATE ROUTE "任意の ROUTE を変更" 制御サーバー
CREATE RULE ALTER 制御サーバー
CREATE SCHEMA "任意の SCHEMA を変更" 制御サーバー
CREATE SERVICE "任意の SERVICE を変更" 制御サーバー
CREATE SYMMETRIC KEY "任意の SYMMETRIC KEY を変更" 制御サーバー
CREATE SYNONYM ALTER 制御サーバー
CREATE TABLE ALTER 制御サーバー
CREATE TYPE ALTER 制御サーバー
CREATE VIEW ALTER 制御サーバー
CREATE XML SCHEMA COLLECTION ALTER 制御サーバー
DELETE CONTROL 制御サーバー
EXECUTE CONTROL 制御サーバー
EXECUTE ANY EXTERNAL SCRIPT
適用対象: SQL Server 2016 (13.x)
CONTROL 制御サーバー
INSERT CONTROL 制御サーバー
接続 DATABASE 切断
適用対象: Azure SQL データベース
CONTROL 任意の接続を変更する
REFERENCES CONTROL 制御サーバー
SELECT CONTROL 制御サーバー
SHOWPLAN CONTROL ALTER TRACE(トレースの変更権限)
クエリ通知をサブスクライブする CONTROL 制御サーバー
所有権 CONTROL 制御サーバー
UNMASK CONTROL 制御サーバー
UPDATE CONTROL 制御サーバー
VIEW どんな人でも COLUMN ENCRYPTION KEY CONTROL VIEW 任意の定義
VIEW 任意の MASTER KEY 定義 CONTROL VIEW 任意の定義
VIEW DATABASE 州 CONTROL VIEW サーバーの状態
VIEW 定義 CONTROL VIEW 任意の定義

Permissions

このステートメントを実行するプリンシパル (または AS オプションで指定したプリンシパル) には、データベースに対する CONTROL 権限、またはデータベースに対する CONTROL 権限を暗黙的に許可する上位レベルの権限が与えられている必要があります。

AS オプションを使用する場合、指定するプリンシパルはデータベースを所有している必要があります。

Examples

A. 証明書を作成する権限を拒否する

次の例では、CREATE CERTIFICATE データベースでの AdventureWorks2025 権限を、ユーザー MelanieK に対して拒否します。

USE AdventureWorks2022;
DENY CREATE CERTIFICATE TO MelanieK;
GO

B. アプリケーション ロールに対して REFERENCES 権限を拒否する

次の例では、REFERENCES データベースでの AdventureWorks2025 権限を、アプリケーション ロール AuditMonitor に対して拒否します。

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

USE AdventureWorks2022;
DENY REFERENCES TO AuditMonitor;
GO

C. カスケードによる VIEW 定義の否定

次の例では、VIEW DEFINITION データベースでの AdventureWorks2025 権限を、ユーザー CarmineEs と、CarmineEsVIEW DEFINITION 権限を許可したすべてのプリンシパルに対して拒否します。

USE AdventureWorks2022;
DENY VIEW DEFINITION TO CarmineEs CASCADE;
GO

こちらもご覧ください