アプリケーション ロール

アプリケーション ロールは、ユーザーのような独自の特権でアプリケーションを実行できるようにするデータベース プリンシパルです。アプリケーション ロールを使用すると、特定のアプリケーションから接続しているユーザーに対してのみ、特定のデータへのアクセスを許可できます。アプリケーション ロールは、データベース ロールとは異なり、既定ではメンバが含まれておらず、アクティブではありません。アプリケーション ロールは、両方の認証モードで機能します。アプリケーション ロールは sp_setapprole を使用してアクティブ化され、これにはパスワードが必要です。アプリケーション ロールはデータベース レベルのプリンシパルであるため、他のデータベースへのアクセスは、そのデータベースの guest に許可された権限を介してのみ可能になります。したがって、guest が無効になったデータベースには、他のデータベースのアプリケーション ロールからアクセスできなくなります。

SQL Server 2005 では、アプリケーション ロールは、サーバー レベルのプリンシパルと関連付けられていないため、サーバー レベルのメタデータにはアクセスできません。この制限を無効にして、アプリケーション ロールがサーバー レベルのメタデータにアクセスできるようにするには、グローバル フラグ 4616 を設定します。詳細については、「トレース フラグ (Transact-SQL)」および「DBCC TRACEON (Transact-SQL)」を参照してください。

アプリケーション ロールを使用した接続

アプリケーション ロールがセキュリティ コンテキストを切り替える処理を行う手順は次のとおりです。

  1. ユーザーがクライアント アプリケーションを実行します。
  2. クライアント アプリケーションが、SQL Server のインスタンスにユーザーとして接続します。
  3. アプリケーションが、このアプリケーションのみに対して既知であるパスワードを使用して、sp_setapprole ストアド プロシージャを実行します。
  4. アプリケーション ロール名およびパスワードが有効であれば、アプリケーション ロールがアクティブになります。
  5. この時点で、接続はユーザーの権限を失い、アプリケーション ロールの権限を取得します。

アプリケーション ロールを使用して取得した権限は、接続している間のみ有効です。

前のバージョンの SQL Server では、アプリケーション ロールをアクティブにした後にユーザーが元のセキュリティ コンテキストを再取得するには、SQL Server を切断して再接続する以外にありませんでした。SQL Server 2005 では、アプリケーション ロールをアクティブにする前に、コンテキスト情報が含まれている Cookie を作成する新しいオプションが sp_setapprole にあります。sp_unsetapprole で Cookie を使用すると、元のコンテキストにセッションを戻すことができます。この新しいオプションの詳細と例については、「sp_setapprole (Transact-SQL)」を参照してください。

ms190998.security(ja-jp,SQL.90).gifセキュリティ メモ :
SqlClient では、Microsoft ODBC encrypt オプションはサポートされていません。機密情報をネットワーク経由で送信する場合、SSL (Secure Sockets Layer) または IPSec を使用してチャネルを暗号化します。クライアント アプリケーション内に資格情報を保持しておく必要がある場合、暗号化 API (Crypto API) 関数を使用して資格情報を暗号化します。SQL Server 2005 では、パラメータ password が一方向のハッシュとして格納されます。

参照

概念

コンテキストの切り替えについて

その他の技術情報

sp_setapprole (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手