アプリケーション ロール

適用対象:データベース Azure SQL Managed Instance Azure SQL SQL Server (サポートされているすべてのバージョン)

アプリケーション ロールは、ユーザーのような独自の権限でアプリケーションを実行できるようにするデータベース プリンシパルです。 アプリケーション ロールを使用すると、特定のアプリケーションから接続しているユーザーに対してのみ、特定のデータへのアクセスを有効にできます。 アプリケーション ロールは、データベース ロールとは異なり、既定ではメンバーが含まれておらず、アクティブではありません。 アプリケーション ロールは 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 (9.x)以降の sp_setapprole には、クッキーを作成するオプションがあります。 クッキーには、アプリケーション ロールが有効になる前のコンテキスト情報が格納されます。 sp_unsetapprole でクッキーを使用すると、元のコンテキストにセッションを戻すことができます。 この新しいオプションと例については、「 sp_setapprole (Transact-SQL)」を参照してください。

重要

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

タスク Type
アプリケーション ロールを作成する。 アプリケーション ロールの作成CREATE APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを変更する。 ALTER APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを削除する。 DROP APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを使用する。 sp_setapprole (Transact-SQL)

参照

SQL Server の保護