Share via


アプリケーション ロール

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

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

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

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

  1. ユーザーがクライアント アプリケーションを実行します。

  2. クライアント アプリケーションが、SQL Server のインスタンスにユーザーとして接続します。

  3. アプリケーションが、このアプリケーションのみに対して既知であるパスワードを使用して、sp_setapprole ストアド プロシージャを実行します。

  4. アプリケーション ロール名およびパスワードが有効であれば、アプリケーション ロールが有効になります。

  5. この時点で、接続はユーザーの権限を失い、アプリケーション ロールの権限を取得します。

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

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

セキュリティに関する注意セキュリティに関する注意

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