アプリケーション ロールApplication Roles

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

アプリケーション ロールは、ユーザーのような独自の権限でアプリケーションを実行できるようにするデータベース プリンシパルです。An application role is a database principal that enables an application to run with its own, user-like permissions. アプリケーション ロールを使用すると、特定のアプリケーションから接続しているユーザーに対してのみ、特定のデータへのアクセスを有効にできます。You can use application roles to enable access to specific data to only those users who connect through a particular application. アプリケーション ロールは、データベース ロールとは異なり、既定ではメンバーが含まれておらず、アクティブではありません。Unlike database roles, application roles contain no members and are inactive by default. アプリケーション ロールは、両方の認証モードで機能します。Application roles work with both authentication modes. アプリケーション ロールは sp_setapproleを使用して有効化され、これにはパスワードが必要です。Application roles are enabled by using sp_setapprole, which requires a password. アプリケーション ロールはデータベース レベルのプリンシパルであるため、他のデータベースへのアクセスは、そのデータベースの guestに許可された権限を介してのみ可能になります。Because application roles are a database-level principal, they can access other databases only through permissions granted in those databases to guest. したがって、 guest が無効になったデータベースには、他のデータベースのアプリケーション ロールからアクセスできなくなります。Therefore, any database in which guest has been disabled will be inaccessible to application roles in other databases.

SQL ServerSQL Serverでは、アプリケーション ロールは、サーバー レベルのプリンシパルと関連付けられていないため、サーバー レベルのメタデータにはアクセスできません。In SQL ServerSQL Server, application roles cannot access server-level metadata because they are not associated with a server-level principal. この制限を無効にして、アプリケーション ロールがサーバー レベルのメタデータにアクセスできるようにするには、グローバル フラグ 4616 を設定します。To disable this restriction and thereby allow application roles to access server-level metadata, set the global flag 4616. 詳細については、「トレース フラグ (Transact-SQL)」および「DBCC TRACEON (Transact-SQL)」を参照してください。For more information, see Trace Flags (Transact-SQL) and DBCC TRACEON (Transact-SQL).

アプリケーション ロールを使用した接続Connecting with an Application Role

アプリケーション ロールがセキュリティ コンテキストを切り替える処理を行う手順は次のとおりです。The following steps make up the process by which an application role switches security contexts:

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

  2. クライアント アプリケーションが、 SQL ServerSQL Server のインスタンスにユーザーとして接続します。The client application connects to an instance of SQL ServerSQL Server as the user.

  3. アプリケーションが、このアプリケーションのみに対して既知であるパスワードを使用して、 sp_setapprole ストアド プロシージャを実行します。The application then executes the sp_setapprole stored procedure with a password known only to the application.

  4. アプリケーション ロール名およびパスワードが有効であれば、アプリケーション ロールが有効になります。If the application role name and password are valid, the application role is enabled.

  5. この時点で、接続はユーザーの権限を失い、アプリケーション ロールの権限を取得します。At this point the connection loses the permissions of the user and assumes the permissions of the application role.

アプリケーション ロールを使用して取得した権限は、接続している間のみ有効です。The permissions acquired through the application role remain in effect for the duration of the connection.

前のバージョンの SQL ServerSQL Serverでは、アプリケーション ロールの開始後にユーザーが元のセキュリティ コンテキストを再取得するには、 SQL ServerSQL Serverを切断して再接続する以外にありませんでした。In earlier versions of SQL ServerSQL Server, the only way for a user to reacquire its original security context after starting an application role is to disconnect and reconnect to SQL ServerSQL Server. SQL Server 2005 (9.x)SQL Server 2005 (9.x)以降の sp_setapprole には、クッキーを作成するオプションがあります。Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), sp_setapprole has an option that creates a cookie. クッキーには、アプリケーション ロールが有効になる前のコンテキスト情報が格納されます。The cookie contains context information before the application role is enabled. sp_unsetapprole でクッキーを使用すると、元のコンテキストにセッションを戻すことができます。The cookie can be used by sp_unsetapprole to revert the session to its original context. この新しいオプションの詳細と例については、「 sp_setapprole (Transact-SQL)に許可された権限を介してのみ可能になります。For information about this new option and an example, see sp_setapprole (Transact-SQL).

重要

SqlClient では、ODBC encryptオプションはサポートされていません。The ODBC encrypt option is not supported by SqlClient. 機密情報をネットワーク経由で送信する場合、SSL (Secure Sockets Layer) または IPsec を使用してチャネルを暗号化します。When you are transmitting confidential information over a network, use Secure Sockets Layer (SSL) or IPsec to encrypt the channel. クライアント アプリケーション内に資格情報を保持しておく必要がある場合、暗号化 API (Crypto API) 関数を使用して資格情報を暗号化します。If you must persist credentials in the client application, encrypt the credentials by using the crypto API functions. SQL Server 2005 (9.x)SQL Server 2005 (9.x) 以降のバージョンでは、パラメーター password は一方向のハッシュとして格納されます。In SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later versions, the parameter password is stored as a one-way hash.

アプリケーション ロールを作成する。Create an application role. アプリケーション ロールの作成および CREATE APPLICATION ROLE (Transact-SQL)Create an Application Role and CREATE APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを変更する。Alter an application role. ALTER APPLICATION ROLE (Transact-SQL)ALTER APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを削除する。Delete an application role. DROP APPLICATION ROLE (Transact-SQL)DROP APPLICATION ROLE (Transact-SQL)
アプリケーション ロールを使用する。Using an application role. sp_setapprole (Transact-SQL)sp_setapprole (Transact-SQL)

参照See Also

SQL Server の保護Securing SQL Server