GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)

データベース ユーザー、データベース ロール、またはアプリケーション ロールに対する権限を許可します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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 

引数

  • permission
    データベース プリンシパルに対して許可できる権限を指定します。権限の一覧については、後の「解説」を参照してください。
  • USER ::database_user
    権限を許可するユーザーのクラスと名前を指定します。スコープ修飾子 (
    ::
    ) が必要です。
  • ROLE ::database_role
    権限を許可するロールのクラスと名前を指定します。スコープ修飾子 (
    ::
    ) が必要です。
  • APPLICATION ROLE ::application_role
    権限を許可するアプリケーション ロールのクラスと名前を指定します。スコープ修飾子 (
    ::
    ) が必要です。
  • WITH GRANT OPTION
    権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。
  • AS <database_principal>
    このクエリを実行するプリンシパルが権限を許可する権利を取得した、元のプリンシパルを指定します。
  • Database_user
    データベース ユーザーを指定します。
  • Database_role
    データベース ロールを指定します。
  • Application_role
    アプリケーション ロールを指定します。
  • 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
    対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。

解説

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

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

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

データベース ユーザー権限 権限が含まれるデータベース ユーザー権限 権限が含まれるデータベース権限

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

権限

権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。

AS オプションを使用する場合は、次の追加要件があります。

AS granting_principal 必要な追加権限

データベース ユーザー

ユーザーに対する 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 固定サーバー ロールのメンバシップ。

データベース ロール

ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバシップ、db_owner 固定データベース ロールのメンバシップ、または sysadmin 固定サーバー ロールのメンバシップ。

アプリケーション ロール

ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバシップ、db_owner 固定データベース ロールのメンバシップ、または sysadmin 固定サーバー ロールのメンバシップ。

セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。

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

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

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

USE AdventureWorks;
GRANT CONTROL ON USER::Wanida TO RolandX;
GO

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

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

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

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

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

USE AdventureWorks;
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO  

参照

関連項目

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

その他の技術情報

権限
プリンシパル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手