次の方法で共有


GRANT (データベース プリンシパルの権限の許可) (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

GRANT permission [ ,...n ]    
    ON   
    {  [ USER :: database_user ]  
     | [ ROLE :: database_role ]  
     | [ APPLICATION ROLE :: application_role ]  
    }  
    TO <database_principal> [ ,...n ]  
       [ WITH GRANT OPTION ]  
       [ 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
データベース プリンシパルに対して許可できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

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

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

アプリケーション ロール ::application_role

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

WITH GRANT オプション
権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。

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

データベース プリンシパルに関する情報は、sys.database_principals カタログ ビューで確認できます。 データベース レベルの権限に関する情報は、sys.database_permissions カタログ ビューで確認できます。

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

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

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

データベース ロール権限

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

データベース ロール権限 権限が含まれるデータベース ロール権限 権限が含まれるデータベース権限
CONTROL CONTROL CONTROL
TAKE OWNERSHIP CONTROL CONTROL
ALTER CONTROL あらゆるロールを変更する
VIEW DEFINITION CONTROL VIEW DEFINITION

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

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

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

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 権限があるプリンシパルは、そのリソースの権限を許可できます。

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

Examples

A. ユーザーに対する CONTROL 権限を別のユーザーに許可する

次の例では、CONTROL のユーザー AdventureWorks2022 に対する Wanida 権限を、ユーザー RolandX に許可します。

GRANT CONTROL ON USER::Wanida TO RolandX;  
GO  

B. ロールに対する VIEW DEFINITION 権限を、GRANT OPTION を指定してユーザーに許可する

次の例では、VIEW DEFINITION のロール AdventureWorks2022 に対する SammamishParking 権限を、GRANT OPTION を指定して、データベース ユーザー JinghaoLiu に許可します。

GRANT VIEW DEFINITION ON ROLE::SammamishParking   
    TO JinghaoLiu WITH GRANT OPTION;  
GO  

C. ユーザーに対する IMPERSONATE 権限をアプリケーション ロールに許可する

次の例では、ユーザー IMPERSONATE に対する HamithaL 権限を、AdventureWorks2022 のアプリケーション ロール AccountsPayable17 に許可します。

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

GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;  
GO    

See Also

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