Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Um papel de aplicação é um principal de base de dados que permite a uma aplicação correr com as suas próprias permissões, semelhantes às do utilizador. Pode usar papéis de aplicação para permitir o acesso a dados específicos apenas aos utilizadores que se ligam através de uma aplicação específica. Ao contrário dos papéis de base de dados, os papéis de aplicação não contêm membros e são inativos por defeito. Os papéis de aplicação são ativados usando sp_setapprole, que requer palavra-passe. Como os papéis de aplicação são um principal ao nível da base de dados, só podem aceder a outras bases de dados através de permissões concedidas nessas bases de dados para convidados. Portanto, qualquer base de dados em que o convidado tenha sido desativado é inacessível para funções de aplicação noutras bases de dados.
No SQL Server, os papéis de aplicação não conseguem aceder a metadados ao nível do servidor porque não estão associados a um principal ao nível do servidor. Para desativar esta restrição e desta forma permitir que as funções de aplicação acedam a metadados ao nível do servidor, defina o flag global de traço 4616 usando -T4616 ou DBCC TRACEON (4616, -1). Se preferir não ativar este sinalizador de rastreio, pode usar um procedimento armazenado assinado por certificado para permitir que as funções de aplicação visualizem o estado do servidor. Para código de exemplo, veja este script de exemplo no GitHub.
Ligue-se a uma Vaga de Candidatura
Os seguintes passos compõem o processo pelo qual um papel de aplicação muda de contexto de segurança:
Um utilizador executa uma aplicação cliente.
A aplicação cliente liga-se a uma instância do SQL Server como utilizador.
A aplicação executa então o
sp_setapproleprocedimento armazenado com uma palavra-passe conhecida apenas pela aplicação.Se o nome e a palavra-passe da função de aplicação forem válidos, a função de aplicação é ativada.
Neste ponto, a ligação perde as permissões do utilizador e assume as permissões do papel de aplicação.
As permissões obtidas através da função da aplicação mantêm-se em vigor durante toda a duração da ligação.
Nas versões anteriores do SQL Server, a única forma de um utilizador recuperar o seu contexto de segurança original após iniciar uma função de aplicação é desconectar-se e reconectar-se ao SQL Server. A partir do SQL Server 2005 (9.x), sp_setapprole existe uma opção que cria um cookie. O cookie contém informação de contexto antes de o papel da aplicação ser ativado. O sp_unsetapprole procedimento armazenado utiliza então o cookie para reverter a sessão ao seu contexto original. Para informações sobre esta nova opção e um exemplo, veja sp_setapprole (Transact-SQL) e sp_unsetapprole (Transaction-SQL).
Importante
A opção de encriptação ODBC não é suportada pelo SqlClient. Quando está a transmitir informação confidencial através de uma rede, utilize a Segurança da Camada de Transporte (TLS), anteriormente conhecida como Camada de Soquetes Seguros (SSL), ou IPsec para encriptar o canal. Se tiver de manter credenciais persistentes na aplicação cliente, encripte as credenciais usando as funções da API criptográfica. No SQL Server 2005 (9.x) e versões posteriores, a palavra-passe do parâmetro é armazenada como um hash unidirecional.
Tarefas relacionadas
| Tarefa | Tipo |
|---|---|
| Crie uma função de aplicação. | Criar uma Função de Aplicação e CRIAR FUNÇÃO DE APLICAÇÃO (Transact-SQL) |
| Altere uma função de aplicação. | ALTERAR O PAPEL DA APLICAÇÃO (Transact-SQL) |
| Eliminar uma função de aplicação. | DESCARTAR FUNÇÃO DE APLICATIVO (Transact-SQL) |
| A usar uma função de aplicação. | sp_setapprole (Transact-SQL) |