sp_setapprole (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do Azure
Ativa as permissões associadas a uma função de aplicativo no banco de dados atual.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumentos
@rolename [ = ] N'nomedafunção'
O nome da função de aplicativo definida no banco de dados atual. @rolename é sysname, sem padrão. @rolename deve existir no banco de dados atual.
@password [ = ] { criptografar N'senha' }
A senha necessária para ativar a função do aplicativo. @password é sysname, sem padrão. @password pode ser ofuscado usando a função ODBCencrypt
. Quando você usa a encrypt
função, a senha deve ser convertida em uma cadeia de caracteres Unicode colocando N
antes das primeiras aspas.
A opção de criptografia não tem suporte em conexões que usam SqlClient.
Importante
A função ODBC encrypt
não fornece criptografia. Você não deve confiar nessa função para proteger senhas que são transmitidas por uma rede. Se essas informações forem transmitidas através de uma rede, use TLS ou IPSec.
@encrypt [ = ] { 'nenhum' | 'ODBC' }
Especifica o tipo de criptografia antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. @encrypt é varchar(10) e pode ser um desses valores.
Valor | Descrição |
---|---|
none (padrão) |
Especifica que nenhuma ofuscação é usada. A senha é passada para o SQL Server como texto sem formatação. |
odbc |
Especifica que o ODBC ofusca a senha usando a função ODBC encrypt antes de enviar a senha para o Mecanismo de Banco de Dados do SQL Server. Esse valor pode ser especificado somente quando você estiver usando um cliente ODBC ou o provedor OLE DB para SQL Server. |
@fCreateCookie [ = ] { 'verdadeiro' | 'falso' }
Especifica se um cookie deve ser criado. @fCreateCookie é bit, com um padrão de 0
.
true
é implicitamente convertido em 1
. false
é implicitamente convertido em 0
.
@cookie [ = ] SAÍDA do cookie
Especifica um parâmetro de saída para conter o cookie. @cookie é um parâmetro OUTPUT do tipo varbinary(8000). O cookie é gerado somente se o valor de @fCreateCookie for true
.
Observação
Embora a implementação atual retorne varbinary(50), os aplicativos devem reservar o varbinary(8000) documentado, 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
(sucesso) e 1
(fracasso).
Comentários
Depois que uma função de aplicativo é ativada usando sp_setapprole
o , a função permanece ativa até que o usuário se desconecte do servidor ou execute sp_unsetapprole
o . Você não pode usar sp_setapprole
dentro de outro procedimento armazenado, gatilho ou dentro de uma transação definida pelo usuário. Ele só pode ser executado como instruções Transact-SQL diretas.
Para obter uma visão geral das funções do aplicativo, consulte Funções do aplicativo.
Você deve sempre usar uma conexão criptografada ao habilitar uma função de aplicativo, para proteger a senha da função de aplicativo ao transmiti-la por uma rede.
A opção ODBC encrypt
da Microsoft não é suportada pelo 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, sp_addapprole
não impõe a diretiva de complexidade de senha. Para impor a diretiva de complexidade de senha, use CREATE APPLICATION ROLE.
Permissões
Requer associação em público e conhecimento da senha para a função.
Exemplos
R. Ativar uma função de aplicativo sem a opção criptografar
O exemplo a seguir ativa uma função de aplicativo chamada SalesAppRole
, com a senha AsDeF00MbXX
de texto sem formatação , criada com permissões projetadas para o aplicativo usado pelo usuário atual.
EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Ativar uma função de aplicativo com um cookie e, em seguida, reverter 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 sys.sp_setapprole 'Sales11',
'fdsd896#gfdbfdkjgh700mM',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
A função de aplicativo agora está ativa. USER_NAME()
Retorna o nome da função do aplicativo, Sales11
.
SELECT USER_NAME();
Desdefina a função do aplicativo.
EXEC sys.sp_unsetapprole @cookie;
GO
A função de aplicativo não está mais ativa. O contexto original é restaurado. USER_NAME()
Retorna o nome do usuário original.
SELECT USER_NAME();
GO
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de