sp_setapprole (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 を使用する接続ではサポートされません。
重要 ODBC 暗号化関数では、暗号化は提供されません。 ネットワーク経由で転送されるパスワードを保護する場合は、この関数は使用しないでください。 情報をネットワーク経由で転送する場合は、SSL または IPSec を使用します。
@encrypt = 'none'
暗号化を使用しないことを示します。 パスワードはプレーンテキストとして SQL Server に渡されます。 これは既定のオプションです。@encrypt= 'odbc'
パスワードを SQL Server データベース エンジンに送信する前に、ODBC で ODBC 暗号化関数を使用してパスワードを暗号化します。 これは、ODBC クライアントまたは OLE DB Provider for SQL Server を使用している場合にのみ指定できます。[ @fCreateCookie = ] true | false
クッキーを作成するかどうかを指定します。 暗黙的に、true は 1 に変換され、 false は 0 に変換されます。[ @cookie = ] @cookie OUTPUT
クッキーを含める出力パラメーターを指定します。 クッキーが生成されるのは、@fCreateCookie の値が true の場合のみです。 データ型は varbinary(8000) です。注 sp_setapprole のクッキーの OUTPUT パラメーターは現在、適切な最大長である varbinary(8000) としてドキュメントに記載されています。 ただし、現在の実装では varbinary(50) を返します。 将来のリリースでクッキーの戻り値のサイズが増えた場合にアプリケーションが引き続き正常に動作するように、アプリケーションでは varbinary(8000) を継続して予約しておく必要があります。
リターン コード値
0 (成功) または 1 (失敗)
説明
アプリケーション ロールが sp_setapprole によりアクティブ化された後は、ユーザーがサーバーから切断するか sp_unsetapprole を実行するまで、そのロールはアクティブのままです。 sp_setapprole は、直接の Transact-SQL ステートメントでのみ実行できます。 他のストアド プロシージャ内やユーザー定義のトランザクション内では、sp_setapprole は実行できません。
アプリケーション ロールの概要については、「アプリケーション ロール」を参照してください。
セキュリティに関する注意 |
---|
ネットワーク経由で送信されるアプリケーション ロールのパスワードを保護するには、アプリケーション ロールを有効化するとき常に、暗号化された接続を使用してください。 Microsoft ODBC の encrypt オプションは、SqlClient ではサポートされていません。 資格情報を格納する必要がある場合は、Crypto API 関数を使用して暗号化します。 パラメーター password は、一方向のハッシュとして格納されます。 以前のバージョンの SQL Server と互換性を保つため、sp_addapprole でパスワードの複雑性ポリシーは適用されません。 パスワードの複雑性ポリシーを適用するには、CREATE APPLICATION ROLE を使用します。 |
権限
public のメンバーシップと、ロールのパスワード情報が必要です。
使用例
A. オプションを暗号化せずにアプリケーション ロールをアクティブにする
次の例では、アプリケーション ロール SalesAppRole をアクティブにします。このロールには、プレーンテキストのパスワード AsDeF00MbXX が設定されており、現在のユーザーが使用するアプリケーション用に特別に設計された権限が与えられています。
EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. クッキーの作成を指定してアプリケーション ロールをアクティブ化し、その後元のコンテキストに戻す
次の例では、パスワード fdsd896#gfdbfdkjgh700mM が設定されているアプリケーション ロール Sales11 をアクティブ化し、クッキーを作成します。 この例では、現在のユーザーの名前が返されます。その後、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)