アプリケーション ロール
アプリケーション ロールは、ユーザーのような独自の特権でアプリケーションを実行できるようにするデータベース プリンシパルです。アプリケーション ロールを使用すると、特定のアプリケーションから接続しているユーザーに対してのみ、特定のデータへのアクセスを許可できます。アプリケーション ロールは、データベース ロールとは異なり、既定ではメンバが含まれておらず、アクティブではありません。アプリケーション ロールは、両方の認証モードで機能します。アプリケーション ロールは sp_setapprole を使用してアクティブ化され、これにはパスワードが必要です。アプリケーション ロールはデータベース レベルのプリンシパルであるため、他のデータベースへのアクセスは、そのデータベースの guest に許可された権限を介してのみ可能になります。したがって、guest が無効になったデータベースには、他のデータベースのアプリケーション ロールからアクセスできなくなります。
SQL Server 2005 では、アプリケーション ロールは、サーバー レベルのプリンシパルと関連付けられていないため、サーバー レベルのメタデータにはアクセスできません。この制限を無効にして、アプリケーション ロールがサーバー レベルのメタデータにアクセスできるようにするには、グローバル フラグ 4616 を設定します。詳細については、「トレース フラグ (Transact-SQL)」および「DBCC TRACEON (Transact-SQL)」を参照してください。
アプリケーション ロールを使用した接続
アプリケーション ロールがセキュリティ コンテキストを切り替える処理を行う手順は次のとおりです。
- ユーザーがクライアント アプリケーションを実行します。
- クライアント アプリケーションが、SQL Server のインスタンスにユーザーとして接続します。
- アプリケーションが、このアプリケーションのみに対して既知であるパスワードを使用して、sp_setapprole ストアド プロシージャを実行します。
- アプリケーション ロール名およびパスワードが有効であれば、アプリケーション ロールがアクティブになります。
- この時点で、接続はユーザーの権限を失い、アプリケーション ロールの権限を取得します。
アプリケーション ロールを使用して取得した権限は、接続している間のみ有効です。
前のバージョンの SQL Server では、アプリケーション ロールをアクティブにした後にユーザーが元のセキュリティ コンテキストを再取得するには、SQL Server を切断して再接続する以外にありませんでした。SQL Server 2005 では、アプリケーション ロールをアクティブにする前に、コンテキスト情報が含まれている Cookie を作成する新しいオプションが sp_setapprole にあります。sp_unsetapprole で Cookie を使用すると、元のコンテキストにセッションを戻すことができます。この新しいオプションの詳細と例については、「sp_setapprole (Transact-SQL)」を参照してください。
セキュリティ メモ : |
---|
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)