응용 프로그램 역할Application Roles

응용 프로그램 역할은 응용 프로그램이 사용자와 같은 자체 사용 권한으로 실행할 수 있도록 설정하는 데이터베이스 보안 주체입니다.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 2005SQL Server 2005부터는 sp_setapprole 에서 쿠키를 만들 수 있는 옵션을 제공합니다.Beginning with SQL Server 2005SQL Server 2005, 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).

중요

ODBC encrypt 옵션은 SqlClient에서 지원되지 않습니다.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. 클라이언트 응용 프로그램의 자격 증명을 유지해야 하는 경우에는 crypto API 함수를 사용하여 자격 증명을 암호화하십시오.If you must persist credentials in the client application, encrypt the credentials by using the crypto API functions. SQL Server 2005SQL Server 2005 이상 버전에서 password 매개 변수는 단방향 해시로 저장됩니다.In SQL Server 2005SQL Server 2005 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