次の方法で共有


sp_setapprole (Transact-SQL)

更新 : 2006 年 7 月 17 日

現在のデータベースのアプリケーション ロールに関連付けられている権限をアクティブにします。

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

構文

sp_setapprole [ @rolename = ] 'role',
        [ @password = ] { encrypt N'password' } 
    |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

引数

  • [ @rolename = ] 'role'
    現在のデータベースで定義されているアプリケーション ロールの名前を指定します。role のデータ型は sysname で、既定値はありません。role は現在のデータベースに存在する必要があります。
  • [ @password = ] { encrypt N'password' }
    アプリケーション ロールをアクティブにするために必要なパスワードを指定します。password のデータ型は sysname で、既定値はありません。password は、ODBC 暗号化関数を使用して暗号化できます。暗号化関数を使用するときには、最初の引用符の前に N を追加して、パスワードを Unicode 文字列に変換する必要があります。

    暗号化オプションは、SqlClient を使用する接続ではサポートされません。

    ms188908.note(ja-jp,SQL.90).gif重要 :
    ODBC 暗号化関数では、暗号化は提供されません。ネットワーク経由で転送されるパスワードを保護する場合は、この関数は使用しないでください。情報をネットワーク経由で転送する場合は、SSL または IPSec を使用します。
  • @encrypt = 'none'
    暗号化を使用しないことを示します。パスワードはプレーン テキストとして SQL Server に渡されます。これは既定のオプションです。
  • @encrypt= 'odbc'
    パスワードを SQL Server データベース エンジンに送信する前に、ODBC で ODBC 暗号化関数を使用してパスワードを暗号化します。これは、ODBC クライアントまたは OLE DB Provider for SQL Server を使用している場合にのみ指定できます。
  • [ @fCreateCookie = ] true | false
    cookie を作成するかどうかを指定します。暗黙的に、true は 1 に変換され、false は 0 に変換されます。
  • [ @cookie = ] @cookie OUTPUT
    Cookie を含める出力パラメータを指定します。cookie が生成されるのは、@fCreateCookie の値が true の場合のみです。データ型は varbinary(8000) です。

リターン コードの値

0 (成功) または 1 (失敗)

解説

アプリケーション ロールは、sp_setapprole を使用してアクティブ化された後、ユーザーがサーバーから切断するか、sp_unsetapprole が実行されるまで、アクティブな状態を維持します。sp_setapprole は、直接の Transact-SQL ステートメントでのみ実行できます。他のストアド プロシージャ内やユーザー定義のトランザクション内では、sp_setapprole は実行できません。

アプリケーション ロールの概要については、「アプリケーション ロール」を参照してください。

ms188908.security(ja-jp,SQL.90).gifセキュリティ メモ :
ネットワーク経由で送信されるアプリケーション ロールのパスワードを保護するには、アプリケーション ロールを有効化するとき常に、暗号化された接続を使用してください。 Microsoft ODBC の encrypt オプションは、SqlClient ではサポートされていません。資格情報を格納する必要がある場合は、Crypto API 関数を使用して暗号化します。パラメータ password は、一方向のハッシュとして格納されます。以前のバージョンの SQL Server と互換性を保つため、sp_addapprole でパスワードの複雑性ポリシーは適用されません。パスワードの複雑性ポリシーを適用するには、CREATE APPLICATION ROLE を使用します。

権限

public のメンバシップと、ロールのパスワード情報が必要です。

A. オプションを暗号化せずにアプリケーション ロールをアクティブにする

次の例では、アプリケーション ロール SalesAppRole をアクティブにします。このロールには、プレーン テキストのパスワード AsDeF00MbXX が設定されており、現在のユーザーが使用するアプリケーション用に特別に設計された権限が与えられています。

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

次の例では、パスワード fdsd896#gfdbfdkjgh700mM が設定されているアプリケーション ロール Sales11 をアクティブ化し、Cookie を作成します。この例では、現在のユーザーの名前が返されます。その後、sp_unsetapprole を実行して元のコンテキストに戻します。

DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user. 
GO 

参照

関連項目

システム ストアド プロシージャ (Transact-SQL)
セキュリティ ストアド プロシージャ (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole (Transact-SQL)

その他の技術情報

コンテキストの切り替え

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • 送信されるアプリケーション ロールのパスワードを暗号化する重要性についての注意書きを追加。