Compartilhar via


Funções de aplicativo

Uma função de aplicativo é uma entidade de banco de dados que permite que um aplicativo seja executado com suas próprias permissões, semelhantes às de um usuário. Você pode usar funções de aplicativo para habilitar o acesso a dados específicos somente aos usuários que se conectam por meio de um aplicativo específico. Ao contrário das funções de banco de dados, as funções de aplicativo não contêm membros e são inativas por padrão. As funções de aplicativo funcionam com ambos os modos de autenticação. As funções de aplicativo são habilitadas usando sp_setapprole, o que requer uma senha. Como as funções de aplicativo são uma entidade de segurança no nível do banco de dados, elas só podem acessar outros bancos de dados por meio de permissões concedidas nesses bancos de dados para guest. Portanto, qualquer banco de dados no qual o convidado foi desabilitado estará inacessível para funções de aplicativo em outros bancos de dados.

No SQL Server, as funções de aplicativo não podem acessar metadados no nível do servidor porque não estão associadas a um principal de segurança do servidor. Para desabilitar essa restrição e, assim, permitir que as funções de aplicativo acessem metadados no nível do servidor, defina o sinalizador global 4616. Para obter mais informações, consulte Sinalizadores de Rastreamento (Transact-SQL) e DBCC TRACEON (Transact-SQL).

Conectando-se com uma função de aplicativo

As etapas a seguir compõem o processo pelo qual uma função de aplicativo alterna os contextos de segurança:

  1. Um usuário executa um aplicativo cliente.

  2. O aplicativo cliente se conecta a uma instância do SQL Server como o usuário.

  3. Em seguida, o aplicativo executa o procedimento armazenado sp_setapprole com uma senha conhecida apenas para o aplicativo.

  4. Se o nome da função do aplicativo e a senha forem válidos, a função de aplicativo será habilitada.

  5. Neste ponto, a conexão perde as permissões do usuário e assume as permissões da função de aplicativo.

As permissões adquiridas por meio da função de aplicativo permanecem em vigor durante a conexão.

Em versões anteriores do SQL Server, a única maneira de um usuário solicitar novamente seu contexto de segurança original depois de iniciar uma função de aplicativo é desconectar e reconectar-se ao SQL Server. A partir do SQL Server 2005, sp_setapprole tem uma opção que cria um cookie. O cookie contém informações de contexto antes da função de aplicativo ser habilitada. O cookie pode ser usado por sp_unsetapprole para reverter a sessão para seu contexto original. Para obter informações sobre essa nova opção e um exemplo, consulte sp_setapprole (Transact-SQL).

Importante

A opção de criptografia ODBC não tem suporte do SqlClient. Quando você estiver transmitindo informações confidenciais em uma rede, use sSL (Secure Sockets Layer) ou IPsec para criptografar o canal. Se você precisar persistir as credenciais no aplicativo cliente, criptografe as credenciais usando as funções de API de criptografia. No SQL Server 2005 e versões posteriores, a senha do parâmetro é armazenada como um hash unidirecional.

Crie uma função de aplicativo. Criar uma função de aplicativo e CRIAR FUNÇÃO DE APLICATIVO (Transact-SQL)
Altere uma função de aplicativo. ALTER APPLICATION ROLE (Transact-SQL)
Excluir uma função de aplicativo. DROP APPLICATION ROLE (Transact-SQL)
Usando uma função de aplicativo. sp_setapprole (Transact-SQL)

Consulte Também

Protegendo o SQL Server