sp_setapprole (Transact-SQL)
Si applica a: SQL Server Azure SQL Database
Attiva le autorizzazioni associate a un ruolo applicazione nel database corrente.
Convenzioni della sintassi Transact-SQL
Sintassi
sp_setapprole [ @rolename = ] 'role',
[ @password = ] { encrypt N'password' }
|
'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
[ , [ @fCreateCookie = ] true | false ]
[ , [ @cookie = ] @cookie OUTPUT ]
Argomenti
[ @rolename = ] 'role'
Nome del ruolo applicazione definito nel database corrente. role è sysname, senza impostazione predefinita. role deve esistere nel database corrente.
[ @password = ] { encrypt N'password' }
Password necessaria per attivare il ruolo applicazione. password è sysname, senza impostazione predefinita. la password può essere offuscata usando la funzione di crittografia ODBC. Quando si usa la funzione encrypt , la password deve essere convertita in una stringa Unicode inserendo N prima della prima virgoletta.
L'opzione crittografa non è supportata nelle connessioni che usano SqlClient.
Importante
La funzione di crittografia ODBC non fornisce la crittografia. È consigliabile evitare l'utilizzo di questa funzione per proteggere le password trasmesse in rete. Se queste informazioni verranno trasmesse attraverso una rete, usare TLS o IPSec.
@encrypt = 'none'
Indica che non è richiesto l'utilizzo di tecniche di offuscamento. La password viene passata a SQL Server come testo normale. Questo è il valore predefinito.
@encrypt= 'odbc'
Specifica che ODBC offusca la password usando la funzione di crittografia ODBC prima di inviare la password al motore di database di SQL Server. È possibile specificare questa opzione solo se si utilizza un client ODBC o il provider OLE DB per SQL Server.
[ @fCreateCookie = ] true | false
Specifica se creare un cookie. true viene convertito in modo implicito in 1. false viene convertito in modo implicito in 0.
[ @cookie = ] @cookie OUTPUT
Specifica un parametro di output che contiene il cookie. Il cookie viene generato solo se il valore di @fCreateCookie è true. varbinary(8000)
Nota
Il parametro OUTPUT del cookie per sp_setapprole è attualmente documentato come varbinary(8000) che rappresenta la lunghezza massima corretta. Tuttavia, l'implementazione corrente restituisce varbinary(50) . Le applicazioni devono continuare a riservare varbinary(8000) in modo che l'applicazione continui a funzionare correttamente se la dimensione restituita dal cookie aumenta in una versione futura.
Valori del codice restituito
0 (esito positivo) o 1 (esito negativo)
Commenti
Dopo l'attivazione di un ruolo applicazione tramite sp_setapprole, il ruolo rimane attivo fino a quando l'utente non si disconnette dal server o non esegue sp_unsetapprole. sp_setapprole può essere eseguito solo da istruzioni Transact-SQL dirette, a livello ad hoc e non all'interno di un'altra stored procedure, trigger o all'interno di una transazione definita dall'utente.
Per una panoramica dei ruoli applicazione, vedere Ruoli applicazione.
Importante
Per proteggere la password del ruolo applicazione quando viene trasmessa attraverso una rete, è consigliabile usare sempre una connessione crittografata quando si abilita un ruolo applicazione. L'opzione Microsoft ODBC encrypt non è supportata da SqlClient. Se è necessario archiviare credenziali, crittografarle con le funzioni CryptoAPI. La password del parametro viene archiviata come hash unidirezionale. Per mantenere la compatibilità con le versioni precedenti di SQL Server, i criteri di complessità delle password non vengono applicati da sp_addapprole. Per applicare i criteri di complessità delle password, usare CREATE APPLICATION ROLE.
Autorizzazioni
Richiede l'appartenenza al pubblico e la conoscenza della password per il ruolo.
Esempi
R. Attivazione di un ruolo applicazione senza l'opzione encrypt
Nell'esempio seguente viene attivato il ruolo applicazione SalesAppRole
con la password non crittografata AsDeF00MbXX
, creato con autorizzazioni specifiche per l'applicazione utilizzata dall'utente corrente.
EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Attivazione di un ruolo applicazione con un cookie e ripristino del contesto originale
Nell'esempio seguente viene attivato il ruolo applicazione Sales11
con la password fdsd896#gfdbfdkjgh700mM
e viene creato un cookie. Nell'esempio viene restituito il nome dell'utente corrente e quindi viene ripristinato il contesto originale tramite l'esecuzione di sp_unsetapprole
.
DECLARE @cookie varbinary(8000);
EXEC sys.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 sys.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
Vedere anche
Stored procedure di sistema (Transact-SQL)
Stored procedure di sicurezza (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole (Transact-SQL)