sp_setapprole (Transact-SQL)
Ativa as permissões associadas a uma função de aplicativo no banco de dados atual.
Convenções de sintaxe Transact-SQL
Sintaxe
sp_setapprole [ @rolename = ] 'role',
[ @password = ] { encrypt N'password' }
|
'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
[ , [ @fCreateCookie = ] true | false ]
[ , [ @cookie = ] @cookie OUTPUT ]
Argumentos
[ @rolename = ] 'role'
É o nome da função de aplicativo definida no banco de dados atual. role é sysname, sem padrão. role deve existir no banco de dados atual.[ @password = ] { encrypt N'password' }
É a senha necessária para ativar a função de aplicativo. password é sysname, sem padrão. A password pode ser ofuscada usando a função de criptografia ODBC. Ao usar a função encrypt, a senha deve ser convertida em uma cadeia de caracteres Unicode colocando N antes da primeira aspa simples.A opção encrypt não tem suporte nas conexões que usam SqlClient.
Importante A função encrypt ODBC não fornece recursos de criptografia. Você não deve confiar nessa função para proteger senhas que são transmitidas pela rede. Se essas informações forem transmitidas por uma rede, use SSL ou IPSec.
@encrypt = 'none'
Especifica que nenhuma ofuscação deve ser usada. A senha é transmitida para o SQL Server como texto sem-formatação. Este é o modo padrão.@encrypt= 'odbc'
Especifica que o ODBC será ofuscado pela senha usando a função encrypt ODBC antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. Isso pode ser especificado somente quando um cliente ODBC ou o provedor OLE DB para SQL Server for utilizado.[ @fCreateCookie = ] true | false
Especifica se um cookie deve ser criado. true é implicitamente convertido em 1. false é implicitamente convertido em 0.[ @cookie = ] @cookie OUTPUT
Especifica um parâmetro de saída para conter o cookie. O cookie será gerado apenas se o valor de @fCreateCookie for true. varbinary(8000)Observação O parâmetro OUTPUT de cookie para sp_setapprole é documentado atualmente como varbinary(8000) que é o comprimento máximo correto. No entanto, a implementação atual retorna varbinary(50). Os aplicativos devem continuar a reservar varbinary(8000) para que o aplicativo continue a operar corretamente se o tamanho de retorno do cookie aumentar em uma versão futura.
Valores do código de retorno
0 (êxito) e 1 (falha)
Comentários
Após uma função de aplicativo ser ativada com sp_setapprole, ela permanece ativa até o usuário se desconectar do servidor ou executar sp_unsetapprole. sp_setapprole pode ser executado apenas por instruções Transact-SQL diretas. sp_setapprole não pode ser executado em outro procedimento armazenado ou em uma transação definida pelo usuário.
Para obter uma visão geral das funções de aplicativo, consulte Funções de aplicativo.
Observação sobre segurança |
---|
Para proteger a senha da função de aplicativo quando transmitida por uma rede, use sempre uma conexão criptografada ao habilitar uma função de aplicativo. O Microsoft ODBC tem a opção encrypt que não tem suporte em SqlClient. Se for necessário armazenar credenciais, criptografe-as com as funções da API de criptografia. O parâmetro password é armazenado como um hash unidirecional. Para preservar a compatibilidade com versões anteriores do SQL Server, a política de complexidade de senha não é imposta por sp_addapprole. Para impor a política de complexidade de senha, use CREATE APPLICATION ROLE. |
Permissões
Requer associação em public e conhecimento da senha da função.
Exemplos
A.Ativando uma função de aplicativo sem a opção de criptografia
O exemplo a seguir ativa uma função de aplicativo SalesAppRole, com a senha de texto sem-formatação AsDeF00MbXX, criada com permissões projetadas especificamente para o aplicativo usado pelo usuário atual.
EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B.Ativando uma função de aplicativo com um cookie e revertendo para o contexto original
O exemplo a seguir ativa a função de aplicativo Sales11 com a senha fdsd896#gfdbfdkjgh700mM e cria um cookie. O exemplo retorna o nome do usuário atual e, em seguida, reverte para o contexto original executando sp_unsetapprole.
DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
, @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user.
GO
Consulte também
Referência
Procedimentos armazenados do sistema (Transact-SQL)
Procedimentos armazenados de segurança (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)