適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric プレビューの SQL データベース
SQL Server のデータベースに対する権限を付与します。
Syntax
GRANT <permission> [ ,...n ]
TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ 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 を指定すると、次のアクセス許可が許可されます。BACKUP DATABASE、BACKUP LOG、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW。
PRIVILEGES: ANSI-92 準拠のために用意されています。 ALL の動作は変更されません。
WITH GRANT OPTION: 権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。
AS
Database_user: データベース ユーザーを指定します。
Database_role: データベース ロールを指定します。
Application_role適用対象: SQL Server 2008 (10.0.x) 以降、SQL Database
アプリケーション ロールを指定します。
Database_user_mapped_to_Windows_User適用対象: SQL Server 2008 (10.0.x) 以降
Windows ユーザーにマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_Windows_Group適用対象: SQL Server 2008 (10.0.x) 以降
Windows グループにマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_certificate適用対象: SQL Server 2008 (10.0.x) 以降
証明書にマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_asymmetric_key適用対象: SQL Server 2008 (10.0.x) 以降
非対称キーにマップされているデータベース ユーザーを指定します。
Database_user_with_no_login: 対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。
Remarks
Important
権限許可対象ユーザーは、ALTER 権限と REFERENCE 権限を組み合わせて使用することで、データを表示したり、許可されていない関数を実行できる場合があります。 次に例を示します。テーブルの ALTER 権限と関数の REFERENCE 権限を持つユーザーは、関数を介した計算列を作成して実行できます。 この場合、ユーザーには計算列の SELECT 権限も必要です。
データベースは、セキュリティ保護可能なリソースで、権限の階層で親となっているサーバーに含まれています。 次の表に、データベースで許可できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。
Database permission | 権限が含まれるデータベース権限 | 権限が含まれるサーバー権限 |
---|---|---|
データベースの一括処理の管理 適用対象: SQL Database。 |
CONTROL | CONTROL SERVER |
ALTER | CONTROL | 任意のデータベースを変更する |
任意のアプリケーション ロールを変更する | ALTER | CONTROL SERVER |
任意のアセンブリを変更 | ALTER | CONTROL SERVER |
非対称キーを変更する | ALTER | CONTROL SERVER |
任意の証明書を変更する | ALTER | CONTROL SERVER |
任意の列の暗号化キーを変更します。 | ALTER | CONTROL SERVER |
ALTER ANY COLUMN MASTER KEY DEFINITION | ALTER | CONTROL SERVER |
任意の契約を変更する | ALTER | CONTROL SERVER |
任意のデータベース監査の変更 | ALTER | サーバー監査の変更許可 |
ALTER ANY DATABASE DDL TRIGGER | ALTER | CONTROL SERVER |
任意のデータベースイベント通知を変更する | ALTER | 任意のイベント通知を変更する |
ALTER ANY DATABASE イベント セッション 適用対象: SQL Database。 |
ALTER | 任意のイベントセッションを変更する |
いずれのデータベース スコープ設定も変更する 適用対象: SQL Server 2016 (13.x) 以降、SQL Database。 |
CONTROL | CONTROL SERVER |
任意のデータスペースを変更する | ALTER | CONTROL SERVER |
すべての外部データ ソースを変更します。 | ALTER | CONTROL SERVER |
任意の外部のファイル形式を変更します。 | ALTER | CONTROL SERVER |
ALTER ANY EXTERNAL LIBRARY 適用対象: SQL Server 2017 (14.x) |
CONTROL | CONTROL SERVER |
任意のフルテキストカタログを変更 | ALTER | CONTROL SERVER |
任意のマスクを変更します。 | CONTROL | CONTROL SERVER |
任意のメッセージ型を変更する | ALTER | CONTROL SERVER |
任意のリモートサービスバインディングを変更する | ALTER | CONTROL SERVER |
あらゆるロールを変更する | ALTER | CONTROL SERVER |
任意のルートを変更 | ALTER | CONTROL SERVER |
任意のスキーマを変更する | ALTER | CONTROL SERVER |
すべてのセキュリティ ポリシーを変更します。 適用対象: Azure SQL データベース |
CONTROL | CONTROL SERVER |
あらゆる感度分類を変更する 適用対象: SQL Server (SQL Server 2019 以降)、Azure SQL Database。 |
CONTROL | CONTROL SERVER |
任意のサービスを変更する | ALTER | CONTROL SERVER |
対称鍵の変更可能 | ALTER | CONTROL SERVER |
任意のユーザーを変更する | ALTER | CONTROL SERVER |
AUTHENTICATE | CONTROL | AUTHENTICATE SERVER |
BACKUP DATABASE | CONTROL | CONTROL SERVER |
BACKUP LOG | CONTROL | CONTROL SERVER |
CHECKPOINT | CONTROL | CONTROL SERVER |
CONNECT | CONNECT REPLICATION | CONTROL SERVER |
CONNECT REPLICATION | CONTROL | CONTROL SERVER |
CONTROL | CONTROL | CONTROL SERVER |
CREATE AGGREGATE | ALTER | CONTROL SERVER |
外部ライブラリを作成する 適用対象: SQL Server 2017 (14.x) |
CONTROL | CONTROL SERVER |
CREATE ASSEMBLY | 任意のアセンブリを変更 | CONTROL SERVER |
非対称キーを作成する | 非対称キーを変更する | CONTROL SERVER |
CREATE CERTIFICATE | 任意の証明書を変更する | CONTROL SERVER |
CREATE CONTRACT | 任意の契約を変更する | CONTROL SERVER |
CREATE DATABASE | CONTROL | 任意のデータベースを作成する |
データベースDDLイベント通知の作成 | 任意のデータベースイベント通知を変更する | CREATE DDL イベント通知 |
CREATE DEFAULT | ALTER | CONTROL SERVER |
フルテキスト カタログの作成 | 任意のフルテキストカタログを変更 | CONTROL SERVER |
CREATE FUNCTION | ALTER | CONTROL SERVER |
メッセージの種類を作成する | 任意のメッセージ型を変更する | CONTROL SERVER |
CREATE PROCEDURE | ALTER | CONTROL SERVER |
CREATE QUEUE | ALTER | CONTROL SERVER |
リモート サービス バインディングを作成する | 任意のリモートサービスバインディングを変更する | CONTROL SERVER |
CREATE ROLE | あらゆるロールを変更する | CONTROL SERVER |
CREATE ROUTE | 任意のルートを変更 | CONTROL SERVER |
CREATE RULE | ALTER | CONTROL SERVER |
CREATE SCHEMA | 任意のスキーマを変更する | CONTROL SERVER |
CREATE SERVICE | 任意のサービスを変更する | CONTROL SERVER |
対称キーの作成 | 対称鍵の変更可能 | CONTROL SERVER |
CREATE SYNONYM | ALTER | CONTROL SERVER |
CREATE TABLE | ALTER | CONTROL SERVER |
CREATE TYPE | ALTER | CONTROL SERVER |
CREATE VIEW | ALTER | CONTROL SERVER |
XML スキーマ コレクションの作成 | ALTER | CONTROL SERVER |
DELETE | CONTROL | CONTROL SERVER |
EXECUTE | CONTROL | CONTROL SERVER |
外部エンドポイントを実行する 適用対象: Azure SQL データベース |
CONTROL | CONTROL SERVER |
EXECUTE ANY EXTERNAL SCRIPT 適用対象: SQL Server 2016 (13.x) |
CONTROL | CONTROL SERVER |
EXECUTE EXTERNAL SCRIPT 適用対象: SQL Server 2019 (15.x)。 |
外部スクリプトを実行する | CONTROL SERVER |
INSERT | CONTROL | CONTROL SERVER |
データベース接続の終了 適用対象: Azure SQL データベース |
CONTROL | 任意の接続を変更する |
REFERENCES | CONTROL | CONTROL SERVER |
SELECT | CONTROL | CONTROL SERVER |
SHOWPLAN | CONTROL | ALTER TRACE |
クエリ通知をサブスクライブする | CONTROL | CONTROL SERVER |
TAKE OWNERSHIP | CONTROL | CONTROL SERVER |
UNMASK | CONTROL | CONTROL SERVER |
UPDATE | CONTROL | CONTROL SERVER |
列の暗号化キーの定義を表示します。 | CONTROL | 任意の定義を表示 |
任意の列のマスター_キーの定義の表示 | CONTROL | 任意の定義を表示 |
データベースの状態の表示 | CONTROL | サーバー状態を表示 |
VIEW DEFINITION | CONTROL | 任意の定義を表示 |
Permissions
権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。
AS オプションを使用している場合は、次の追加要件があります。
AS granting_principal | 必要な追加権限 |
---|---|
Database user | ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
Windows ログインにマップされているデータベース ユーザー | ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
Windows グループにマップされているデータベース ユーザー | Windows グループのメンバーシップ、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
証明書にマップされているデータベース ユーザー | db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
非対称キーにマップされているデータベース ユーザー | db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
サーバー プリンシパルにマップされていないデータベース ユーザー | ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
Database role | ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
Application role | ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。 |
オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。 セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。
sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。
Examples
A. テーブルを作成する権限を許可する
次の例では、CREATE TABLE
データベースでの AdventureWorks
権限を、ユーザー MelanieK
に対して許可します。
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B. SHOWPLAN 権限をアプリケーション ロールに許可する
次の例では、SHOWPLAN
データベースでの AdventureWorks2022
権限を、アプリケーション ロール AuditMonitor
に対して許可します。
適用対象: SQL Server 2008 (10.0.x)、SQL Database
USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO
C. GRANT OPTION を指定して CREATE VIEW 権限を許可する
次の例では、ユーザー CREATE VIEW
に対して、AdventureWorks2022
データベースでの CarmineEs
権限を許可すると共に、他のプリンシパルに CREATE VIEW
を許可する権利を与えます。
USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO
D. データベース ユーザーに CONTROL 権限を許可する
次の例では、CONTROL
データベースでの AdventureWorks2022
権限を、データベース ユーザー Sarah
に対して許可します。 ユーザーはデータベース内に存在する必要があり、コンテキストはデータベースに設定されている必要があります。
USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO